EL不能直接调用session.getAttribute()吗?

Is it not possible to directly invoke session.getAttribute() with EL?

'email' 的值是在会话范围内使用

设置的
session.setAttribute("email", "john@gmail.com").

为了稍后显示值,使用了以下代码

<c:out value='${session.getAttribute("email")}'> </c:out>

这没有在屏幕上产生任何输出。请注意,必要的包已导入并且没有产生错误。

但是,如果我使用 scriptlet 重新编写:<% out.print(session.getAttribute("email")); %>,我会得到我想要的输出。

为什么 session.getAttribute() 在使用 EL 表达式时不起作用?

在 EL 中,您使用 sessionScope 对象访问会话变量,例如 ${sessionScope.EMAIL}

My question is why doesn't session.getAttribute() work when using the JSTL tag?

通过 EL 在 jsp 中获取会话属性的正确方法是

<c:out value='${sessionScope.EMAIL}'/>

你弄乱了 JSTL 和 scriptlet 代码,你可以试试

email: <%= session.getAttribute("EMAIL") %>