JavaWeb

JavaWeb-022-HttpSession的生命周期

2017-12-11  本文已影响3人  53b3f4658edc

Session 的创建和销毁

1). 默认情况下, 第一次访问一个 WEB 应用的一个 JSP 页面时, 该页面都必须有一个和这个请求相关联的 Session 对象.
因为 page 指定的 session 属性默认为 true
2). 若把 session 属性改为 false, JSP 页面不会要求一定有一个 Session 对象和当前的 JSP 页面相关联,所以若第一次访问当前 WEB 应用的 JSP 页面时, 就不会创建一个 Session 对象.
3). 创建一个 Session 对象: 若 page 指定的 session 设置为 false ,则 在 Servlet 中可以通过以下 API 获取 Session 对象.

request.getSession(flag): 
- 若 flag 为 true, 则一定会返回一个 HttpSession 对象:
  如果已经有和当前 JSP 页面关联的 HttpSession对象, 直接返回; 
  如果没有, 则创建一个新的返回.
- 若flag 为 false: 若有关联的, 则返回; 若没有, 则返回 null。

request.getSession(): 
- 相当于 request.getSession(true);

4). Session 对象的销毁:
①. 直接调用 HttpSession 的 invalidate()
②. HttpSession 超过过期时间.
> 返回最大时效: getMaxInactiveInterval() 单位是秒
> 设置最大时效: setMaxInactiveInterval(int interval)
> 可以在 web.xml 文件中配置 Session 的最大时效, 单位是分钟(可以是单独的web应用设置,也可以是在Tomcat下面的总web.xml设置(作业与全局)).

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

③. 卸载当前 WEB 应用.
注意: 关闭浏览器不会销毁 Session(服务器上的还在)!
关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。
关闭服务器,存在session的序列化,在服务器重新启动的时候会反序列化重新读取回来。

两个浏览器窗口访问应用程序会使用同一个session

Session的超时管理

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

其它

关注下方公众号,回复:javaweb_course.code
完整教程PDF版本下载
上一篇 下一篇

猜你喜欢

热点阅读