Сравнение параметров POST-запроса

Следующий код пытается определить, какое поле ввода заполнил пользователь с помощью метода 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);

    }

Визуально пытаюсь выяснить, вводил ли пользователь значение в первое поле, или во второе:

Сравнение параметров POST-запроса

Однако каждый раз, когда это выполняется, он указывает на 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>

Неправильная маркировка @BalusC. Этот вопрос не о том, как сравнивать строки. Речь идет о том, как анализируется запрос POST с точки зрения того, какие значения передаются. Хотя предоставленный ответ устранил мою проблему, безусловно, есть лучший способ проверить значения запросов POST, чем способ, который я показал выше (проверка пустых строк), который является корнем моей проблемы.

Matthew 16.07.2019 21:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что вы написали код JavaScript, но скомпилировал его, как если бы это был код Java.

В Яве, String — это объект. Когда вы выполняете тест if (objectReference1 != objectReference2) вы тестирование, чтобы убедиться, что местоположение objectReference1 совпадает с расположением objectReference2. В вашем случае это записывается как if (request.getParameter("userinput") != "userinput")

Этот тест почти всегда будет верным, независимо от значения, хранящегося в параметре с именем «userinput». Это правда, потому что адрес значения параметра с именем «userinput» почти никогда не будет адресом строки «userinput».

Вполне вероятно, что вы действительно хотите сравнить значение параметра с именем «userinput» со строковым значением «userinput». Если это так, вы должны использовать метод equals. Один из способов сделать это
if ("userinput".equals(request.getParameter("userinput")))

Это предполагает, что значением по умолчанию для «userinput», поданного на странице HTML (возможно, JSP), является значение «userinput».

Да, я должен был заметить это раньше. Довольно хардкорная ошибка нуба с моей стороны. Спасибо за помощь.

Matthew 16.07.2019 20:10

Другие вопросы по теме