Co to jest odpowiednik Javy PHP $_POST
? Po przeszukiwaniu sieci przez godzinę wciąż nie jestem jeszcze bliżej.Uzyskiwanie dostępu do zmiennych post za pomocą Java Servlets
Odpowiedz
Obiekt HttpServletRequest
ma metodę getParameter(String paramName)
, której można użyć do pobrania wartości parametrów. http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)
Zmienne POST powinny być dostępne za pośrednictwem obiektu żądania: HttpRequest.getParameterMap(). Wyjątkiem jest sytuacja, w której formularz wysyła wieloczęściowe dane MIME (FORM ma enctype = "multipart/form-data"). W takim przypadku należy przeanalizować strumień bajtów za pomocą analizatora składni MIME. Możesz napisać własną lub użyć istniejącej, takiej jak Apache Commons File Upload API.
Oto prosty przykład. Nie miałem ochoty na html lub serwlet, ale powinieneś dostać ten pomysł.
Mam nadzieję, że to pomoże.
<html>
<body>
<form method="post" action="/myServlet">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" />
</form>
</body>
</html>
Teraz Servlet
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");
....
....
}
}
czy możesz mi powiedzieć, jak uzyskać wartość żądania POST na stronie serwletu? Używam $ .ajax call nie formować akcji i XMLHttpRequest? – selladurai
moje pytanie http://stackoverflow.com/questions/6068510/i-couldnt-get-post-value-in-servlet-page – selladurai
Dotychczasowe odpowiedzi są poprawne, ale należy pamiętać, aby skorzystać z atrybutu nazwy w polach tekstowych (formularz HTML) lub nie dostaniesz nic. Przykład:
<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 -->
Wszystko to kod HTML jest ważny, ale przy użyciu getParameter (java.lang.String) trzeba będzie atrybut nazwa została ustalona we wszystkich parametrów, które chcesz otrzymywać.
Uwaga: ta odpowiedź poprzedza wydanie Servlet 3.0 i standardowe wsparcie dla 'multipate/form-data'. Zobacz [Java EE 6 API] (http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/MultipartConfig.html) i/lub [ten post na blogu] (http: // balusc. blogspot.com/2009/12/uploading-files-in-servlet-30.html) – McDowell