1.Session概述
2.Session原理
@WebServlet("/ss")
public class CookieServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1. 通过request对象获取Session对象HttpSession session = req.getSession();// 获取sessionidSystem.out.println(session.getId());}
}
我们使用浏览器对网站进行访问,我们会发现打印
在浏览器当中会有
当我们关闭浏览器,重新打开访问项目我们会发现session变了
②:Session保存数据
setAttribute(“key”, value)保存数据到session中
session.setAttribute("key", value); //以键值对的形式存储在session当中
③:Session获取数据
getAttribute(“key”)获取session中的数据
session.getAttribute("key"); // 通过String类型的key访问Object类型的value
④:Session移除数据
removeAttribute(“key”)从session中删除数据
session.removeAttribute("key"); // 通过key值删除session中的值
4.Session的生命周期
开始:第一次使用到session的请求产生则创建session
结束
5.浏览器禁用Cookie后使用Session解决方案
浏览器在默认情况下,会使用cookie的方式将sessionID发送给浏览器,如果用户禁用Cookie,则sessionID不会被浏览器保存,此时浏览器可以使用URL重写这样的方式发送sessionID
①:URL重写
浏览器在访问服务器上的某个地址时,不在使用原来的地址,而是使用经过该写的地址(在原来的地址上边加上sessionID)
②:实现URL重写
response.encodeRedirectURL(url)
@WebServlet("/ss")
public class SetSession extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubHttpSession session = request.getSession();// 重写 URL 追加 SessionIDString newUrl = response.encodeRedirectURL("/SecondServlet/gs");System.out.println(newUrl);response.sendRedirect(newUrl); //重定向到我们要跳转页servlet}}
@WebServlet("/gs")
public class GetSession extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stub// 1. 通过request对象获取Session对象HttpSession session = req.getSession();// 获取sessionidSystem.out.println(session.getId());}}
输出
实际情况是我们在url上边加上了sessionID