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 )
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值)。