Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSP中检查用户是否已登录(使用JSTL<;if>;语句),并显示用户名?_Java_Jsp_Servlets_Jstl - Fatal编程技术网

Java 如何在JSP中检查用户是否已登录(使用JSTL<;if>;语句),并显示用户名?

Java 如何在JSP中检查用户是否已登录(使用JSTL<;if>;语句),并显示用户名?,java,jsp,servlets,jstl,Java,Jsp,Servlets,Jstl,我知道在这方面有很多类似的问题,其中大多数都是指用servlet过滤器实现这个概念 我使用的是基于表单的声明式安全方法。并且,当某个用户在登录表单上输入他(或她)的凭证(用户名和密码)时,他将被重定向到特定的/安全的jsp页面。该页面内容的一部分是: Hello <%=request.getUserPrincipal().getName().toString()%> You are able to view this page because you are authoriz

我知道在这方面有很多类似的问题,其中大多数都是指用servlet过滤器实现这个概念

我使用的是基于表单的声明式安全方法。并且,当某个用户在登录表单上输入他(或她)的凭证(用户名和密码)时,他将被重定向到特定的/安全的jsp页面。该页面内容的一部分是:

Hello <%=request.getUserPrincipal().getName().toString()%>
    You are able to view this page because you are authorized user.
你好 您可以查看此页面,因为您是授权用户。 现在,若用户已登录,我希望显示他/她的用户名,无论其是否是安全的jsp页面。大概是这样的:

<c:if test="${statement that checks if some user is logged in}">
   User: ${username of the logged user here}
</c:if>

用户:${此处登录用户的用户名}
编辑 我还想用适当的JSTL命令替换jspscriptlet部分:


<c:if test="${not empty pageContext.request.userPrincipal}">
    User: <c:out value="${pageContext.request.userPrincipal.name}" />
</c:if>
用户:

使用
c:out
正确转义打印值并防止XSS攻击。

在这两种情况下,我都缺少
pageContext
对象,
请求本身在JSP页面中不是隐式对象

<c:if test="${not empty pageContext.request.userPrincipal}">
    User <c:out value="${pageContext.request.userPrincipal.name}" />
</c:if>

使用者

的JSTL等价物是:

尝试过,但没有显示任何内容,比如如果
if
语句不是
true
(顺便说一句,我已经包括了
JSTL核心标记库
),那么当用户登录时,就会在安全页面上显示他的名字(上面的代码,在问题部分)。所以,它应该被设置。我试着浏览其他几个jsp页面,回到这个安全页面,它显示了它的登录用户。
c:out的+1
@Wlad:您确定您的主体在请求中而不在会话范围内吗?@Kojotak我尝试了
${sessionScope.userPrincipal.name}
,但仍然没有显示任何内容。基本上,我不知道如何检索登录和授权用户的名称。并且它被记录和授权,因为它的名称显示在jsp中的java scriptlet标记中。@Kojotak我如何使用
jstl
而不是
?哇。。。算了吧。这就是不尝试回答就会发生的事情。。。固定的。