8. Session
8.1 session阐述
- 服务器给每个用户(浏览器)创建唯一个session对象,用户拿到了唯一的sessionID
- 一个session独占一个浏览器,只要浏览器没关闭,这个session就存在
- 浏览器关闭,session也存在,只是浏览器关闭后没有cookie导致找不到对应的session,不设置都是二十分钟失效
- 用户登录后整个网站都可以使用
- 使用场景:登录信息;购物车信息;整个网站中经常使用的信息,保存在session中
8.2 session使用
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
//获得session
HttpSession session = req.getSession();
String sessionId = session.getId();
//session是否是新创建的
if (session.isNew()) {
resp.getWriter().write("session创建成功:"+sessionId);
}else {
resp.getWriter().write("session已经存在:"+sessionId);
}
/*将JSESSIONID放入Cookie中
Cookie jsessionid = new Cookie("JSESSIONID", sessionId);
resp.addCookie(jsessionid);*/
}
8.3 session注销
HttpSession session = req.getSession();
//手动注销session,但会产生一个新的session
session.invalidate();
<!--设置session默认的失效时间-->
<session-config>
<!--20分钟后session过期,以分钟为单位-->
<session-timeout>20</session-timeout>
</session-config>
8.4 session和cookie区别
- cookie把用户数据写给用户浏览器,浏览器保存多个
- session把用户数据写到用户自己的session中,服务器端保存。(保存重要的信息,减少服务器资源的浪费)
- session由服务器创建。