JavaWEB开发系列之会话与状态管理

1.概念?

(1)会话:客户端浏览器和服务器之间连续发生一系列请求和响应的过程。

(2)会话状态:顾名思义,即是会话过程中的状态信息。

2.如何实现由状态的会话?

浏览器对每次请求的进行标识,标识号SessionID,在Servlet中两种机制:Cookie和Session

3.Cookie机制?

采用是在客户端保持HTTP状态信息的方案,,浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个小文本文件,一旦浏览器保存了某个Cookie,每次浏览器访问WEB服务器的时候,都会把这个Cookie回传给WEB服务器。

Cookie传送过程示意图

                               

4.在Servlet程序中使用Cookie?

在Servlet API中,HttpServletResponse接口中定义了一个addCookie方法,它用于在发送给浏览器的HTTP响应消息中增加一个Set-Cookie响应头字段。HttpServletRequest接口中定义了一个getCookies方法,它用于从HTTP请求消息的Cookie请求头字段中读取所有的Cookie项。

5.会话Cookie和持久Cookie的区别?

会话Cookie:不设置Cookie过期时间,保存在内存里面,关闭浏览器后失效。

持久Cookie:设置了过期时间,Cookie保存在硬盘上,再次打开浏览器依旧有效,直到过期时间,Cookie可在不同浏览器进程上共享,比如两个IE窗口,对于不同的浏览器,对Cookie处理方式不同,无法共享。

6.自动登录、提示客户端计算机上次访问时间功能?

自动登录:把登陆信息存储到Cookie中,并设置Cookie的最大时效30s,从Cookie中读取用户信息登录。

提示客户端计算机上次访问时间功能:将每次会话的开始时间作为每次访问网站的时间,并将这个时间以Cookie的形式存储计算机中,Cookie的保存时间设置为1年,客户端每次访问通过改Cookie回传上次访问站点的时间。

7.session机制?

Seesion含义指一类用来在客户端与服务器端之间保持状态的解决方案,例如拿起电话拨号到挂断电话这中间的一系列过程称为一个seesion。session机制采用的是在服务器端保持HTTP状态信息的方案

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(sessionId),如果已经包含一个sessionId则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionId这个session id将在本次响应中返回给客户端保存

8.保持session的几种方式?

cookie方式

URL重写:考虑到cookie人为禁用的情况,把seesion id附加到URL上,附加有两种方式,一种是作为URL路径的附加信息,一种是作为查询字符串附加到URL后面

Session cookie?

session是以cookie和URL重写为基础的,默认使用cookie,系统会创建一个名为JSESSIONID的输出cookie,称之为session cookie,存储在浏览器内存中。

9.Session创建与删除?

创建:server端程序(Servlet)调用HttpServletRequest.getSession(true) 或者 HttpServletRequest.getSession()这样的语句时才会被创建。

删除:

程序调用HttpSession.invalidate();

距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间;

服务器进程被停止;

10.两个浏览器共享同一个session?

session id----->存储到persistent cookie中------->新窗口访问persistent cookie------>共享同一个session

11.Session超时管理?

“超时限制”,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。会话的超时间隔可以在web.xml中设置,其默认值由Servlet容器定义<session-config>

  <session-timeout>30</session-timeout>

</session-config>

Session域范围?

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值