Java Web基础回顾 —Session

本文详细介绍了Web服务器如何通过四种方法跟踪客户状态:利用隐藏字段、重写URL、使用持久Cookie及Session会话机制。特别讲解了Session的工作原理、生命周期及其超时设置。
  1. Web服务器跟踪客户状态通常四种方法:
    • 建立含有跟踪数据的隐藏字段。input type=‘hidden’
    • 重写包含额外参数的URL
    • 使用持续的Cookie
    • 使用Servlet API中的Session会话机制
  2. Session的运行机制:
    • 当一个Session开始时, Servlet容器将创建一个HttpSession对象,在HttpSession对象中可以存放客户状态的信息。
    • Servlet容器为HttpSession分配一个惟一标志符,成为Session ID。Servlet容器把Session ID作为Cookie保存在客户的浏览器中。
    • 每次客户发出HTTP请求时,Servlet容器可以 从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取到客户的状态信息。
  3. Session timeout
    • 通过HttpSession里面的setMaxInactiveInterval(int second)来设定(优先级更高一点,覆盖配置文件的设置)
    • 通过web.xml配置文件(分钟)

        <servlet-config>
            <session-timeout>30</session-timeout>
        </servlet-config>
  4. Session的生命周期
    • 当用户第一次访问Web应用中支持Session的某个页面时,就会开始一个新的Session。
    • 接下来客户浏览这个Web应用的不同网页时,始终处于同一个Session。
    • 默认情况下JSP网页都是支持Session的,也可以显式声明:
      <%@ page session = "true">
      4)Session过期或者调用HttpSession的inValidate()方法,Servlet会将Session所占用的资源释放。客户端关闭浏览器(一般做法是服务器端Session会保留到过期自动删除)
      可以使用javascript的window.onclose来监测浏览器的关闭动作,然后可以向服务器发送一个请求来删除Session。但是弊端是浏览器崩溃或者杀进程这样还是不起作用。

转载于:https://www.cnblogs.com/nextStep/p/6694752.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值