《JavaWeb与Tomcat》——4.HTTP Session

这一章主要讲HTTP的会话Session的管理;

1.Http协议是无状态的;

Http协议是无状态的

因此,http不保存各个用户之前发送过的请求/响应的记录;

2.什么是”会话”?

”会话”指的是:一段时间内,单个用户与Web应用之间一连串的交互过程;

会话是”某个用户操作”与Web服务器的”某个Web应用”之间的;(区分用户和Web应用)
若存在不同的用户/或者Web应用,则不是同一个”会话”;

注意:Session是对于一个Web应用,而不是一个页面;不同的浏览器访问同一个Web应用,则为不同会话;

3.会话的运作过程?

简单来说:
(1)用户第一次访问Web应用A,Servlet容器会在用户的HTTP请求的Cookies中找Session ID,找不到则新建一个HttpSession对象+对应的唯一Session ID,并且将Session ID写入response的Cookies发给客户端,记录在浏览器本地,这样,一次会话的”状态”就被”记录下来了”;
(2)下次,该用户再次访问Web应用A的其他页面,则这个用户的身份就会被Servlet根据请求Cookies中的Session ID查询内存,得到一个HttpSession对象,这个对象记录了一次”会话”;

4.HttpSession接口

什么时候会新建一个Session?

什么时候会新建一个Session?

5.一个关于JSP/Session的应用场景——记录登录状态

(1)第一次访问登录页面,输入用户名密码;Servlet先从session中读取username(“从cookies读取session ID,再去查询session”这一过程由Web自动实现),没有读到;则再从request里面读username,然后写入session;
(2)用户经过一些页面操作,再次访问登录页面;Servlet从session中读取到了username,则不作验证,即从request里面读username做验证(因为确定了用户身份),直接给与其”已登录状态”的权限;
(3)用户点击”注销登录”(或者关闭浏览器、或Session超时),session被销毁,下次打开浏览器访问登录页面需要重新做验证;

6.Servlet与Session

那么,如何在Servlet中使用Session呢?

Eg:

在JSP/Session中,JSP获得session利用了浏览器的Cookies中的Session ID(由Servlet容器自动实现)

如何解决?重写URL;

encodeURL方法的原理:

7.会话持久化

(1)节约内存;(大量的Session对象占内存)
(2)Web服务/单个Web应用重启时,能重启恢复当前Session;

因此,会话在其生命周期可能存在两种状态之间的转换:

8.会话的监听

包括Seesion的建立与销毁,绑定、修改、删除属性,被激活、搁置;服务器通过监听Seesion上发生的事件,可以用来如统计在线/登出用户的数量等;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值