1.Session概述
2.Session原理

@WebServlet("/ss")
public class CookieServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 通过request对象获取Session对象
HttpSession session = req.getSession();
// 获取sessionid
System.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{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession session = request.getSession();
// 重写 URL 追加 SessionID
String newUrl = response.encodeRedirectURL("/SecondServlet/gs");
System.out.println(newUrl);
response.sendRedirect(newUrl); //重定向到我们要跳转页servlet
}
}
@WebServlet("/gs")
public class GetSession extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// 1. 通过request对象获取Session对象
HttpSession session = req.getSession();
// 获取sessionid
System.out.println(session.getId());
}
}
输出

实际情况是我们在url上边加上了sessionID
