会话管理
内容摘录: JSP&Servlet学习笔记(第二版) 林信良
会话管理的基本原理
使用隐藏域
隐藏域就是主动告知服务器多次请求之间必要信息的方式之一。以问卷作答为例,上一页的问卷答案,可以用隐藏域的方式放在下一页的窗体中,这样发送下一页窗体时,就可以一并发送这些隐藏域,每一页的问卷答案就可以保存下来。
使用隐藏域的方式,在关掉网页后,显然会遗失先前请求的信息,所以仅适用一些简单的状态管理。由于在查看网页源代码时,可以看到隐藏域的值,因此该方法不适用于隐密性高的数据。
隐藏域不是Servlet/Jsp实际管理会话时的机制,在这边实现隐藏域,只是为了说明,由浏览器主动告知必要的信息,为实现web应用程序会话管理的基本原理。
使用cookie
使用URL重写
使用HttpSession
然后就可以通过request.getSession().setAttribute(“login”,user);将登录信息(也叫指令牌)放入session,让web应用程序的内存来存储、管理数据。
浏览器关闭前,浏览器会使用同一个Session实例(分配一个随机的sessionId),程序从中可以获取信息,判定用户的登录情况。
如用户退出,或让会话中止可通过HttpSession.invalidate()方法来注销session。
而在session中无法查到有效的指令牌的request,都可以被重跳转到登陆页面,提示用户登录。
注意:可以存放属性对象的地方:
1.HttpRequestServlet .setAttribute()
2.HttpSession .setAttribute()
3.ServletContext. setAttribute()
HttpSession会话管理原理
HttpSession与Url重写
HttpSession默认使用Cookie存储Session ID(浏览器端的依据),如果用户关掉浏览器接受cookie的功能的情况下,还打算使用httpSession,那么可以搭配URL重写。向浏览器发送一段超链接Url,URl后附加Session Id,当用户点击URL时,将Session id以get的方式发给web应用程序。
略。
小结
附件列表