request.getSession()。getId()和request.getSession(false)之间的区别?

时间:2012-12-20 10:06:24

标签: java javascript

这些电话在会话方面实际上意味着什么?

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

输出

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

8 个答案:

答案 0 :(得分:17)

HttpSession session = request.getSession();在服务方法中,我们要求会话,并且每个事物都会自动获取,就像创建HttpSession对象一样。无需生成唯一会话ID。无需创建新的Cookie对象。一切都在幕后自动发生。

只要调用请求对象的方法getSession(),就会由容器创建会话的新对象,并生成唯一的会话ID以维护会话。此会话ID将传回给响应对象,以便每当客户端发出任何请求时,它还应将会话ID与requsest对象相关联,以便容器可以识别会话。

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

答案 1 :(得分:14)

简而言之 -

request.getSession().getId() - 返回包含分配给此会话的唯一标识符的字符串。标识符由servlet容器分配,并且取决于实现。

request.getSession(false) - 返回会话对象,如果没有当前会话,则返回null。

答案 2 :(得分:5)

第一行将返回服务器上的“会话ID”。 第二行将返回会话对象。那么将在system.out上打印的内容将是request.getSession(false).toString();

toString的默认实现返回“对象ID”。会话方面的Object idsession id不同。会话可以在集群中进行序列化和复制,因此在每个JVM上的集群的每个节点上,它可能具有自己的对象ID(但应具有相同的会话ID)。

这里解释了使用boolean调用get session: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession(boolean

答案 3 :(得分:4)

    request.getSession()

此方法将检查现有会话;如果存在则返回,否则为请求创建新会话。

    request.getSession().getId();

这将返回该会话的唯一标识符。

    request.getSession(false);

此方法采用布尔值。此方法检查是否存在该用户的现有会话(请求);如果存在,则返回该会话,否则返回null,即不会创建新会话。

只是为会话添加更多信息。

    request.getSession(true);

此方法检查该用户的现有当前会话(请求),如果会话存在,则会返回该会话,否则会为该用户创建新会话。

    request.getSession() works like request.getSession(true)

参考: http://docs.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29

答案 4 :(得分:2)

request.getSession().getId()

重新开始会话的ID。

Request.getsession(false)返回已存在的会话对象。如果会话不存在,它将不返回任何内容,即将返回null。而使用true参数,它将创建一个新的会话对象,并在没有会话时返回它

答案 5 :(得分:1)

request.getSession().getId();

将返回分配给已启动会话的唯一字符串ID。 id的生成是特定于供应商的,如apache,jboss等。

request.getSession(false);

如果会话对象关联,它将返回与特定请求关联的会话对象,如果它未被服务器启动,则返回它将返回null。

答案 6 :(得分:0)

request.getSession().getId();

这将返回现有会话的ID。

Request.getsession(false) 

如果会话存在,它将返回会话,否则返回null。

和Request.getsession(false)表示:如果存在则给我会话,否则不创建新实例(因此返回null)。

答案 7 :(得分:0)

request.getSession().getId();

返回分配给此会话的唯一标识符。它有返回类型的String。

request.getSession(false)

返回HttpSession对象(如果已存在),否则返回null。