Cookie-Session机制

1.什么是Session

HTTP协议本身是无状态的,浏览器的每一次请求都是独立的,浏览器不会保存过去的请求信息。服务器为了记录用户的状态就需要使用某种机制来保持会话,在Http传输中采用了Session机制。
Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。在Servlet中,session指的是HttpSession类的对象。

 

2.如何维持会话


服务器创建Session后,会把Session的id号,以cookie的形式回写给浏览器,以后在访问符合cookie规则的页面时,浏览器会把这个cookie添加到请求头发送给服务器,服务器接收到这个cookie时会匹配id号找到当前浏览器的会话。 ID通常是 NAME 为 JSESIONID 的一个 Cookie。

  • HTTP和COOKIE交互:
    服务器端响应给客户端对应的Set-Cookie。包括了对应的cookie的名称,值,以及各个属性。
 

3.Servlet中的HttpSession


  • Session创建的时间:
    一个常见的误解是以为Session在有客户端访问时就被创建,然而事实是直到某servlet端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建,JSP会默认调用,如果不打算使用session,应该在所有的JSP中关闭它。

  • Session删除的时间:

    • Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了服务器设置的Session超时的最大时间。
    • 程序调用HttpSession.invalidate()
    • 服务器关闭或服务停止
  • Session会因为浏览器的关闭而删除吗?
    不会,session只会通过上面提到的方式去关闭。

  • Session存放在哪里:
    服务器端的内存中。不过session可以通过特殊的方式做持久化管理,比如写入数据库或文件中

  • Session是一个容器,可以存放会话过程中的任何对象。

  • Session的创建和使用总在服务端,而浏览器从来都没得到过session对象。但浏览器可以请求Servlet来获取session的信息。客户端浏览器仅仅拿到的是sessionID。

 

4.URL地址重写维持会话


URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(Stringurl)实现URL地址重写。
该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

 

转载于:https://www.cnblogs.com/Alpharun/p/9231384.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值