본문 바로가기

Framework/__Spring

spring2.5 session webutil 적용하기 2


  1. package com.yahaitt.web;       
  2. import java.util.Set;       
  3. import javax.servlet.http.HttpServletRequest;       
  4. import org.springframework.web.util.WebUtils;       
  5. import com.yahaitt.model.User;       
  6. import com.yahaitt.service.UserManager;       
  7. import com.yahaitt.util.CookieUtil;       
  8. public class SessionUser {       
  9.     private String id;       
  10.     private String name;       
  11.     private String loginname;       
  12.     private Integer status;       
  13.     private Set resPermissions;       
  14.     private String tel;       
  15.     private String addr;       
  16.     private Integer zip;       
  17. //  public SessionUser(String id, String name) {       
  18. //      this.id = id;       
  19. //      this.name = name;       
  20. //  }       
  21. //  public SessionUser(String id,String loginname,Integer status)       
  22. //  {       
  23. //      this.id = id;       
  24. //      this.loginname = loginname;       
  25. //      this.status = status;       
  26. //  }       
  27.     public SessionUser(Integer id,String loginname,String name,String tel, String addr,Integer zip,Integer status)       
  28.     {       
  29.         this.id = id.toString();       
  30.         this.loginname = loginname;       
  31.         this.name = name;       
  32.         this.tel = tel;       
  33.         this.addr = addr;       
  34.         this.zip = zip;       
  35.         this.status = status;       
  36.     }       
  37.     public String getName() {       
  38.         return name;       
  39.     }       
  40.     public void setName(String name) {       
  41.         this.name = name;       
  42.     }       
  43.     public String getTel() {       
  44.         return tel;       
  45.     }       
  46.     public void setTel(String tel) {       
  47.         this.tel = tel;       
  48.     }       
  49.     public String getAddr() {       
  50.         return addr;       
  51.     }       
  52.     public void setAddr(String addr) {       
  53.         this.addr = addr;       
  54.     }       
  55.     public Integer getZip() {       
  56.         return zip;       
  57.     }       
  58.     public void setZip(Integer zip) {       
  59.         this.zip = zip;       
  60.     }       
  61.       
  62.     public String getLoginname() {       
  63.         return loginname;       
  64.     }       
  65.     public void setLoginname(String loginname) {       
  66.         this.loginname = loginname;       
  67.     }       
  68.     public Integer getStatus() {       
  69.         return status;       
  70.     }       
  71.     public void setStatus(Integer status) {       
  72.         this.status = status;       
  73.     }       
  74.     public String getId() {       
  75.         return id;       
  76.     }       
  77.     public void setId(String id) {       
  78.         this.id = id;       
  79.     }       
  80.     /**     
  81.      * 从request获取SessionUser     
  82.      */      
  83.     public static SessionUser getFromRequest(HttpServletRequest request,UserManager userManager) {       
  84.         SessionUser su = (SessionUser)WebUtils.getSessionAttribute(request, "sessionUser");       
  85.         if(su == null){       
  86.             CookieUtil.getCookie(request,userManager);       
  87.             su = (SessionUser)WebUtils.getSessionAttribute(request, "sessionUser");       
  88.         }       
  89.         return su;       
  90.     }       
  91.     public static SessionUser getFromRequest(HttpServletRequest request) {       
  92.         SessionUser su = (SessionUser)WebUtils.getSessionAttribute(request, "sessionUser");       
  93.       
  94.         return su;       
  95.     }       
  96.     /**     
  97.      * 从request获取SessionUser的id     
  98.      */      
  99.     public static String getId(HttpServletRequest request) {       
  100.         SessionUser user = getFromRequest(request);       
  101.         if (user != null) {       
  102.             return user.getId();       
  103.         }        
  104.         return null;       
  105.     }       
  106.     /**     
  107.      * 从request获取SessionUser的name     
  108.      */      
  109.     public static String getName(HttpServletRequest request) {       
  110.         SessionUser user = getFromRequest(request);       
  111.         if (user != null) {       
  112.             return user.getName();       
  113.         }        
  114.         return null;       
  115.     }       
  116.     /**     
  117.      * 从request获取SessionUser的loginname     
  118.      */      
  119.     public static String getLoginname(HttpServletRequest request,UserManager userManager) {       
  120.         SessionUser user = getFromRequest(request,userManager);       
  121.         if (user != null) {       
  122.             return user.getLoginname();       
  123.         }       
  124.         return null;       
  125.     }       
  126.     public static String getLoginname(HttpServletRequest request) {       
  127.         SessionUser user = getFromRequest(request);       
  128.         if (user != null) {       
  129.             return user.getLoginname();       
  130.         }          
  131.         return null;       
  132.     }       
  133.     public Set getPermissionStrings()       
  134.     {       
  135.         return resPermissions;       
  136.     }       
  137.     /**     
  138.      * 把用户信息放到session里     
  139.      * @param request     
  140.      * @param user     
  141.      */      
  142.     public static void saveSession(HttpServletRequest request,User user)       
  143.     {       
  144.         String usertel = user.getTel();       
  145.         String usermobile = user.getMobile();       
  146.         String usertels = "";       
  147.         if(null!=usertel && !"".equals(usertel) && null!=usermobile && !"".equals(usermobile))       
  148.         {       
  149.             usertels = usertel + "/" + usermobile;       
  150.         }       
  151.         else if(null!=usertel && !"".equals(usertel))       
  152.         {       
  153.             usertels = usertel;       
  154.         }       
  155.         else if(null!=usermobile && !"".equals(usermobile))       
  156.         {       
  157.             usertels = usermobile;       
  158.         }       
  159.         SessionUser su = new SessionUser(user.getId(), user.getLoginname(),user.getName(),usertels,user.getAddr(),user.getZip(),user.getStatus());       
  160.         WebUtils.setSessionAttribute(request, "sessionUser", su);       
  161.     }       
  162.            
  163.     public static void removeSession(HttpServletRequest request)       
  164.     {       
  165.         WebUtils.setSessionAttribute(request, "sessionUser"null);       
  166.     }            
  167. }   










    --------------------------
  168. package com.yahaitt.util;       
  169.       
  170. import java.net.URLDecoder;       
  171. import java.net.URLEncoder;       
  172. import java.util.ArrayList;       
  173. import java.util.List;       
  174.       
  175. import javax.servlet.http.Cookie;       
  176. import javax.servlet.http.HttpServletRequest;       
  177. import javax.servlet.http.HttpServletResponse;        
  178. import org.springframework.web.util.WebUtils;       
  179. import com.yahaitt.model.Cusorderitem;       
  180. import com.yahaitt.model.User;       
  181. import com.yahaitt.service.ProductManager;       
  182. import com.yahaitt.service.UserManager;       
  183. import com.yahaitt.web.SessionUser;       
  184.   
  185. public class CookieUtil {       
  186.            
  187.     /**     
  188.      * 在客户端保存Cookie     
  189.      * @param response     
  190.      * @param user     
  191.      */      
  192.     public static void saveCookie(HttpServletResponse response,User user)       
  193.     {       
  194.         Cookie userCookie = new Cookie(ContextConfigure.USER_COOKIE_NAME,URLEncoder.encode(user.getLoginname()));       
  195.         userCookie.setMaxAge( 60 * 60 * 24 * 30 );       
  196.     //    userCookie.setDomain( ContextConfigure.WSAY_DOMAIN );       
  197.         userCookie.setPath("/");       
  198.         Cookie passwordCookie = new Cookie(ContextConfigure.USER_COOKIE_PASSWORD,URLEncoder.encode(user.getPassword()) );       
  199.         passwordCookie.setMaxAge( 60 * 60 * 24 * 30 );       
  200.      //   passwordCookie.setDomain( ContextConfigure.WSAY_DOMAIN );       
  201.         passwordCookie.setPath("/");       
  202.         response.addCookie( userCookie );//userCookie中包含中文时怎么会出错误呢?       
  203.         response.addCookie( passwordCookie );       
  204.     }       
  205.     /**     
  206.      * 从客户端移除Cookie     
  207.      * @param response     
  208.      */      
  209.     public  static void removeCookie(HttpServletResponse response)       
  210.     {       
  211.         Cookie userCookie = new Cookie(ContextConfigure.USER_COOKIE_NAME,"");       
  212.         //userCookie.setDomain( ContextConfigure.WSAY_DOMAIN );       
  213.         userCookie.setMaxAge(0);       
  214.         userCookie.setPath("/");       
  215.         Cookie passwordCookie = new Cookie(ContextConfigure.USER_COOKIE_PASSWORD,"" );       
  216.         passwordCookie.setMaxAge( 0 );       
  217.      //   passwordCookie.setDomain( ContextConfigure.WSAY_DOMAIN );       
  218.         passwordCookie.setPath("/");       
  219.         response.addCookie( userCookie );       
  220.         response.addCookie( passwordCookie );       
  221.     }       
  222.            
  223.     /**     
  224.      * 从客户端获得Cookie     
  225.      * @param request     
  226.      * @param userManager     
  227.      */      
  228.     public  static void getCookie(HttpServletRequest request,UserManager userManager)       
  229.     {       
  230.          Cookie name = WebUtils.getCookie(request, ContextConfigure.USER_COOKIE_NAME);       
  231.          Cookie password = WebUtils.getCookie(request, ContextConfigure.USER_COOKIE_PASSWORD);       
  232.          String now = SecurityBase.getNow();       
  233.          if (name != null && password != null) {       
  234.              User user = userManager.checkPassword(URLDecoder.decode(name.getValue()), URLDecoder.decode(password.getValue()));       
  235.             if(user != null)       
  236.             {       
  237.                 SessionUser.saveSession(request,user);       
  238.                        
  239.                 //user.setLastLogin(user.getCurrentLogin());       
  240.                 user.setLastlogin(now);       
  241.                 user.setCurrentlogin(now);       
  242.                 userManager.update(user);       
  243.             }       
  244.             else      
  245.             {       
  246.                 SessionUser.removeSession(request);       
  247.             }       
  248.          }       
  249.     }       
  250.            
  251.     /**     
  252.      * 在购物车中添加商品,购物车存于Cookie     
  253.      * @param request     
  254.      * @param response     
  255.      * @param cusorderitem     
  256.      */      
  257.     public static void saveToCar(HttpServletRequest request,HttpServletResponse response,Cusorderitem cusorderitem)       
  258.     {       
  259.         //cookie与用户登录名关联,可以根据不同的用户设置不同的购物车(方便不同用户在同台机器使用时的情况)       
  260.         String loginname = SessionUser.getLoginname(request);       
  261.         if(null==loginname || "".equals(loginname.trim()) )       
  262.         {       
  263.             return;       
  264.         }       
  265.         String[] products = null;       
  266.         String[] counts = null;       
  267.         String[] colors = null;       
  268.         String[] chics = null;       
  269.         Cookie[] aa = request.getCookies();       
  270.         if(null==aa)       
  271.         {       
  272.             aa = new Cookie[0];       
  273.         }       
  274.         for(int i=0;i    
  275.         {       
  276.             Cookie cook = aa[i];       
  277.             if((loginname+"_products").equals(cook.getName()))       
  278.             {       
  279.                 products = cook.getValue().split("\\|");       
  280.             }       
  281.             else if((loginname+"_counts").equals(cook.getName()))       
  282.             {       
  283.                 counts = cook.getValue().split("\\|");       
  284.             }       
  285.             else if((loginname+"_colors").equals(cook.getName()))       
  286.             {       
  287.                 colors = cook.getValue().split("\\|");       
  288.             }       
  289.             else if((loginname+"_chics").equals(cook.getName()))       
  290.             {       
  291.                 chics = cook.getValue().split("\\|");       
  292.             }                  
  293.         }       
  294.         if(null!=cusorderitem)       
  295.         {       
  296.             String product = cusorderitem.getProduct().getId().toString();       
  297.             //对color元素进行编码       
  298.             String color = URLEncoder.encode(cusorderitem.getColor());       
  299.             String chic = cusorderitem.getChic();       
  300.             int count = cusorderitem.getQuantity().intValue();       
  301.             String countstr = new Integer(count).toString();       
  302.             boolean flag = true;       
  303.                    
  304.             if(null!=products)       
  305.             {       
  306.                 for(int i=0;i    
  307.                 {       
  308.                     if(product.equals(products[i]) && color.equals(colors[i]) && chic.equals(chics[i]))