欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HttpSession

程序员文章站 2022-07-12 18:13:47
...

1. HttpSession

1.HttpSession: 在服务器端保持HTTP状态信息的方案,和其对应的是Cookie
2. 产生HttpSession对象的过程: 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId)
如果已经包含一个sessionId,则说明以前已经为此用户创建过session,服务器就按照sessionId把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为的在请求的URL后面附加上一个JSESSION的参数).
如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionid这个sessionid将在本次响应中返回给客户端保存
3. 使用Cookie来跟踪Session: session通过sessionId来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现
系统会创造一个名为JSESSIONID的输出cookie,这个称之为session cookie,session cookie是存储于浏览器内存中,并不是写到硬盘上的,通常看不到JSESSIONID

2. HttpSession的生命周期:

  1. 创建一个HttpSession对象:
    一个常见的错误是以为session在有客户端访问时被创建(若第一次访问某web应用的一个JS页面,且该JSP页面的page指定的session属性为false)
    ①某server端程序(如Servlet)调用HttpServletRequest.getSession(true)或者 HttpServletRequest.getSession()这样的语句时才会创建
    ②若第一次访问某web应用的一个JS页面,且该JSP页面的page指定的session属性为true,服务器会自动为该页面分配一个HttpSession对象

  2. 销毁HttpSession对象

    ①. 直接调用 HttpSession 的 invalidate()

    ②. HttpSession 超过过期时间.

    返回最大时效: getMaxInactiveInterval() 单位是秒
    设置最大时效: setMaxInactiveInterval(int interval)

    可以在 web.xml 文件中配置 Session 的最大时效, 单位是分钟.

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

    ③. 卸载当前 WEB 应用.

注意: 关闭浏览器不会销毁 Session!

3.HttpSession的相关的API

1).获取Session对象:request.getSession()、request.getSession(boolean create)

2).属性相关的:setAttribute,getAttribute,removeAttribute

3).使HttpSession失效的,invalidate()方法

4).设置其最大失效的setMaxInactiveInternal

4.URL重写

1).Servlet规范中引入了一种补充的会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话。

2).将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写

 3).encodeURL方法,encodeRedirectURL方法