服务器无法判断两次请求是否是同一个客户端发过来的。
例:第一次请求是添加商品到购物车,第二次请求是结账;如果两次请求服务器无法区分是同一个用户的,那么就会混乱。
客户端第一次发请求给服务器,服务器获取session,获取不到,则创建新的,然后响应给客户端。下次客户端给服务器发送请求,会把sessionID带给服务器,服务器就能获取到,那么服务器就判断这一次请求和上次请求是否为同一客户端,从而区分开。
request.getSession():获取当前会话,没有则创建新的会话
request.getSession(true):效果和不带参数相同
request.getSession(false):获取当前会话,没有则返回null,不会创建新的
session.getId():获取sessionID
session.idNew():判断当前session是否是新的
session.getMaxInactiveInterval():session的非激活间隔时长,默认1800秒
session.setMaxInactiveInterval()
session.invalidate():强制会话立即失效
......
先参考前面文章新建、部署、运行项目。
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.IOException;
-
- public class demo01 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // //获取session,获取不到,获取新的
- HttpSession session = request.getSession();
- System.out.println("ID:"+session.getId());
- }
- }
第一次请求时,客户端没有session,会接收到一个服务器端发来的sessionID;
第二次请求时,客户端有session,服务器端则能根据sessionID区分客户端。