<a href="/LogoutServlet">注销</a>
当用户点击注销的时候,前台会向服务器的LogoutServlet发送请求,然后后台执行注销逻辑
package cn.bingou.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LogoutServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 执行注销逻辑 // 销毁用户绑定的session req.getSession().invalidate();// 请求重定向 resp.sendRedirect(req.getContextPath()+"/index.jsp"); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
注销就是将服务器端存储的用户的session删除。
Session概述
Session是将会话中产生的数据保存在了服务器端, 是服务器端技术
Session是一个域对象
setAttribute(String name, Object value);
getAttribute(String name);
removeAttribute(String name)
getAttributeNames()
生命周期:
当第一次调用request.getSession()方法时创建Session
超时: 如果一个Session超时30分钟(可以在web.xml中来修改, 在根目录下通过<session-config>来配置)未被使用, 则认为Session超时, 销毁session
自杀: 当调用session.invalidate()方法的时session立即销毁!!
意外身亡: 当服务器非正常关闭时, 随着应用的销毁, session销毁. 当服务器正常关闭, 则未超时的session将会以文件的形式保存在tomcat服务器work目录下, 这个过程叫做session的钝化. 当服务器再次启动时, 钝化着的session还可以恢复过来, 这个过程叫做session的活化。
作用范围: 当前会话范围
主要功能: 保存当前会话相关的数据
-----------------------------------------------
Session的原理
Session是基于一个JSESSIOINID的Cookie工作的
-------------------------------------------
怎么解决浏览器关闭之后, 无法使用浏览器关闭之前的Session??
(注意: 在访问一个jsp时, 默认一上来就会创建session!!)
-------------------------------------------
禁用Cookie的情况下使用Session
URL重写: 就是在传入的URL地址后拼接JSESSIOINID返回一个新的地址, 用来在禁用Cookie的情况下用url地址来携带JSESSIOINID
response.encodeURL(String url);
//--如果是普通的地址用这个方法
response.encodeRedirectURL(String url);
//--如果地址是用来进行重定向的,用这个方法