首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java HttpSession

Java HttpSession
EN

Stack Overflow用户
提问于 2011-02-28 18:04:44
回答 5查看 32.5K关注 0票数 13

是java servlet中的HttpSession仅在

代码语言:javascript
复制
HttpSession s = request.getSession();

在我的代码中,我没有这样写,但是当我使用if (request.getSession(false) == null) ...时,它不能工作。为什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-28 18:15:24

调用request.getSession()时会创建一个HttpSession。

但是,如果缺省情况下访问JSP,它将自动创建一个session.This行为,可以使用以下命令禁用该行为:<%@ page session="false">

你在使用JSP吗?

票数 17
EN

Stack Overflow用户

发布于 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?上的

  1. Java Doc JavaRaunch

但是,为了安全起见,请使用request.getSession()获取会话,并仅在需要验证会话是否已创建时才使用request.getSession(false)

票数 15
EN

Stack Overflow用户

发布于 2011-02-28 18:13:50

除了Nishant回答笔记之外,还可以通过JSP页面隐式创建会话,除非您将它们配置为不使用<%@ page session = "false" %>创建会话。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5140556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档