目录
一、会话与请求
打开浏览器到关闭该浏览器称为一次会话,对应的java对象:session;请求指的是用户在浏览器上点击了一下,页面停下来称为一次请求,对应的java对象:request
一次请求对应一个request对象;一个会话对应一个session对象;一个会话可以包含多个请求
一次会话:从session创建到session销毁
二、作用
Session对应的类名为javax.servlet.http.Httpsession
Session机制属于B/S结构的一部分;不同语言对这一机制都有实现
session对象最主要的作用是保存会话信息(如保存用户登陆成功的状态,因为http协议是一种无状态协议) 无状态协议:网页加载完成后,为了减小服务器压力,服务端和页面段之间的连接断开
对于一个账户,session对象的存在使得用户登录之后能够继续进行其它操作
三、代码
HttpSession session = request.getSession();
只要不关闭浏览器,不论几次请求,对应的session对象都是同一个
四、实现原理
1、原理
JSESSIONID=XXXXX 是以Cookie形式保存在浏览器中,浏览器关闭,cookie就没有了
session列表是一个Map,map的key是sessionid,map的value是session对象
用户第一次请求,服务器生成session对象,同时生成id,将id发送给浏览器
用户第二次请求,自动将浏览器内存中的id发送给服务器,服务器根据id查找session对象
关闭浏览器,内存消失,cookie消失,sessionid消失,会话等于自动结束
2、配置session销毁
<session-config>
<session-timeout>销毁时间</session-timeout>
</session-config>
代表设置了session对象在最后一次请求后的某段时间后自动结束
3、cookie禁用
服务器正常发送cookie给浏览器,但浏览器拒收,这会导致每次请求都创建新的session对象,而之前创建的session对象还仍未销毁。
cookie禁用情况下,使用URL重写机制继续实现session机制:
URL会增加开发者的成本