Java操做Session與Cookie

1,Java操做Session

Java操做Session很是簡單,步驟以下java

1.1,在servlet中經過request獲取session

 HttpSession session = request.getSession(true);瀏覽器

true表明當前沒有創建session則建立一個session,並返回這個session服務器

false表明當前沒有session,不作操做,返回nullcookie

默認爲truesession

1.2,利用session對象設置屬性或刪除屬性

添加dom

session.setAttribute("username", username);
session.setMaxInactiveInterval(60 * 30);  //默認爲秒工具

刪除spa

session.removeAttribute("username")3d

 

2,Java操做Cookie

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

相關文章
相關標籤/搜索