不要使用JSP重置公式字段中的输入

时间:2010-11-16 18:25:57

标签: jsp

我正在练习一些JSP,想要创建一个简单的公式字段。下面的代码工作正常。现在我希望最后一个输入保留在公式字段中。因此,当我输入值“password”和“name”时,无论if-else语句的结果如何,两个值都应保留在公式字段中。

例如,我输入“用户“和”1234“并按提交公式字段清除,我不希望这样。提交后,这两个值应保留在那里。真的,我不知道如何解决这个问题。

我的建议是使用application.setAttribute(“”,)和application.getAttribute(“”),但我不知道如何。任何建议我都很高兴。谢谢!

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
          "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">

<head>
  <title>Practice</title>
</head>

<body>

<h2>Practice</h2>
<h3>Please enter your name and the password.</h3>
<form method="post" action="">
  <table>
<tr><td style="text-align:center">Name</td>
<td><input type="text" name="name" size="80" /></td>
</tr>
<tr><td style="text-align:center">Password</td>
<td><input type="text" name="password" size="80" /></td>
</tr>
<tr><td><input type="submit" value="Send" /></td>
<td><input type="reset" value="Reset" /></td>
</tr>
</table>
</form>

<%-- Testing name and password. --%>
<% String name = request.getParameter("name");
   String password = request.getParameter("password");
   if (name != null && name.equals("user") && password != null && password.equals("1234"))
     {
%>
       <p>Your Input is correct!</p>
<%   }

   else
     {
%>
       <p>Your input is not correct!</p>
<%   }
%>

</body>


</html>

1 个答案:

答案 0 :(得分:2)

只需使用提交的值填充其value属性即可。在普通 JSP EL中,它将是:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<input type="text" name="username" value="${fn:escapeXml(param.username)}" />
<input type="password" name="password" value="${fn:escapeXml(param.password)}" />

${param.username}基本上与以下丑陋的 scriptlet <% if (request.getParameter("username") != null) { out.print(request.getParameter("username")); } %>基本相同,只是以更加干净和简洁的方式。

JSTL fn:escapeXml()功能可以阻止您XSS attacks。否则,用户可以输入"><script>alert('xss');</script>作为名称并执行(当然使用更恶意的JavaScript,例如将cookie发送到另一台服务器而不是简单的警报)。