文章级别:Java初级 预备技能点:JSP内置对象, 监听器, 序列化
在程序开发的时候, request session appplication内置对象, 是用的比较多的. request和appliction比较简单, 一个代表一次请求的生命周期. 另一个代表应用程序的生命周期. 多说一点application是单态模式. 在任何地方打印application内置对象,得到的是同一个地址. 因此可以存储程序的公共变量,而非个人的公共变量(个人的公共变量 例如登录信息) 应该存储到Session中
今天我就详细讲解下中间那个兄弟. 因为在网上看到很多文章. 几乎毫无例外的说. 一个浏览器只有一个Session, 浏览器关闭Session就消失了.其实这种方法是不正确的.
要了解Session首先要知道一个概念:Session的销毁只有两种情况:第一:session调用了 session.invalidate()方法. 第二:前后两次请求超出了session指定的生命周期时间. 其中Session的生命周期时间可以在web.xml配置. 默认30分钟 在web.xml可以做如下配置:
<session-config>
<session-timeout>5</session-timeout>
</session-config>
如何来证明关闭浏览器的时候Session没有销毁呢? 我们可以创建一个SessionListener 此监听器专门用来监听Session的生命周期的.代码如下:
别忘记在web.xml中配置监听器, 配置完毕后 可以做个测试. 当浏览器关闭后此监听器的 sessionDestroyed方法并没有执行,而是在5分钟左右(个人电脑没有那么精确) 才会触发sessionDestroyed ,当然 再打开浏览器的时候 sessionCreated 会自动调用 关闭5分钟后sessionDestroyed 又会自动调用, 通过getID方法大家可以判断是否为同一个Session. 所以网上说明的关闭浏览器Session就消失.其实并不正确. 如果没有任何配置的情况下. 关闭浏览器30分钟后Session才会消失的.
我们可以利用这个概念做什么呢? 最典型的就是利用 SessionListener 的sessionDestroyed方法 来记录用户非正常退出的时间. 用户在访问某个网站的时候(目前的银行网站都有此功能) 显示了用户的最后登录时间. 此时间如何获取. 在这里分两种情况
如果用户按"退出" 按钮那就好说了. 跳转到action中.记录下用户退出的时间. 存储到持久层中
如果用户非正常退出, 在没有配置Session的情况下 默认会在30分钟后调用sessionDestroyed 那么我们同样可以在此获取用户退出的时间,在sessionDestroyed 调用业务逻辑完成我们想要实现的功能
有关Session第2个典型的应用就是Session中存储了用户的登录信息. 那么就可以访问用户权限的一些页面.
有关这个应用要注意一个问题: 存储到session中的 User对象一定要实现Serializable接口. Serializable的作用可以参考相关资料.正常情况下当我们做测试的时候关闭Tomcat 大家会在 Tomcat安装目录\work\Catalina\localhost\项目名 文件夹下面看到有一个 SESSIONS.ser 的文件.
此文件就是Session在Tomcat停止的时候 持久化到硬盘中的文件. 所有当前访问的用户Session都存储到此文件中. Tomcat启动成功后.SESSIONS.ser 又会反序列化到内存中,所以启动成功后此文件就消失了. 所以正常情况下 从启Tomcat用户是不需要登录的. 注意有个前提.就是存储到Session里面的user对象所对应的User类必须要序列化才可以
- 大小: 71.9 KB
- 大小: 47.1 KB
分享到:
相关推荐
通过设置session的生命周期来对session进行控制
NULL 博文链接:https://selvemen.iteye.com/blog/457225
c#.net配置Session的生命周期.rar
session的生命周期1
使用监听器跟踪session的生命周期和session的属性,文档详细介绍了
实现session会话控制的webservice服务,带有完整类库,希望能对大家有所帮助。
Invocation生命周期,Session生命周期,Server生命周期
Application,Session,Cookie,ViewState和Cache生命周期
一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID。 如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候...
Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线对象(Detached Objects)、 Java对象在JVM中的生命周期 理解Session的缓存 在Hibernate应用...
php5的session详解.pdf php5 的session详解其一:什么是session? php5 的session 详解之二:有两种方法传递 一个会话ID: php5 的session 详解之三:session安全 php5 的session 详解之四:……
session、viewstate jQuery SQL存储过程等一系列教学网站 相当实用哦
程序员必看_生命周期 是英文版的比较了session等的生命周期
对于hibernate中session周期的控制
Jsp内置对象session总结:详细介绍,Session机制,原理,生命周期h和Session的主要方法等。
本文较为详细的比较了php中session与cookie区别。分享给大家供大家参考。具体分析如下: 1、存放的位置 cookie保存在客户端,session保存在服务器端的文件系统/...session的生命周期是间隔的。从创建时开始计时,如果
jsp网站开发的课后习题,application,session,周期,转发和跳的区别,模拟淘宝等
session驱动类 session存入数据库 数据库存储session 用于session存入数据库
SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车