内置对象session与httpSession对象--JavaWeb学习笔记

Session内置对象

JSP内置对象Session,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。

当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。

HttpSession对象

HttpSession是由JavaWeb提供用来会话跟踪的类,Session是服务器端对象,保存在服务器,它的底层是依赖Cookie,或者是URL重写。会话跟踪技术中的session技术,是指使用HttpSession对象实现会话跟踪,是一种在服务器端保持会话跟踪的解决方案。

  • Servlet提供了使用HttpSession接口来实现session跟踪,它是建立在Cookie和URL重写之上的高级接口。使用Cookie的前提是浏览器支持Cookie,若浏览器不支持Cookie或者Cookie被禁用,则使用URL重写,而使用URL重写需要添加附属信息,存在很大的安全漏洞,但使用Servlet不存在这样的问题,Servlet会自动提供数据的存储空间并将其和session关联起来。

  • HttpSession对象将在用户第一次访问服务器时由容器创建(只访问JSP、Servlet等程序时才会创建,只访问HTML、image等静态资源并不创建),当用户调用其失效方法(invalidate()方法)或超过其最大不活动时间时会失效。

1、创建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对象。

2、获取session
  1. 获取cookie中的request.getSession()方法,获取Cookie中的SessionId;

  2. 如果SessionId不存在,创建Session,把Session 保存起来,把新创建的SessionID保存到cookie中;

  3. 如果SessionId存在,通过SessionId查找Session对象,如果没有查找到,创建Session,把Session保存到新创建的SessionId的cookie中。

3、销毁session
  1. 直接调用 HttpSession 的 invalidate() 方法, 该方法使 HttpSession 失效。

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

  3. 超出 HttpSession 的过期时间。

设置 HttpSession 的过期时间: session.setMaxInactiveInterval(5); 单位为秒

在 web.xml 文件中设置 HttpSession 的过期时间: 单位为分钟.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值