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)
![](https://i-blog.csdnimg.cn/blog_migrate/b53522ed1178dd4188d4f158a3084954.png)
,发送给客户端的浏览器,存在于cookie里面。以后客户端接着请求本应用中其他资源的时候,会自动在请求头上添加:Cookie:JSESSIONID=客户端第一次拿到的session ID,服务器端在接到请求时候,就会收到session ID,并根据ID在内存中找到之前创建的session对象,提供给请求使用.
jsp界面访问sessionid值
:
![](https://i-blog.csdnimg.cn/blog_migrate/fe5c6e79a179383676b766d519fa72e7.png)
这里是jsp取到的生成sessionid值
![](https://i-blog.csdnimg.cn/blog_migrate/4f8682387f8d904897d69020280fee02.png)
(tomcat的session的id值生成的机制是:一个随机数+时间+jvm的id值,jvm的id值会根据服务器的硬件信息计算得来,因此不同jvm的id值都是唯一的)
第一种:在web.xml配置 分钟为单位,最小设置为1分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
第二种:java代码
session.setMaxInactiveInterval(30*60); 以秒为单位
第三种:在server.xml配置![](https://i-blog.csdnimg.cn/blog_migrate/cb54ed998cf26077c36d10bf1b990e6f.png)
而且tomcat 5.0中的默认配置里面有这个默认标签(过了5.0找不到默认配置),过了5.0就要自己设置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
如果都设置了,有个优先级的问题,从高到低:java代码>在web.xml配置 >在server.xml配置,感觉优先级别跟着由近到远的范围走的一样,哈哈。
另外session存放在服务器端的内存中,不过session可以通过特殊的方式做持久化管理(memcache,redis)。
session超时:Tomcat一般默认时间为30分钟
可以设置session失效:session超时:Tomcat一般默认时间为30分钟
第一种:在web.xml配置 分钟为单位,最小设置为1分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
第二种:java代码
session.setMaxInactiveInterval(30*60); 以秒为单位
第三种:在server.xml配置
![](https://i-blog.csdnimg.cn/blog_migrate/cb54ed998cf26077c36d10bf1b990e6f.png)
而且tomcat 5.0中的默认配置里面有这个默认标签(过了5.0找不到默认配置),过了5.0就要自己设置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
如果都设置了,有个优先级的问题,从高到低:java代码>在web.xml配置 >在server.xml配置,感觉优先级别跟着由近到远的范围走的一样,哈哈。