是否在Java servlet中创建了HttpSession
HttpSession s = request.getSession();
Run Code Online (Sandbox Code Playgroud)
?
在我的代码中我没有写那个,但是当我使用时if (request.getSession(false) == null) ...,它不起作用.为什么?
Wil*_*leu 17
调用request.getSession()时会创建一个HttpSession.
但是,如果您默认访问JSP,它将自动创建会话.可以使用以下命令禁用此行为:<%@ page session="false">
你在使用JSP吗?
Nis*_*ant 15
阅读JavaDocs,它清楚地说:
这就是说,request.getSession()
返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个会话.
另一个变种request.getSession(isCreate)
返回与此请求关联的当前HttpSession,如果没有当前会话且create为true,则返回新会话.
如果create为false且请求没有有效的HttpSession,则此方法返回null.
要确保正确维护会话,必须在提交响应之前调用此方法.如果容器使用cookie来维护会话完整性,并且在响应提交时要求创建新会话,则抛出IllegalStateException.
更新
在一点研究中,我发现除非在某处调用Session,否则不会创建Session .因为,您的Servlet容器很可能默认为您创建会话.request.getSession()The servlet container uses this interface to create a session between an HTTP client and an HTTP server.
参考:
但是,为了更安全,请使用request.getSession()获取会话,并request.getSession(false)仅在需要验证会话是否已创建时使用.
| 归档时间: |
|
| 查看次数: |
30537 次 |
| 最近记录: |