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

