是java servlet中的HttpSession仅在
HttpSession s = request.getSession();在我的代码中,我没有这样写,但是当我使用if (request.getSession(false) == null) ...时,它不能工作。为什么?
发布于 2011-02-28 18:15:24
调用request.getSession()时会创建一个HttpSession。
但是,如果缺省情况下访问JSP,它将自动创建一个session.This行为,可以使用以下命令禁用该行为:<%@ page session="false">
你在使用JSP吗?
发布于 2011-02-28 18:11:00
读一读JavaDocs,它清楚地说:
上面写着,request.getSession()
返回与此请求关联的当前会话,如果请求没有会话,则创建一个会话。
另一个变种是request.getSession(isCreate)
返回与此请求相关联的当前HttpSession,或者,如果没有当前会话并且create为true,则返回一个新会话。
如果create为false,并且请求没有有效的HttpSession,则此方法返回null。
要确保会话得到正确维护,必须在提交响应之前调用此方法。如果容器使用cookies来维护会话完整性,并且在提交响应时被要求创建一个新会话,则会抛出IllegalStateException。
更新
在一些研究中,我发现除非在某个地方调用request.getSession(),否则不会创建会话。因为,The servlet container uses this interface to create a session between an HTTP client and an HTTP server.默认情况下,Servlet容器很可能会为您创建会话。
请参阅:
is HttpSession created automatically?上的
但是,为了安全起见,请使用request.getSession()获取会话,并仅在需要验证会话是否已创建时才使用request.getSession(false)。
发布于 2011-02-28 18:13:50
除了Nishant回答笔记之外,还可以通过JSP页面隐式创建会话,除非您将它们配置为不使用<%@ page session = "false" %>创建会话。
https://stackoverflow.com/questions/5140556
复制相似问题