【发布时间】:2011-02-27 19:00:05
【问题描述】:
在我的网络应用程序中,我需要检查会话是否已经存在。
我想在我的 servlet 和 jsp 中检查这个。
有什么方法可以检查。
谢谢
【问题讨论】:
在我的网络应用程序中,我需要检查会话是否已经存在。
我想在我的 servlet 和 jsp 中检查这个。
有什么方法可以检查。
谢谢
【问题讨论】:
您可以使用HttpServletRequest#getSession(boolean create) 和create=false 对其进行测试。如果尚未创建,它将返回 null。
HttpSession session = request.getSession(false);
if (session == null) {
// Session is not created.
} else {
// Session is already created.
}
如果你真的想创建会话,如果它不存在,那么只需抓住它并使用HttpSession#isNew() 测试新鲜度:
HttpSession session = request.getSession();
if (session.isNew()) {
// Session is freshly created during this request.
} else {
// Session was already created during a previous request.
}
这就是您在 Servlet 中的做法。在 JSP 中,您只能在 JSTL 和 EL 的帮助下测试新鲜度。您可以通过PageContext#getSession() 获取会话,然后调用isNew() 就可以了。
<c:if test="${pageContext.session.new}">
<p>Session is freshly created during this request.</p>
</c:if>
或
<p>Session is ${pageContext.session.new ? 'freshly' : 'already'} created.</p>
【讨论】:
一种方法是在 jsp 中设置一个 session id,然后在另一个 jsp 或 servlet 中检查相同的 session id 以检查它是否处于活动状态。
HttpSession session = req.getSession();
session.getId();
【讨论】: