Session
什么是Session:
- 服务器会为每一个用户(浏览器)创建一个Session对象
- 一个Session独占一个浏览器,只要浏览器没有关闭,这个session就一存在
- 用户登录后,这个网站的页面都可以访问–》保存用户的信息,购物车信息
创建Session
//解决乱码问题
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
//得到session
HttpSession session = req.getSession();
//给session存对象
// session.setAttribute("name","数据");
//给session存一个类对象
session.setAttribute("name", new Persion("王默",19));
//获取session的ID,每个浏览器的唯一标识符
String sessionId = session.getId();
//判断session是不是新创建的
if (session.isNew()){
resp.getWriter().write("session创建成功ID:" + sessionId );
}else {
resp.getWriter().write("session已经在服务器中存在了,ID;"+ sessionId);
}
//session创建时所做的事情
//Cookie cookie = new Cookie("JSESESSION", sessionId);
//resp.addCookie(cookie);
获取创建Session里面的值
//获取session
HttpSession session = req.getSession();
//取出session里的name值是String对象
//String name = (String) session.getAttribute("name");
//取出session里面name值是Person类对象
Persion name = (Persion) session.getAttribute("name");
//打印
System.out.println(name);
注销Session
- 手动注销
HttpSession session = req.getSession();
session.removeAttribute("name");
//手动注销session
session.invalidate();
- 自动注销 在web.xml文件里
<session-config>
<!-- 设置session(会话)的自动过期时间,单位为分钟-->
<session-timeout>1</session-timeout>
</session-config>
Session和cookie的区别:
- Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
- Session把用户的数据写到用户独占Session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)
- Session对象由服务器创建
使用场景:
- 保存一个登录用户的信息
- 购物车信息
- 在整个网站中经常使用的数据,我们将它保存在Session中;
Cookie的使用图解
Session使用图解