比较POST请求的参数

时间:2019-07-16 17:54:58

标签: java jsp servlets

以下代码尝试确定用户通过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);

    }

从视觉上看,我试图找出用户是在第一个字段还是第二个字段中输入了一个值:

enter image description here

但是,每次运行时,它都指向accessExampleView。我尝试将if语句逻辑设置为:

  

if(request.getParameter("userinput") != null)

无济于事-第一行继续为true,并路由到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>

1 个答案:

答案 0 :(得分:2)

问题是您已经编写了JavaScript代码, 但编译起来就像是Java代码一样。

在Java中, 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”。