Session的概述
- 概念:
服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。 - 快速入门:
1.获取HttpSession对象:
HttpSession session = request.getSession();
2.使用HttpSession对象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
- 代码实现:
SessionDemo01.java:
@WebServlet("/SessionDemo01")
public class SessionDemo01 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//使用session共享数据
//1.获取session
HttpSession session = request.getSession();
//2.存储数据
session.setAttribute("msg", "hello");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
SessionDemo02.java:
@WebServlet("/SessionDemo02")
public class SessionDemo02 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//使用session获取数据
//1.获取session
HttpSession session = request.getSession();
//2.获取数据
Object msg = session.getAttribute("msg");
System.out.println(msg);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
Session的原理
那么服务器是如何确保在一次会话范围内,多次获取的Session对象是同一个的?
其实是依赖于Cookie
我们用火狐浏览器捉包分析: