Java操做Session很是簡單,步驟以下java
HttpSession session = request.getSession(true);瀏覽器
true表明當前沒有創建session則建立一個session,並返回這個session服務器
false表明當前沒有session,不作操做,返回nullcookie
默認爲truesession
添加dom
session.setAttribute("username", username);
session.setMaxInactiveInterval(60 * 30); //默認爲秒工具
刪除spa
session.removeAttribute("username")3d
Java操做Cookie就有些須要注意的地方了code
爲此,創建一個操做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值)。