HttpSession对象简介说明

java-教程王 Servlet 发布时间:2022-01-02 10:27:36 阅读数:9407 1
下文笔者将讲述HttpSession对象的相关简介说明,如下所示:

HttpSession简介

HttpSession是由JavaWeb提供用来会话跟踪的类
Session是服务器端对象
保存在服务器
它的底层是依赖Cookie或URL重写(jsessionid)
httpSession会话范围:
当用户第一次访问服务器时,到用户退出服务器,这是一个完整的Session会话周期
当用户未对服务器进行操作时,则服务器端的Session会过期并消失

创建session

  1. 当前的JSP是客户端访问的当前WEB应用的第一个资源
    JSP的page指定的session属性值为 false
    则服务器就不会为JSP创建一个 HttpSession对象
  2. 当前JSP不是客户端访问的当前WEB应用的第一个资源
    且其他页面已经创建一个HttpSession 对象
    则服务器也不会为当前 JSP 页面创建一个HttpSession对象
    而回会把和当前会话关联的那个HttpSession对象返回给当前的JSP页面
  3. Serlvet是客户端访问的第一个WEB应用的资源
    则只有调用了request.getSession()或request.getSession(true)才会创建 HttpSession对象

获取session

  1. 获取cookie中的request.getSession()方法,获取Cookie中的SessionId
  2. 如果SessionId不存在,创建Session,把Session 保存起来,把新创建的SessionID保存到cookie中
  3. 如果SessionId存在,通过SessionId查找Session对象,如果没有查找到,创建Session,把Session保存到新创建的SessionId的cookie中
  4. 如果SessionId存在,通过SessionId查找到了Session对象,那么就不会再创建Session对象了
  5. 返回Session

销毁session

1. 调用 HttpSession 的 invalidate() 方法, 该方法使 HttpSession 失效
2. 服务器卸载了当前 WEB 应用.
3. 超出 HttpSession 的过期时间.
设置 HttpSession 的过期时间: session.setMaxInactiveInterval(5); 单位为秒
在 web.xml 文件中设置 HttpSession 的过期时间: 单位为分钟. 
<session-config>
    <session-timeout>30</session-timeout>
</session-config>
4. 关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。

URL重写session操作

Session依赖cookie,目的是让客户端发出请求时归还SessionId,这样才能找到对应的Session,如果客户端禁用了cookie,那么就无法得到SessionId
URL重写的方式替代cookie ,让网站的所有超链接,表单中都添加一特殊的请求参数即SessionId,这样服务器可以通过获取请求参数得到SessionId,从而获得Session对象
response.encode(String url)这个方法会对URL进行智能的重写,当请求中没有归还SessionId这个cookie,那么这个方法会重写URL,否则不重写,url必须是指向本站的url
session机制采用的是在服务器端保持 HTTP 状态信息的方案
当程序需要为某个客户端的请求创建一个session时
服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId)
如果已经包含一个sessionId则说明以前已经为此客户创建过session,
服务器就按照session id把这个session检索出来使用(如果检索不到,
可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,
但用户人为地在请求的URL后面附加上一个JSESSION的参数)
如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionId
这个session id将在本次响应中返回给客户端保存。
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202201/252.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者