javaWeb中的会话
会话:
概述:javaweb中的会话指,访问一个站点,从第一次请求访问中访问了该网站的一系列的页面,直到访问结束,浏览器被关闭的过程都是一次回话。
作用:回话主用于追踪用户的行为。保存用户信息,识别用户身份。
常见回话的分类:
- cookie称为客户端会话。
- session 称为服务器会话。
cookie
概述:Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 [1] 。
特点:
- 1、cookie只能是小型文本,一般不超过4k.
- 2、是存放在客户端的。
- 3、存放信息,辨别用户身份的。
- 快速请空缓存信息的快捷键 shift + ctrl + delete
Cookie的使用
- Cookie的原理
- cookie的创建:
- 设置cookie的生命周期:单位默认为秒
- 设置cookie的保存位置,默认项目根路径:
- 设置cookie 的保存服务器:
- 修改cookie的值:
- 将cookie保存在响应头中,不能省略。
- 获取cookie中值的方法:
- 使用el表达式来获取cookie信息:
总结特点:
- 1、cookie只能保存文本类型的数据,注意tomcat服务器在cookie中保存中文8.0以前的会乱码。
- 2、Cookie是保存在客户端的,称为客户端回话。
- 3、cookie是有大小和数量限制的,单个cookie一般不操过4k,单个站点不超过100个,单个浏览器一般不操过300个。
- 4、cookie是不安全的,可以在本地获取,但通常存放cookie都需要加密。
- 5、cookie默认的生命周期是浏览器关闭cookie销毁,如果长时间保存必须设置生命周期,单位秒。
Session
概述: session是服务器会话,是依赖于cookie来识别用户身份的会话对象,将会话信息保存在服务器,通过JSESSIONID来识别用户身份的,JSESSIONID是通过cookie 来保存的。session是依赖cookie的。
原理图:
session实例:
- 1、当用户之后在主页面显示欢迎xxx登录
- 前端登录页面:
- 主页面:
改变session 在客户端默认的生命周期:
登录验证,即用户没有登录不允许访问主页面:
- 后台验证:
- 前端页面验证:
session 失效的情况总结:
- 1、浏览器关闭
- 2、超过session的生命周期
- 3、调用了invalidate(); 方法销毁了session
session 和cookie的区别和联系:
- 联系
- 1、cookie和session都属于会话对象
- 2、session 需要依赖于cookie识别用户身份,即追踪用户,session的JSESSIONID就是cookie保存本地。
- 区别:
- 1、cookie只能保存文本类型的数据,session 可以存放如何类型的数据
- 2、Cookie是保存在客户端的,称为客户端回话。session保存在服务器称为服务器会话。
- 3、cookie是有大小和数量限制的,session理论上是没有的。
- 4、cookie是不安全的,可以在本地获取,但通常存放cookie都需要加密。session相对更安全,存放数据不需要加密。
- 5、cookie默认的生命周期是浏览器关闭cookie销毁,如果长时间保存必须设置生命周期,单位秒。session默认是30分钟,当浏览器关闭,会话结束,实际服务器上的session还是存在的。
- 6、创建方式不同:cookie是直接创建cookie的对象,而session通过request来获取,是自动创建的。