session运行机制
session对象
JSP内置对象:
JSP常用内置对象有:response对象、pageContext对象、request对象、session对象和application对象。session对象是众多内置对象中的一种。
session对象:
会话:Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一系列的请求和响应的交互过程。在一个会话中,用户可以访问该Web应用系统中包括网页在内的多种资源。
1,当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(手动关闭浏览器或用户长时间不访问Web应用直至浏览器自己关闭会话)。
2,JSP使用session对象表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取。
3,session对象的简单应用:(区别于request)
在一个会话中设置值
1)可以在当前设置页面获取到该值
2)当会话不关闭时,在其他页面也可以获取到设置的值。
3)直接访问a.jsp是获取不到值的。
1)在当前页面获取值。
2)点击连接之后,页面跳转到a.jsp页面,此时会话没有关闭,可以获取到值。
session运行机制:
当Web应用系统接收到客户端浏览器的请求时,首先检查服务器是否已经为这个客户端创建了session,即判断客户端的请求中是否包含了一个session ID(session唯一标识),如果包含sessionID,则服务器就会通过sessionID找到对应的session,以确定是这个客户端访问服务器;而如果客户端的请求中没有sessionID,服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端。
客户端没有禁用cookie的情况下,客户端使用cookie保存sessionID。如果cookie禁用,则会自动转化为用URL-rewriting(URL重写,URL中包含sessionID)技术实现。
为了验证上述说法,先在web.xml设置间隔两分钟就结束会话,代码如下
第一次访问页面请求时,得到一个sessionID,此时会话开启
第一次访问后在两分钟之内第二次访问页面,sessionID不会改变,且浏览器根据这个sessionID寻找匹配的页面。
两分钟后第三次访问页面,由于最开始我们设定了两分钟后会话结束,所以浏览器返回改变后的sessionId。
第三次访问后两分钟内第四次访问,结果如下: