轉自http://www.cnblogs.com/guanghe/p/6011065.html
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
11 public class CookieUtil
12 {
13
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
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值)。