1.HTTP是无状态的
服务器无法判断两次请求是否是同一个客户端发送的,假如第一次请求是添加商品到购物车,第二次请求是结账,那么就会导致混乱,使用session来解决。
2.session原理
3.演示
(1)项目启动,发送第一次请求,获取请求的sessionID
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取session,如果获取不到,就创建一个新的
HttpSession session = request.getSession();
System.out.println("session ID:" + session.getId());
}
控制台打印
(2)查看响应头
(3)再发送一次请求,查看请求头
4.会话跟踪技术
客户端第一次发请求给服务器,服务器获取session,获取不到则创建新的,然后响应给客户端(响应头中)。
下次客户端给服务器发请求时,会把sessionID带给服务器,服务器就能识别客户端了。
5.常用方法
非激活间隔时长表示:多久时间没有操作后session失效
request.getSession(); //获取当前会话,没有则创建一个新的会话
request.getSession(true);
request.getSession(false); //获取当前会话,没有则返回null,不会创建新的
session.getId(); //获取sessionID
session.isNew(); //当前session是否是新的
session.getMaxInactiveInterval(); //session的非激活间隔时长,默认1800秒
session.setMaxInactiveInterval();
session.invalidate(); //强制让会话立即失效
原创文章,作者:dweifng,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276777.html