java - 如何检查 JSP EL 中的 session ?

标签 java jsp session el

如何检查 EL 中请求的 session 是否存在?我正在尝试类似的东西:

<c:if test="${pageContext.request.session != null}"> ... </c:if>

但它似乎永远不会为空。

最佳答案

它确实永远不会是null。 session 总是存在于 JSP EL 中,除非您添加

<%@page session="false" %>

到 JSP 的顶部。然后您可以按如下方式检查 session (仅限 EL 2.2!):

<c:if test="${pageContext.request.getSession(false) != null}">
    <p>The session has been created before.</p>
</c:if>

我不确定具体的功能需求是什么。如果您想检查 session 是新 session 还是已创建,请使用 HttpSession#isNew()相反。

<c:if test="${not pageContext.session['new']}">
    <p>You've already visited this site before.</p>
</c:if>
<c:if test="${pageContext.session['new']}">
    <p>You've just started the session with this request!</p>
</c:if>

(new 的大括号符号是强制性的,因为 new 是 Java 语言中的保留文字)

如果您依赖于特定 session 属性,例如设置为的已登录用户

session.setAttribute("user", user);

那么你应该拦截它:

<c:if test="${not empty user}">
    <p>You're still logged in.</p>
</c:if>
<c:if test="${empty user}">
    <p>You're not logged in!</p>
</c:if>

关于java - 如何检查 JSP EL 中的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135725/

相关文章:

java - Java中非常简单的用户登录系统

eclipse - 如何让 Eclipse JSP 表达式语言验证接受 JSP 2.2 EL 构造?

java - 如何检查使用@SessionAttributes创建的 session 是否存在(Spring MVC)

wpf - 如何在 WPF 应用程序中限定 NHibernate session 和事务

java - Tomcat java.lang.ClassNotFoundException 异常

PHP 登录无法按预期工作

java - 奇怪的 org.springframework.jdbc.BadSqlGrammarException

java - 重复启动和停止多个线程

java - 使用大型和超大绘图的平板电脑

java - 对jsp文件使用过滤器时出现无限循环