#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">