Cookie和Session简介

一、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"); 
	//1. 默认实现和 HttpSession 相同. 
	//设置 cookie 存活时间,单位秒 
	c.setMaxAge(10); 
	//2. 默认存储路径为 path=/ 
	//设置哪个目录下资源能访问 
	c.setPath("/"); 
	//3. 域名和当前项目的域名相同,才会携带该Cookie
	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 运行原理

  1. 当客户端浏览器访问服务器时,服务器接收请求后会判断请求中是 否在 Cookie 包含 JSESSIONID.
  2. 如 果 包 含 JSESSIONID 把 对 应 值 取 出 , 做 为 Key 从 全 局 Map<String,Session>对象往出取 Session 对象.
  3. 如果有对应的 key,把 Session 对象取出.根据自己业务添加操作.
  4. 如果请求对象中 JSESSIONID 在全局 Map<String,Session>没有或请 求对象中 Cookie 没有 JSESSSIONID ,会执行新建 Session 步骤
  5. Tomcat 会新建(new)一个 Sesssion 对象,同时产生一个 UUID,把 UUID 做为 Map 的 key,新建的 Session 对象做为 Value,还会把 UUID 放入到 Cookie 做为 value,value 对应的 Key 是 JSESSIONID
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页