该帖已经被评为新手帖
|
|||||
---|---|---|---|---|---|
作者 | 正文 | ||||
发表时间:2011-11-15
以前在树上看session的生命周期,都知道session的生命周期是在客户第一次访问(即打开浏览器输入地址,成功访问)的时候创建。 同时HttpSessionListener接口(实现的监听器)的sessionCreated方法会被调用。 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
但是我一直没有想过session是否一定会被创建,这个创建具体是在什么时候,今天写了一段代码。想做个异想天开的实验,就是用户请求的时候再后台创建GUI界面可视化管理前台用户。这时候想到的是用session创建事件管理,但是没想到则么测试也不行,最后查询API发现,session并不是一定被创建。
getSession有这两个方法。
第一个就是默认在没有session的时候新建(new)一个session,第二个方法就是指定布尔型(boolean)确定是否创建session。第二个方法要注意的是。
<!-- Generated by javadoc (build 1.6.0_07) on Wed Jun 24 15:16:29 PDT 2009 --> <noscript></noscript>HttpSession getSession (boolean create) HttpSession
associated with this request
or, if there is no current session and create
is true, returns a
new session.
If To make sure the session is properly maintained, you must call this method before the response is committed. If the container is using cookies to maintain session integrity and is asked to create a new session when the response is committed, an IllegalStateException is thrown. create
- true
to create a new session for this
request if necessary; false
to return null
if there's
no current session
HttpSession
associated with this request or
null
if create
is false
and the request
has no valid session
getSession()
HttpSession对象,则此方法会返回null
getSession()
的时候才能创建session否则默认是不存在session的。声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||
返回顶楼 | |||||
发表时间:2011-11-16
等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? |
|||||
返回顶楼 | |||||
发表时间:2011-11-16
最后修改:2011-11-16
浏览器第一次访问一个网站的时候,服务器就分配了一个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-16
goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes |
|||||
返回顶楼 | |||||
发表时间:2011-11-16
Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 浏览器关闭并不会将session关闭,而是浏览器丢失了sessionID,这是一种存放在内存中的临时cookie 而服务器并不关心用户浏览器是否关闭,只是查看每次请求中是否包含sessionID, 如果长期不适用,那么session过期,销毁! |
|||||
返回顶楼 | |||||
发表时间:2011-11-16
Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 这是常识吧 少年 |
|||||
返回顶楼 | |||||
发表时间:2011-11-16
Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes yes个JB毛啊,你还yes,你看看楼下是怎么说得! |
|||||
返回顶楼 | |||||
发表时间:2011-11-16
northc 写道 Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 这是常识吧 少年 你可以拿无知当常识! |
|||||
返回顶楼 | |||||
发表时间:2011-11-16
那本书上写第一次访问就会创建,我看的怎么没有
|
|||||
返回顶楼 | |||||
发表时间:2011-11-16
northc 写道 Technoboy 写道 goldenfish1919 写道 等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。
are you sure? yes 这是常识吧 少年 session是服务端的,浏览器是客户端的,你的浏览器关闭和session没有关系的,session失效基本上是三种情况 1、超时 2、手动的注销 3、服务器重启 |
|||||
返回顶楼 | |||||