Java httpservlet getparameter из html возвращает ноль - PullRequest
0 голосов
/ 21 декабря 2018

Я запускаю файл .jsp на сервере и пытаюсь отправить данные пользовательской формы ввода в метод "doPost" в HttpServlet.

Когда я пытаюсь распечатать значения пользовательского ввода в doPost, они равны нулю.

Я пытаюсь получить значения по их идентификатору html, но по какой-то причине это не работает.В HTML может быть простая проблема.

Кажется, кнопка отправки работает, так как она правильно перенаправляет обратно в файл .java, с которым я пытаюсь проанализировать входные данные пользователя.Это только значения, которые являются нулевыми.

Вот мой код.

Спасибо!:)

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Binary Encoder</title>
</head>
<body>

    <h2>Binary Encoding: Encode any number from 0 to 65535</h2> <br>
    <h3>Date=<%= new Date() %>
    </h3>

    <!-- in this form I need to figure out how to get user input into Binaryencoder.java-->
    <form action="../Binaryencoder" method="post">
        Input number you want to encode (0 to 65536):<br>
        <input type="number" id="toencode"><br>

        Input first number for encoding (0 to 255) :<br>
        <input type="number" id="mask1"><br><br>

        Input second number for encoding (0 to 255) :<br>
        <input type="number" id="mask2"><br><br>

        <input type="submit" id="submit" value="Submit">
    </form>


</body>
</html>

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {      
        doGet(request, response);

        //code to process the form... 
        String toencode = request.getParameter("toencode");
        String mask1 = request.getParameter("mask1");
        String mask2 = request.getParameter("mask2");

        //response is the thing that goes back to HTML page 
        PrintWriter out = response.getWriter();

        String output = String.format("Number to encode is: %s", toencode);
        String op1 = String.format("Mask1 is: %s", mask1);
        String op2 = String.format("Mask2 is: %s", mask2);

        out.println(output);
        out.println(op1); 
        out.println(op2); 

    }

Ответы [ 5 ]

0 голосов
/ 21 декабря 2018

Кажется, что в вашей форме отсутствует атрибут name для всех полей.

Попробуйте изменить это:

<input type="number" id="toencode">

на это (добавив атрибут name к toencode field):

<input type="number" id="toencode" name="toencode">

Очевидно, что для других полей (mask1, mask2) значение name s будет соответствовать их id s

0 голосов
/ 21 декабря 2018

Добавить атрибут имени к вашему входу, как показано ниже:

<input type="number" name="toencode" id="toencode">
<input type="number" name="mask1" id="mask1">
<input type="number" name="mask2" id="mask2">

request.getParameter не распознает атрибуты идентификатора.

0 голосов
/ 21 декабря 2018

В трех полях ввода формы используйте атрибут name вместо или в дополнение к id.Только значения этих полей ввода включаются в запрос в качестве параметров.

0 голосов
/ 21 декабря 2018

Проблема связана с этими тегами, например: <input type="number" id="toencode"> Для тега требуется атрибут name, например: name="mynumber"

Сервлет получает пары имя-значение параметров запроса отJSP.В вашем JSP name отсутствует.Правильный способ кодирования вашей JSP: <input type="number" id="toencode" name="mynumber">

В программе сервлета получите доступ к опубликованному параметру и его значению следующим образом в методе doPost:

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
    String myNumber = request.getParameter("mynumber");
    getServletContext().log("# My Number: " + myNumber); // this prints in the log file
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("My Number: " + myNumber); // this prints on the browser page
}

Это должно показатьномер, который вы ввели в JSP на странице браузера, например: My Number: 999.Вы также можете ссылаться на журналы сервера.

0 голосов
/ 21 декабря 2018

Тип ввода три должен быть текст, а не число.попробуй.

...