Доступ к переменным post с помощью сервлетов Java

Что такое Java-эквивалент PHP $_POST ? После часа поиска в Интернете я все еще не стал ближе.

Ответов (5)

Решение

У вашего HttpServletRequest объекта есть getParameter(String paramName) метод, который можно использовать для получения значений параметров. http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

Предыдущие ответы верны, но не забудьте использовать атрибут name в полях ввода (форма html), иначе вы ничего не получите. Пример:

<input type="text" id="username" /> <!-- won't work --> <input type="text" name="username" /> <!-- will work --> <input type="text" name="username" id="username" /> <!-- will work too -->

Весь этот код является действительным HTML, но при использовании getParameter (java.lang.String) вам потребуется, чтобы атрибут name был установлен во всех параметрах, которые вы хотите получить.

Для получения всех параметров сообщения существует карта, которая содержит имя параметра запроса в качестве ключа и значение параметра в качестве ключа.

Map params = servReq.getParameterMap();

И получить параметры с известным именем нормально

String userId=servReq.getParameter("user_id");

Переменные POST должны быть доступны через объект запроса: HttpRequest.getParameterMap () . Исключение составляют случаи, когда форма отправляет составные данные MIME (у ФОРМЫ enctype = "multipart / form-data" ). В этом случае вам необходимо проанализировать поток байтов с помощью парсера MIME. Вы можете написать свой собственный или использовать существующий, например API загрузки файлов Apache Commons .

Вот простой пример. Я не особо увлекся html или сервлетом, но вы должны уловить идею.

Я надеюсь, что это помогает вам.

<html>
<body>
<form method="post" action="/myServlet">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" />
</form>
</body>
</html>

Теперь о сервлете

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

public class MyServlet extends HttpServlet {
  public void doPost(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {

    String userName = request.getParameter("username");
    String password = request.getParameter("password");
    ....
    ....
  }
}