Session对象实现原理

Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request对象中的方法:request.getSession(true)强制生成session。

  1. 因为HTTP协议是无状态协议,当浏览器发送请求的时候和服务器建立连接,响应完成连接断开。
  2. 因此需要session(会话)对象来保存用户的信息。session对象在用户第一次发送请求的时候被后台服务器创建。
  3. session对象的作用。作用就是保存会话状态。举个简单的例子。有一个单表的增删改查系统,假设你在登录页面输入完自己的信息之后,你的信息就会被存储到session域当中,当你执行单表的增删改查操作是时,后台会首先判断session域当中是不是含有你的信息,如果没有就返回登录页面,如果有就执行请求。这样就避免了用户直接在地址栏上输入增删改查操作对应的url就会跳转到增删改查页面。
  4. session对象的销毁有两种方法。第一种:超时机制,因为HTTP协议是无状态协议,当你关闭浏览器时,服务器并不知道,但是当服务器检测到session对象长时间没被访问(这个时间可以自己设置)时,就会将session对象销毁。换言之,即便你没有关闭浏览器,但是长时间没有访问session,该对象也会被销毁。第二种:手动销毁,浏览器会将销毁的请求高速给服务器,然后执行销毁,比如说网银的安全退出。
  5. session的实现原理。通过JSESSIONID,这个是以cookie的形式保存在浏览器内存当中的,当你第一次发送请求时,后台会自动创建一个session对象,并生成一个JSESSIONID。然后服务器会将这个id发送给浏览器,并存储在浏览器内存当中。当浏览器再次访问时,请求头里面其实包含着JSESSIONID,然后服务器就会找到对应的session对象。关闭浏览器,内存消失,存储在浏览器中的JSESSIONID消失,会话结束。
  6. cookie禁用了,session还能找到吗?cookie禁用就是服务器发送JSESSIONID给浏览器,但是浏览器拒收了。因此浏览器内存当中没有JSESSIONID,所以每一次请求都会创建一个新的session对象,无法实现信息的同步。
  7. cookie禁用后怎样实现session机制。需要用到url重写机制,每次访问时,都要在url后面加上JSESSIONID。例如:
    http://localhost:8080/Servlet;JSESSIONID=11F36C485C3A1208DA3D1CD18FAB65A6。这样子就给开发带来了一定的难度,因为编写请求路径的时候都要添加一个JSESSIONID。所以大部分网站只要禁用cookie,该网站就不可用。
  8. 设置session对象的销毁时长,在配置文件中添加以下信息
<session-config>30</session-config>
<!-- 若30分钟内session对象没有被访问,就自动销毁 -->
  1. 手动销毁。
session.invalidate();
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值