该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-17
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用 <% @page session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。
由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。 |
|
返回顶楼 | |
发表时间:2011-11-17
huangfoxAgain 写道 Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 浏览器关闭并不会将session关闭,而是浏览器丢失了sessionID,这是一种存放在内存中的临时cookie 而服务器并不关心用户浏览器是否关闭,只是查看每次请求中是否包含sessionID, 如果长期不适用,那么session过期,销毁! +1 |
|
返回顶楼 | |
发表时间:2011-11-17
Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 错了吧 |
|
返回顶楼 | |
发表时间:2011-11-17
leavesforeye 写道 bitray 写道 hu437 写道 northc 写道 Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 这是常识吧 少年 session是服务端的,浏览器是客户端的,你的浏览器关闭和session没有关系的,session失效基本上是三种情况 1、超时 2、手动的注销 3、服务器重启 还有回答常识的呢啊?你这么多年也白学了。老实点换行吧 《轻量级javaEE企业应用实战》书中九十五页说道:“session范围内的属性可以在多页页面跳转之间共享,一旦关闭浏览器,即session结束,session范围内的属性将全部丢失。” 浏览器关闭session确实是会失效的。 课本的东西也不一定正确吧,你做过实验么?浏览器关闭,session不一定销毁 |
|
返回顶楼 | |
发表时间:2011-11-17
buaawhl 写道 浏览器第一次访问一个网站的时候,服务器就分配了一个Session ID给浏览器。这时候,Session已经通过Session ID建立了。分配了Session ID不等于分配了存储空间。
servlet中的getSession() API是用来获取服务端Session存储空间的。这个存储空间(一般用来存放用户名和角色等认证信息)只有在用到的时候才会分配。 服务器重启,Session肯定会被销毁的。不过,Session销毁的情况一般都是因为Time Out(过期)。用户长期不反应,Session ID就会过期。对应的Session存储空间也会释放。 关于HTTP Session和cookie,我写了一些相关篇章。希望能有帮助。 《编程机制探析》第二十三章 HTTP http://www.iteye.com/topic/1116710 正解 |
|
返回顶楼 | |
发表时间:2011-11-17
不要信口开河,实践出真知。动手实验一番就知道是不是已关闭浏览器就会调用 sessionDestroyed方法了。 回答常识的哥们估计是“常识惯了”
|
|
返回顶楼 | |
发表时间:2011-11-17
大家可以测试下,浏览器关闭基本上 服务器会关闭session,这个可能是因为浏览器发起了drop session请求
|
|
返回顶楼 | |
发表时间:2011-11-17
超基础问题,不想说了
|
|
返回顶楼 | |
发表时间:2011-11-18
huangfoxAgain 写道 Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 浏览器关闭并不会将session关闭,而是浏览器丢失了sessionID,这是一种存放在内存中的临时cookie 而服务器并不关心用户浏览器是否关闭,只是查看每次请求中是否包含sessionID, 如果长期不适用,那么session过期,销毁! 正解! |
|
返回顶楼 | |