论坛首页 入门技术论坛

原来servlet中的session不一定会被创建,我居然今天才知道。

浏览 12534 次
该帖已经被评为新手帖
作者 正文
   发表时间: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中关闭它。
0 请登录后投票
   发表时间:2011-11-17  
huangfoxAgain 写道
Technoboy 写道
goldenfish1919 写道
等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。

are you sure?




yes


浏览器关闭并不会将session关闭,而是浏览器丢失了sessionID,这是一种存放在内存中的临时cookie
而服务器并不关心用户浏览器是否关闭,只是查看每次请求中是否包含sessionID,
如果长期不适用,那么session过期,销毁!



+1
0 请登录后投票
   发表时间:2011-11-17  
Technoboy 写道
goldenfish1919 写道
等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。

are you sure?




yes



错了吧
0 请登录后投票
   发表时间: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不一定销毁
0 请登录后投票
   发表时间: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

  
正解
0 请登录后投票
   发表时间:2011-11-17  
不要信口开河,实践出真知。动手实验一番就知道是不是已关闭浏览器就会调用 sessionDestroyed方法了。 回答常识的哥们估计是“常识惯了”
0 请登录后投票
   发表时间:2011-11-17  
大家可以测试下,浏览器关闭基本上 服务器会关闭session,这个可能是因为浏览器发起了drop session请求
0 请登录后投票
   发表时间:2011-11-17  
超基础问题,不想说了
0 请登录后投票
   发表时间:2011-11-18  
huangfoxAgain 写道
Technoboy 写道
goldenfish1919 写道
等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。

are you sure?




yes


浏览器关闭并不会将session关闭,而是浏览器丢失了sessionID,这是一种存放在内存中的临时cookie
而服务器并不关心用户浏览器是否关闭,只是查看每次请求中是否包含sessionID,
如果长期不适用,那么session过期,销毁!


正解!
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics