Session
Cookie的局限性:1、Cookie只能存储字符串,而且不能是中文
2、一个Cookie只能存储4KB大小的内容
会话管理除了Cookie之外,还有Session。
Session的存储原理:Session将数据存储在服务器端的内存中,不过还需要将JSessionId存储到Cookie中,并保存到客户端。
Session失效:浏览器关闭,默认JSessionId被清除,但是Session依然存储在服务器端的内存中,会有一个线程定时的去清除session。
代码演示
1、用户访问Servlet时创建Session,并且赋值
/**
* 创建session,并赋值
* @author 紫炎易霄
*/
@WebServlet("/zyyx")
public class SessionDemo extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession(true);
session.setAttribute("name", "紫炎易霄");
req.getRequestDispatcher("/printSessionId").forward(req, resp);
}
}
2、打印SessionId的Servlet
/**
* 打印sessionId
* @author 紫炎易霄
*/
@WebServlet("/printSessionId")
public class PrintSessionId extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
String sessionId = session.getId();
String value = (String) session.getAttribute("name");
System.out.println(sessionId+"------"+value);
}
}
运行结果
清除浏览器中的Cookie