一、Cookie
1.1 解释:客户端存值技术
- 存储位置:客户端浏览器
- 作用:存值
- 存值类型: 只能存储字符串.
1.2 Cookie 运行原理
- 当浏览器输入 URL 访问服务器时会自动携带所有有效 Cookie(时间内,指定路径内,指定域名内),Tomcat 接收请求后会把 Cookie 放入到 HttpServletRequest 中,在代码中通过 request 对象获 取到 Cookie 的内容.(第一次访问时有效Cookie一般为null)
- 服务器可以产生 Cookie 内容,需要放入到响应对象中响应 给客户端浏览器.(要求跳转类型为重定向.),客户端浏览器接收响 应内容后会把 Cookie 内容存储到指定文件夹内容.
1.3 产生 Cookie
@RequestMapping("demo")
public String goIndex(HttpServletResponse response){
Cookie c = new Cookie("key", "value");
c.setMaxAge(10);
c.setPath("/");
c.setDomain(".baidu.com");
response.addCookie(c);
return "redirect:/index.jsp";
}
1.4 获取 Cookie
Cookie [] cs = request.getCookies();
if(cs!=null){
for(Cookie c :cs){
System.out.println("key:"+c.getName()+",value:"+c.getValue()");
}
}else{
System.out.println("没有 cookie");
}
二、HttpSession 运行原理
- 当客户端浏览器访问服务器时,服务器接收请求后会判断请求中是 否在 Cookie 包含 JSESSIONID.
- 如 果 包 含 JSESSIONID 把 对 应 值 取 出 , 做 为 Key 从 全 局 Map<String,Session>对象往出取 Session 对象.
- 如果有对应的 key,把 Session 对象取出.根据自己业务添加操作.
- 如果请求对象中 JSESSIONID 在全局 Map<String,Session>没有或请 求对象中 Cookie 没有 JSESSSIONID ,会执行新建 Session 步骤
- Tomcat 会新建(new)一个 Sesssion 对象,同时产生一个 UUID,把 UUID 做为 Map 的 key,新建的 Session 对象做为 Value,还会把 UUID 放入到 Cookie 做为 value,value 对应的 Key 是 JSESSIONID