登录之记住用户与自动登录

       如题,大家在使用各种网站时,为了更好的用户体验,网站往往会提供这两种功能之一,以便下次登录方便。

           

       今天要讲述的是用java操作cookie来实现这两个功能,网络上也有很多的总结,这里只作为自己知识点的一个记录。其实这两个功能是大同小异的,其核心就是java怎么对cookie进行增加、修改、删除的操作。

       1. 创建cookie

1 Cookie cookie = new Cookie(name, value);// 两个参数全是字符串
2 response.addCookie(cookie);

       上面的cookie没有生命周期,随着浏览器关闭就消失,生存在浏览器内存里。

1 Cookie cookie = new Cookie(name, value);
2 cookie.setMaxAge(maxAge);// 这里需要一个整型值,单位为秒
3 cookie.setPath("/"); // 设置cookie路径,/代表根路径,该cookie对整个网站都有效,如果不设置路径,只有创建该cookie的路径及其子路径可以访问该cookie
4 response.addCookie(cookie);

       上面的cookie声明周期为maxAge。

       2. 读取cookie

1 Cookie[] cookies = request.getCookies();

       3. 修改cookie

       遍历cookie数组,根据name找到相应的cookie对象,修改之,然后放到response中.

       4. 删除cookie

1 Cookie cookie = new Cookie(name, null);
2 cookie.setMaxAge(0);// 设置为0,立即删除该cookie
3 response.addCookie(cookie);

       cookie的简单操作就介绍完了,我们来建立一个cookie的管理类,把相关的操作封装到一个对象中,这也是面向对象的思想吧,请看代码.

 1 /**
 2  * 管理cookie
 3  *
 4  */
 5 public class CookieManager {
 6 
 7     /** 保存cookie的map */
 8     private static Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
 9     /** 用户名key */
10     public static final String USERNAME = "username";
11     /** 密码key */
12     public static final String PASSWORD = "password";
13     /** 是否保存的key */
14     public static final String ISSAVE = "isSave";
15     
16     /**
17      * 设置cookie
18      * @param response
19      * @param name  cookie名字
20      * @param value cookie值
21      * @param maxAge cookie生命周期  以秒为单位
22      */
23     public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) {
24         Cookie cookie = new Cookie(name, value);
25         cookie.setMaxAge(maxAge);
26         response.addCookie(cookie);
27     }
28     
29     /**
30      * 根据名字获取cookie
31      * @param name cookie名字
32      * @return
33      */
34     public static Cookie getCookieByName(String name) {
35         if(cookieMap.containsKey(name)) {
36             Cookie cookie = (Cookie)cookieMap.get(name);
37             return cookie;
38         } else {
39             return null;
40         }   
41     }
42      
43     /**
44      * 将cookie封装到Map里面
45      * @param request
46      * @return
47      */
48     public static void readCookieMap(HttpServletRequest request) {  
49             cookieMap.clear();
50             Cookie[] cookies = request.getCookies();
51             if(cookies != null) {
52                 for(Cookie cookie : cookies) {
53                     cookieMap.put(cookie.getName(), cookie);
54                 }
55             }
56     }
57     
58 }

       那么接下来就简单了,每次登陆之前,先调用readCookieMap来初始化,如果是自动登录,直接拿这个用户名和密码去登录,如果是记住用户,那么把用户名和密码填写到输入框,当然我这里用户名和密码写入cookie时都没有加密。

posted @ 2012-09-05 23:42  高爽|Coder  阅读(424)  评论(0编辑  收藏  举报