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