Java操作Session与Cookie

1,Java操作Session

Java操作Session非常简单,步骤如下

1.1,在servlet中通过request获取session

 HttpSession session = request.getSession(true);

true代表当前没有建立session则创建一个session,并返回这个session

false代表当前没有session,不做操作,返回null

默认为true

1.2,利用session对象设置属性或删除属性

添加

session.setAttribute("username", username);
session.setMaxInactiveInterval(60 * 30);  //默认为秒

删除

session.removeAttribute("username")

 

2,Java操作Cookie

Java操作Cookie就有些需要注意的地方了

为此,建立一个操作cookie的工具类

CookieUtil.java

 1 package org.guangsoft.util;
 2 
 3 import javax.servlet.http.Cookie;
 4 import javax.servlet.http.HttpServletRequest;
 5 import javax.servlet.http.HttpServletResponse;
 6 
 7 /**
 8  *
 9  * @author guanghe
10  */
11 public class CookieUtil 
12 {
13     /**
14      * 设置cookie
15      *
16      * @param response
17      * @param key cookie名字
18      * @param value cookie值
19      * @param maxAge cookie生命周期 以秒为单位
20      * @param path cookie传递路径
21      * @param domain cookie域
22      */
23     public static void addCookie(HttpServletResponse response,
24             String key, String value, int maxAge, String path, String domain)
25     {
26         Cookie cookie = new Cookie(key, value);
27         cookie.setPath(path);
28         cookie.setDomain(domain);
29         if (maxAge > 0)
30         {
31             cookie.setMaxAge(maxAge);
32         }
33         response.addCookie(cookie);
34     }
35 
36     /**
37      * 根据名字获取cookie
38      *
39      * @param request
40      * @param name cookie名字
41      * @return
42      */
43     public static Cookie getCookieByName(HttpServletRequest request, String name)
44     {
45         Cookie cookies[] = request.getCookies();
46         if (cookies != null)
47         {
48             for (int i = 0; i < cookies.length; i++)
49             {
50                 Cookie cookie = cookies[i];
51                 if (name.equals(cookie.getName()))
52                 {
53                     return cookie;
54                 }
55             }
56         }
57         return null;
58     }
59 }

调用代码:

UserService.java

 1 public boolean setAutoLog(HttpServletRequest request,HttpServletResponse response, String username)
 2     {
 3         CookieUtil.addCookie(response, "username", username, 3600 * 24 * 3, "/manage/userServlet.action", "localhost");
 4         return true;
 5     }
 6     
 7     public boolean logout(HttpServletRequest request,HttpServletResponse response, String username)
 8     {
 9         CookieUtil.addCookie(response,"username","",0, "/manage/userServlet.action", "localhost");
10         return true;
11     }

 

严重提醒:删除Cookie时,只设置maxAge=0将不能够从浏览器中删除cookie,
* 因为一个Cookie应当属于一个path与domain,所以删除时,Cookie的这两个属性也必须设置。
* 误区:没有重视客户端发送到服务器端的cookie的path与domain值为空这个问题。
* 因为在登陆系统时,设置了Cookie的path与domain属性的值,就误认为每次客户端请求时,都会把Cookie的
* 这两个属性也提交到服务器端,但系统并没有把path与domain提交到服务器端(提交过来的只有Cookie的key,value值)。




posted @ 2016-10-29 15:55  光何  阅读(8760)  评论(0编辑  收藏  举报