JavaEE 中的 Cookie
@RestController
public class MyCookie {
@RequestMapping("/cookie/test/getCookie")
public String getCookie(HttpServletResponse response){
//创建Cookie对象
Cookie cookie1 = new Cookie("username", "tom");
Cookie cookie2 = new Cookie("password", "123456");
//将Cookie添加到响应中
response.addCookie(cookie1);
response.addCookie(cookie2);
return "success";
}
}
设置绑定路径
@RestController
public class MyCookie {
@RequestMapping("/cookie/rest/getCookie")
public String getCookie(HttpServletRequest request,HttpServletResponse response){
//创建Cookie对象
Cookie cookie1 = new Cookie("user", "jack");
Cookie cookie2 = new Cookie("pwd", "666999");
//设置Cookie对象绑定的路径
cookie1.setPath(request.getContextPath() + "/rest");
cookie2.setPath(request.getContextPath() + "/cookie");
//将Cookie添加到响应中
response.addCookie(cookie1);
response.addCookie(cookie2);
return "success";
}
}
所以,当path=/则表示此ip端口下的请求都会携带此Cookie
@RestController
public class MyCookie {
@RequestMapping("/cookie/rest/getCookie")
public String getCookie(HttpServletRequest request,HttpServletResponse response){
//创建Cookie对象
Cookie cookie1 = new Cookie("user", "jack");
Cookie cookie2 = new Cookie("pwd", "666999");
//设置Cookie对象绑定的路径
cookie1.setPath(request.getContextPath() + "/");
cookie2.setPath(request.getContextPath() + "/");
//设置Cookie的有效期
cookie1.setMaxAge(60 * 60); //有效时长为1小时
cookie2.setMaxAge(60 * 60 * 24 * 10); //有效时长为10天
//将Cookie添加到响应中
response.addCookie(cookie1);
response.addCookie(cookie2);
return "success";
}
}
@RestController
public class GetCookie {
@RequestMapping("/cookie/getCookie")
public String getCookie(HttpServletRequest request,HttpServletResponse response){
//从请求中获取Cookie
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
System.out.println(cookie.getName());
System.out.println(cookie.getValue());
}
return "success";
}
}
Session 对象的创建
1)通过 HttpServletRequest 的 getSession() 方法获取。该方法具有两个重载的方法。
2)何时使用 getSession(true),即 getSession(),何时使用 getSession(false)呢?
Session 域属性空间的操作
JavaEE 中的 Session
@RestController
public class MySession {
@RequestMapping("/session/setSession")
public String setSession(HttpServletRequest request,HttpServletResponse response){
//获取Session对象
HttpSession session = request.getSession();
//向Session域属性空间中存放属性
session.setAttribute("pets", "dog");
return "session存储属性pets=dog;默认过期时间:"+session.getMaxInactiveInterval()+"秒";
}
@RequestMapping("/session/getSession")
public String getSession(HttpServletRequest request,HttpServletResponse response){
//获取Session对象
HttpSession session = request.getSession(false);
if(session != null){
return "session对象获取属性pets为:"+session.getAttribute("pets");
}else {
return "session对象为空";
}
}
}
在服务器中系统会为每个会话(浏览器开关)维护一个 Session。不同的会话,对应不同的 Session。
写入 Session 列表
服务器生成并发送Cookie
注意: Cookie过期时间依然为默认浏览器关闭,Session过期时间这里为默认30分钟
客户端接收并发送 Cookie
从 Session 列表中查找
@RequestMapping("/session/invalidate")
public String invalidate(HttpServletRequest request,HttpServletResponse response){
//获取Session对象
HttpSession session = request.getSession();
//向Session域属性空间中存放属性
session.setAttribute("pets", "cat");
//使用session失效
session.invalidate();
System.out.println(session);
System.out.println(session.getAttribute("pets"));
return "success";
}
输出结果:
注意: Session失效只是不能set和get属性,而非Session对象为null