cooking和session

## Cookie ##

# 基本概念;
	>> 用于保存一次会话中的记录,存放在客户端(浏览器);
		|-- "一次会话"
			|-- 当客户端打开一个界面时
			被称作一次会话,当浏览器未关闭时,其中所有的点击等
			操作都称作一次会话;

	>> Cookie由服务器发送到客户端;每次会话之后客户端会将cookie回发给服务器;
		|-- 保存方式;
			|-- 服务器端发送set-cookie响应头;
		|-- 获取方式;
			|-- 服务器端使用 reuest.getCookies();
		

# 使用方式;
	>> request.getCookies(); 
	>> response.addCookies( new cookie); set- cookie;
	>> 能被访问的URL的特点;
		|-- 浏览器会对数据进行判断;
			> 如果是domain+path开头则传送cookie
			> 否则不传送;

# 案例;
	>> 显示上次用户登录时间;
		|-- 具体步骤;
			> 保存用户访问网站的第一次时间;
			> 创建一个Cookie对象;--- Cookie cookie= new Cookie("showTime",new Date().getTime()+"");
			> 设置cookie路径;--- cookie.setPath(uri);
				|-- 路径的问题;
					|-- domain:localhost;
					|-- cookie的数据储存格式;
						|-- name	value		domain		path
						    showTime    123234124	localhost	/day09...

			> 设置cookie存活时间;--- cookie.setMaxAge(Integer.MAX_VALUE); //设置cookie的存活时间;
								// 单位为秒;0代表删除该cookie;负数则不储存;
			> 发送;response.addCookie(cookie);
			> 获取cookie中的信息;--- Cookie[] cookies= request.getCookies();
			> 遍历;


	>> 保存用户名;
		|-- 具体步骤;
			> 用write(); 语句写好登录框;
			> 定义user类,在类中声明三个属性:用户名/密码/remember
				|-- remember属性定义成字符串;
				在登录界面中将其设定为变量,如果被勾选该值会记录下"true";

			> 使用BeanUtils封装从登录框中获取的用户参数;
			> 验证用户名和密码是否正确;
				|-- 然后验证记住用户名复选框是否被勾选;
					|-- 如果勾选;
						> 创建Cookie对象;
						> 设置Cookie生命周期;
						> 设置路径和应用名;
						> 将Cookie发送给客户端;

				|-- 勾选后提交之后跳转到登录界面并展示已经记录下用户名的界面;
			
			> 在登录之前,从Cookie中取出Cookie并作比较,如果存在就从中读取用户登录信息,并修改复选框的值;


	>> 保存用户浏览商品信息;
		|-- 具体步骤;
			> 创建Book类,用于描述和保存商品基本信息;
			> 创建BookDB类,用于模拟数据库,内置一个map集合存放商品信息并编号;
			> 创建商品列表,点击查看详情之后,将信息保存到Cookie当中;
				|-- 从map集合中取出每一本书;
					|-- 通过遍历集合拿到映射关系;
					|-- 添加超链接,通过链接拿到该商品的详细信息;
						|-- 该链接跳转到商品存放Cookie的界面;
			> 将浏览过的信息存放到Cookie当中;
				|-- 设计一个队列模式来当作浏览记录的存放ID;
				|-- 先遍历所有Cookie;
				|-- 获取其中一个Cookie,和当前
				|-- 通过getName()获取cookie名字;
					> 如果该名字为ids,则表明该商品在Cookie存放界面被第一次预览;

			> 然后获取到cookie的value并存入字符串,该字符串表现形式为 3-2-1 ;
			> 通过【-】将其分割,获取到其中单个的di值;
			> 按照该顺序排列浏览记录;

			> 创建存放Cookie界面;
				|-- 获取参数id
				|-- 根据id获取到相应的商品;
				|-- 显示明细,通过打印商品的toString()方法;
				|-- 在Cookie中添加一个ids,用于标识该商品被预览及预览顺序;
				|-- 设置相应特性;
				|-- 将Cookie发往客户端;
				|-- 设置返回商品列表界面的链接;

## Session ##

# 基本概念;
	>> 是由服务器创建,用于保存用户浏览数据的一个对象;
	>> 和Cookie的区别;
		|-- Cookie存放在客户端;Session存放在服务器端;
		|-- 服务器只向客户端发送一个独立ID,该ID表明了客户端本次会话对应的的SessionID;
		|-- 客户端第二次请求时会带上之前的ID,服务器根据对比该ID即可获取对应Seesion中存放的数据;

# 生命周期;
	>> tomecat为其提供的生命周期为30分钟,该周期可以由客户在配置文件中手动更改;
原文地址:https://www.cnblogs.com/bwcx1375/p/7087612.html