Как получить параметр формы в сервлете?request.getAttribute не работает
-
21-09-2019 - |
Вопрос
Возможно ли, чтобы один и тот же сервлет выполнял проверку?Кажется, что здесь, возможно, придется использовать какую-то рекурсию, но когда я что-то ввожу в поле электронной почты и нажимаю отправить, параметр электронной почты по-прежнему остается пустым.После того, как я нажму отправить, URL-адрес изменится на: http://localhost/servlet/EmailServlet?Email=test
На странице показано Email: null
и текстовое поле, но я ожидал, что оно пройдет через функцию проверки (т.е.не быть нулевым).Возможно ли достичь такого типа рекурсивного поведения?
public class EmailServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String theForm =
"<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n"
+ "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
String email = (String) request.getAttribute("Email");
// Bogus email validation...
if( email == null )
{
out.println("Email: " + email + "\n" + theForm);
}
else if(emailAddressNotBogous(email))
{
out.println("Thank you!");
}
else
{
out.println("“Invalid input. Please try again:\n" + theForm);
}
out.flush();
}
}
Обновить:как указывалось в принятом ответе, в коде была ошибка.Изменение getAttribute на getParameter устраняет "проблему" :) .
Строка электронной почты = (Строка) просьба.Получить атрибутgetParameter("Электронная почта");
Решение
Чтобы получить параметр формы в сервлете, вы используете:
request.getParameter("Email");
И да, вы можете использовать один и тот же сервлет, но для этого было бы намного проще использовать два разных сервлета.
Другие советы
вы могли бы установить для метода формы значение POST, а затем реализовать метод doPost() в вашем сервлете.doGet() будет вызван для отображения формы, а doPost() будет вызван для обработки отправки формы.
в качестве альтернативы вы могли бы использовать метод doGet() для проверки наличия каких-либо параметров.если таковых нет, то просто выведите форму на экран.если таковые имеются, то обработайте отправку...