1、session实现原理
- session列表是一个Map,map的key是sessionid,map的value是session对象
- 用户发送第一次请求,服务器生成session对象,同时生成id,将id发送给浏览器
- 用户发送第二次请求,自动将浏览器内存中的id发送给服务器,服务器根据id找到session对象
- 关闭浏览器,内存小时,cookie消失,sessionid消失,会话等同于结束
⚠️cookie禁用了,session还能找到吗?
- cookie禁用:服务器正常发送cookie给浏览器,但是浏览器不要了,拒收了,并不是服务器不发了
[x] cookie禁用了,session机制仍然可以实现,需要使用URL重启机制
[x] 获取session对象
HttpSession session = request_._getSession();
- 作用:从WEB服务器当中获取session对象,如果session对象没有,则新建
[x] seesion不新建对象
[x] 一种销毁:是超时销毁(超时机制)
[x] 一种销毁:是手动销毁(点击退出按钮)
session_._invalidate();
4、超时机制
[x] 在web.xml中设置session超时时长
⚠️如果不配,默认是30分钟,设置路径在:Apache-tomcat/conf/web.xml中第638行
<!--session的超时时长是30分钟-->
<!--如果30分钟过去了,session对象仍然没有被访问,session会被销毁-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
5、注意
- JSP会在程序启动时,创建session对象,使得session对象不为空,可以在inedx.jsp中设置,使得JSP不创建seesion,但是不影响seesion的功能