session
什么是session:
- 服务器会给每一个用户(浏览器)创建一个session对象
- 一个session独占一个浏览器,只要浏览器没关,这个session就存在
- 用户登录之后,整个网站它都可以访问
session和cookie的区别:
- cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
- session是把用户的数据写到用户独占的session中,在服务器端(保存重要的信息,减少服务器资源的浪费)
session使用场景:
-
保存用户登录信息;
-
购物车信息;
-
在整个网站中经常会使用的数据,我们将它保存在session中;
使用session
public class session extends HttpServlet {
@Override
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("m", "mmm");
session.setAttribute("mlx", new Person("mlx", 18));
// 获取session 的ID
String ID = session.getId();
// 判断是否是新的session
boolean isNew = session.isNew();
if(isNew) {
resp.getWriter().write("session创建成功, ID:" + ID);
} else {
resp.getWriter().write("session已经在服务器中存在, ID:" + ID);
}
// session创建的时候做了什么事情
// Cookie cookie = new Cookie("JSESSIONID", ID);
// resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
public class session1 extends HttpServlet {
@Override
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();
String m = (String) session.getAttribute("m");
resp.getWriter().write("\n得到session Attribute:" + m);
Person mlx = (Person)session.getAttribute("mlx");
resp.getWriter().write("\n得到mlx: name=" + mlx.getName() + "age=" + mlx.getAge());
// 注销session
// HttpSession session = req.getSession();
// 手动注销
session.invalidate();
//
}
}
在web.xml中设置自动过期时间
<!-- 设置session默认的失效时间 -->
<session-config>
<!-- 15分钟后session自动失效 -->
<session-timeout>15</session-timeout>
</session-config>