使用场景:
- 保存一个登录用户的信息
- 购物车信息
- 在整个网站中经常使用的数据,保存在session中。
1、简单的Session
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); //得到Session HttpSession session = req.getSession(); //给Session中存放东西 session.setAttribute("name", new Person("肖聪",20)); //获取session的Id String id = session.getId(); //判断是不是新的Session if(session.isNew()){ resp.getWriter().write("session创建成功,ID:"+id); }else{ resp.getWriter().write("session已经在服务器中存在,ID:"+id); } //Session在创建时做了什么事 // Cookie cookie = new Cookie("JSESSIONID", id); // resp.addCookie(cookie); }
2、得到Session
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); HttpSession session = req.getSession(); System.out.println(session.getAttribute("name")); }
3、删除Session
A、关闭这个网站
B、自动注销
<!-- 设置Session默认的失效时间(自动注销)--> <session-config> <!-- 以分钟为单位--> <session-timeout>1440</session-timeout> </session-config>C、手动注销
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //注销session相当于关闭浏览器(手动注销) HttpSession session = req.getSession(); session.removeAttribute("name"); session.invalidate(); }