Session的理解与深入

    xiaoxiao2021-03-25  125

    session测试: 客户端(jsp)访问服务端生成sessionid结果的测试 火狐浏览器打开第一个页面访问服务器 798873A1A595F4D6BF29D4E71BCECBB0 火狐浏览器打开第二个页面访问服务器 798873A1A595F4D6BF29D4E71BCECBB0   qq浏览器打开第一个页面访问服务器 9329B22DF63BA6339713410D19210299 qq浏览器打开第二个页面访问服务器 9329B22DF63BA6339713410D19210299 通过ServletActionContext.getRequest().getSession().invalidate(); 通过invalidate可以清除session或者是session超时(关掉浏览器并不会关闭session),下次访问就会生成一个与上一次不同的sessionid。 session 总结: 同一个浏览器打开多个界面访问同一个服务器地址还是同一个session 不同浏览器访问同一个服务器地址,不同浏览器之间的不是同一个session   当JSP页面没有显式(<% @page session="false"%> )禁止session的时候,在打开浏览器第一次请求该jsp的时候,服务器会自动为其创建一个session,并赋予其一个sessionid(tomcat机制生成的sessionid叫做JSESSIONID) ,发送给客户端的浏览器,存在于cookie里面。以后客户端接着请求本应用中其他资源的时候,会自动在请求头上添加:Cookie:JSESSIONID=客户端第一次拿到的session ID,服务器端在接到请求时候,就会收到session ID,并根据ID在内存中找到之前创建的session对象,提供给请求使用. jsp界面访问sessionid值 : 这里是jsp取到的生成sessionid值 (tomcat的session的id值生成的机制是:一个随机数+时间+jvm的id值,jvm的id值会根据服务器的硬件信息计算得来,因此不同jvm的id值都是唯一的) 另外session存放在服务器端的内存中,不过session可以通过特殊的方式做持久化管理(memcache,redis)。 session超时:Tomcat一般默认时间为30分钟 可以设置session失效: 第一种:在web.xml配置 分钟为单位,最小设置为1分钟     <session-config>         <session-timeout>30</session-timeout>     </session-config> 第二种:java代码 session.setMaxInactiveInterval(30*60); 以秒为单位 第三种:在server.xml配置 而且tomcat 5.0中的默认配置里面有这个默认标签(过了5.0找不到默认配置),过了5.0就要自己设置    <session-config>         <session-timeout>30</session-timeout>     </session-config> 如果都设置了,有个优先级的问题,从高到低:java代码>在web.xml配置 >在server.xml配置,感觉优先级别跟着由近到远的范围走的一样,哈哈。
    转载请注明原文地址: https://ju.6miu.com/read-7631.html

    最新回复(0)