比较 POST 请求的参数
Comparing parameters of POST request
以下代码尝试确定用户通过 getParameter()
方法从哪个输入字段填写:
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
System.out.println(request.getParameter("userinput"));
if(request.getParameter("userinput") != "userinput")
accessExampleView(request, response);
else
accessServletSubsidiary(request, response);
}
在视觉上,我试图找出用户是在第一个字段还是第二个字段中输入了一个值:
但是,每次运行时,它都指向 accessExampleView
。我尝试将 if
语句逻辑设置为:
if(request.getParameter("userinput") != null)
无用 - 第一行仍然为真并路由到 accessExampleView
方法。
本质上,有没有更好的方法来检查 request
对象中存在什么样的值?
这里是JSP这个利用的文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>JSP HTML page</title>
</head>
<body>
<form action="ServletHome" method="post">
<fieldset name="f1">
This page communicates with the servlet page via input types.
<br>
<br>
<label>Enter some text: </label>
<input type="text" name="userinput">
<input type="submit" value="send">
<br>
Enter your age:
<input type="number" name="userAge">
<input type="submit" value="send">
<br>
</fieldset>
</form>
</body>
</html>
问题是你写了Java脚本代码,
但将其编译为 Java 代码。
在Java中,
a String
是一个对象。
当你进行测试时 if (objectReference1 != objectReference2)
你是
测试 objectReference1 的位置
与 objectReference2 的位置相同。
在你的例子中,这写成 if(request.getParameter("userinput") != "userinput")
那个测试几乎总是正确的,
无论存储在名为 "userinput" 的参数中的值如何。
这是真的,因为名为 "userinput" 的参数值的地址几乎永远不会成为字符串 "userinput".
的地址
您似乎真的想比较名为 "userinput" 的参数的值与字符串值 "userinput"。
如果是这样的话,
您必须使用 equals 方法。
一种方法是
if ("userinput".equals(request.getParameter("userinput")))
这假定 HTML(也许 JSP)页面中 "userinput" 的默认值是值 "userinput"。
以下代码尝试确定用户通过 getParameter()
方法从哪个输入字段填写:
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
System.out.println(request.getParameter("userinput"));
if(request.getParameter("userinput") != "userinput")
accessExampleView(request, response);
else
accessServletSubsidiary(request, response);
}
在视觉上,我试图找出用户是在第一个字段还是第二个字段中输入了一个值:
但是,每次运行时,它都指向 accessExampleView
。我尝试将 if
语句逻辑设置为:
if(request.getParameter("userinput") != null)
无用 - 第一行仍然为真并路由到 accessExampleView
方法。
本质上,有没有更好的方法来检查 request
对象中存在什么样的值?
这里是JSP这个利用的文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>JSP HTML page</title>
</head>
<body>
<form action="ServletHome" method="post">
<fieldset name="f1">
This page communicates with the servlet page via input types.
<br>
<br>
<label>Enter some text: </label>
<input type="text" name="userinput">
<input type="submit" value="send">
<br>
Enter your age:
<input type="number" name="userAge">
<input type="submit" value="send">
<br>
</fieldset>
</form>
</body>
</html>
问题是你写了Java脚本代码, 但将其编译为 Java 代码。
在Java中,
a String
是一个对象。
当你进行测试时 if (objectReference1 != objectReference2)
你是
测试 objectReference1 的位置
与 objectReference2 的位置相同。
在你的例子中,这写成 if(request.getParameter("userinput") != "userinput")
那个测试几乎总是正确的, 无论存储在名为 "userinput" 的参数中的值如何。 这是真的,因为名为 "userinput" 的参数值的地址几乎永远不会成为字符串 "userinput".
的地址您似乎真的想比较名为 "userinput" 的参数的值与字符串值 "userinput"。
如果是这样的话,
您必须使用 equals 方法。
一种方法是
if ("userinput".equals(request.getParameter("userinput")))
这假定 HTML(也许 JSP)页面中 "userinput" 的默认值是值 "userinput"。