介绍
session对象指的是客户端与服务器的会话,从客户端第一次连到服务器时创建,关闭浏览器或超时时销毁。
类
javax.servlet.http.HttpSession
原理
https://malaoshi.top/show_1EF3sMbk2GQ1.html
生命周期
创建:第一次访问 web应用时,就会创建 session
销毁:关闭浏览器,或 session超时,或通过代码 销毁session
应用场景
登录
获取session
jsp:可以直接使用 session 对象
servlet:通过 request 对象获取,如下:
HttpSession session = req.getSession()
常用方法:
- void setAttribute(key, value); 将 key/value 存入到 session 对象中
- Object getAttribute(key); 根据key获取value
- void removeAttribute(String name) 删除key/value
- void invalidate() 取消SESSION,使SESSION不可用
- void setMaxInactiveint erval() 设置两次请求间隔多长时间此SESSION被取消,单位:毫秒 ms
- publicString getId() 返回SESSION的id号,每个id号都是不同的
- long getCreationTime() 返回SESSION创建时间
- long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间
- int getMaxInactiveint erval() 返回两次请求间隔多长时间此SESSION被取消(ms)
- boolean isNew() 判断 session 是否新创建的
设置session有效时间
https://malaoshi.top/show_1IXscCWXFmE.html
例子:登录
登录成功后,将用户信息放入到session中
String username=request.getParameter("username");
String password=request.getParameter("password");
/*
判断用户名、密码是否正确
*/
//登录成功,将用户信息放入到session中
session.setAttribute("username",username);
需要登录才能访问的网页
如:订单页面,创建 order.jsp,需要判断用户是否登录,在顶部增加下面代码:
String username=(String)session.getAttribute("username");
if(username==null || "".equals(username)){
response.sendRedirect(request.getContextPath()+"/login.jsp");
}
退出登录
session.invalidate();
session=null;