JavaWeb之Session技术

session
服务器用于缓存数据会话技术
默认情况:session依赖于cookie
对象HttpSession

1.session原理:

JavaWeb之Session技术_第1张图片

根据上图分析如下:
a.浏览器发送请求到服务器,并交给一个servlet进行处理。此时request.getSession()第一次创建session对象,将sessionId以cookie的方式发送给浏览器。同时在服务端会保存session,并且,有唯一的id。
b.服务端将响应的信息发送到客户端,客户端会保存cookie信息。
c.当浏览器再次请求的时候,并交给另一servlet-twoservlet进行处理,此时request.getsession()会首先在服务端找是否有匹配的session,如果匹配,则不创建。
getSession()用于获得session对象,并以cookie方式将session id发送浏览器
如果没有特殊的cookie getSession方法创建session对象
2.session生命周期
创建:第一次使用
销毁:
过期,默认30分钟,%tomcat%/conf/web.xml配置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
执行invalidate() ,进行销毁
setMaxInactiveInterval(int interval) 设置生命周期的时间,单位秒
非正常关闭
操作属性--用于缓存数据
xxxAttribute
3.URL重写
如果浏览器禁用了cookie,通过指定的api给URL后面追加特殊的标记,将session id传递给服务器
http://......./day10/oneServlet;jsessionid=23542958BF73D36C6F4086173606AA9B
encodeURL(url) 重写URL,重写普通的URL【】
encodeRedirectURL(java.lang.String url) ,专门用于处理重定向 URL重写。
如果参数是空字符串,内容不同

用法:见博文中session技术案例session应用案例-注册验证码

你可能感兴趣的:(session的工作原理)