如何解决request.getSession()。getId()和request.getSession(false)之间的区别??

HttpSession session =
request.getSession();
在服务方法内部,我们请求会话,并且所有事情都会自动获取,就像创建HttpSession对象一样。无需生成唯一的会话ID。无需创建新的Cookie对象。一切都会在后台自动发生。

调用getSession()请求对象的方法后,容器将立即创建会话的新对象,并生成一个唯一的会话ID来维护会话。该会话ID被传输回响应对象,以便每当客户端发出任何请求时,它也应将会话ID与请求对象附加在一起,以便容器可以标识该会话。

request.getSession(false):此方法将检查请求的会话是否已经存在。如果存在,则它将返回已经存在的会话。如果此请求尚不存在会话,则此方法将返回NULL,这意味着该方法表示该请求先前没有会话。

解决方法

这些通话实际上对会话意味着什么?

System.out.println("print1: "+request.getSession().getId());
System.out.println("print2: "+request.getSession(false));

输出值

print1: D94146A347D95563186EB7525726336B
print2: org.apache.catalina.session.StandardSessionFacade@d52411