## 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分钟,该周期可以由客户在配置文件中手动更改;