HTML-файл не публикует GET-параметры в GET-запросе

#html #forms #servlets #get

#HTML #формы #сервлеты #получить

Вопрос:

Я пробую простую программу с Java Servlet, в которой будет отображаться HTML-страница с текстовым полем и кнопкой отправки. Как только пользователь введет данные и отправит их, на следующей странице отобразится приветствие . Вызов URL сервлета с параметром GET напрямую показывает, что он работает нормально. Но когда я открываю HTML-файл и отправляю данные оттуда, запрос GET формируется неправильно, т. Е. параметры не передаются по адресу URL-адреса ‘action’.

Вот HTML-код:

 <!DOCTYPE html>
<html>
 <head>
  <title>Hello</title>
 </head>
 <body>
  <form action="/TestServlt/TestClass" name="myform" method="get">
    Enter your name: <input type="text name="username">
    <br />
    <input type="submit" value="Go">
  </form>
 </body>
</html>
  

и код сервлета:

 package in.lguruprasad;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class TestClass extends HttpServlet implements Servlet {
static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    PrintWriter output = response.getWriter();
    response.setContentType("text/html");
    String name = request.getParameter("username");
    output.println("Hello " name "!");
    output.flush();
    output.close();
}
}
  

Сервлет сопоставляется с /TestServlt/TestClass URL, а форма отправки перенаправляет http://localhost:8080/TestServlt/TestClass вместо http://localhost:8080/TestServlt/TestClass?username=<user input> того, что было бы нормально. На выходе я получаю ‘Hello null!’.

Во всех браузерах форма отправляется без параметра get. Я пытался написать аналогичный метод doPost, но это также не сработало.

В чем здесь проблема и как ее исправить?

Я использую Eclipse 3.1.2, Apache Tomcat 5.5, JDK 1.6.25, если это поможет.

Ответ №1:

Во входных данных html отсутствует цитата:

 Enter your name: <input type="text name="username">
  

должно быть

 Enter your name: <input type="text" name="username">