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