Java操作Session與Cookie


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





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM