我正在尝试使用以下JSP EL代码来比较Login页面中的输入密码。
密码变量来自文本框并已正确设置;那部分没有错误(或者至少看起来如此!)。
但是当我尝试将密码与字符串" admin"进行比较时(有效密码)。它始终为eq
返回false,并且对ne
以下是完整代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSTL Core Based Login</title>
</head>
<body>
<form action="CoreBasedLogin.jsp">
Name: <input type="text" name="name" /> <br> <br>
Password: <input type="text" name="password" /> <br> <br>
<input type="submit" value="Login"/>
</form>
<%
String name = request.getParameter("name");
String password = request.getParameter("name");
%>
<c:set var="name" value="<%=name%>"/>
<c:set var="password" value="<%=password%>"/>
<c:if test="${password ne null}">
<c:if test="${password eq 'admin'}">
<c:out value="Login Successful"></c:out>
</c:if>
<c:if test="${password ne 'admin'}">
<c:out value="Login Failed"></c:out>
</c:if>
</c:if>
</body>
</html>
我知道==运算符和eq运算符都做同样的事情。但我无法使用此代码。
请告知如何继续。
TIA:)
答案 0 :(得分:2)
在您在此处提供的代码中,对我来说好像是您有错字。有一行:
String password = request.getParameter("name");
我认为应该将name
更改为password
。
答案 1 :(得分:0)
没有看到更多代码,我猜你无法在EL上下文中访问密码参数。
尝试在第一个'if'语句之前添加以下scriplet。这会将密码参数公开给您的EL上下文。
<%
pageContext.setAttribute("password", request.getParameter("password"));
%>
在此处查看让对象可用于部分:https://stackoverflow.com/tags/el/info