• Session的生命周期


    详解:http://blog.csdn.net/zhangjinpeng66/article/details/10449979

    1. HttpSession 的生命周期:

    1). 什么时候创建 HttpSession 对象
    ①. 对于 JSP: 是否浏览器访问服务端的任何一个 JSP, 服务器都会立即创建一个 HttpSession 对象呢?
    不一定。

    • 若当前的 JSP 是客户端访问的当前 WEB 应用的第一个资源,且 JSP 的 page 指定的 session 属性值为 false,则服务器就不会为 JSP 创建一个 HttpSession 对象;
    • 若当前 JSP 不是客户端访问的当前 WEB 应用的第一个资源,且其他页面已经创建一个 HttpSession 对象,则服务器也不会为当前 JSP 页面创建一个 HttpSession 对象,而回会把和当前会话关联的那个 HttpSession 对象返回给当前的 JSP 页面.

    ②. 对于 Serlvet: 若 Serlvet 是客户端访问的第一个 WEB 应用的资源,
    则只有调用了 request.getSession() 或 request.getSession(true) 才会创建 HttpSession 对象

    2). page 指令的 session=“false“ 到底表示什么意思?

    • 当前 JSP 页面禁用 session 隐含变量!但可以使用其他的显式的 HttpSession 对象

    3). 在 Serlvet 中如何获取 HttpSession 对象?

    • request.getSession(boolean create):

    create 为 false, 若没有和当前 JSP 页面关联的 HttpSession 对象, 则返回 null; 若有, 则返回 true
    create 为 true, 一定返回一个 HttpSession 对象. 若没有和当前 JSP 页面关联的 HttpSession 对象, 则服务器创建一个新的HttpSession 对象返回, 若有, 直接返回关联的.

    • request.getSession(): 等同于 request.getSession(true)

    4). 什么时候销毁 HttpSession 对象:

    ①. 直接调用 HttpSession 的 invalidate() 方法: 该方法使 HttpSession 失效

    ②. 服务器卸载了当前 WEB 应用.

    ③. 超出 HttpSession 的过期时间.

    • 设置 HttpSession 的过期时间: session.setMaxInactiveInterval(5); 单位为秒
    • 在Tomcat中 web.xml 文件中设置 HttpSession 的过期时间: 单位为 分钟.
    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>
  • 相关阅读:
    注解方式整合mybatis & SpringBoot整合分页助手 & SpringBoot整合JSP
    xml方式整合mybatis
    @SpringBootApplication&多环境配置&引入外部配置信息
    用例图&类图
    OOP特性介绍&域模型&静态建模和动态建模
    Git标签
    Git分支
    zabbix监控es集群健康状态(python2.7)
    Django使用问题记录
    failed to update local proxy configuration copy: unexpected field "hosts.available"解决
  • 原文地址:https://www.cnblogs.com/realshijing/p/7878576.html
Copyright © 2020-2023  润新知