65 Stimmen

Zugriff auf Post-Variablen mit Java-Servlets

Was ist das Java-Äquivalent zu PHPs $_POST ? Nachdem ich eine Stunde lang das Internet durchsucht habe, bin ich immer noch nicht weitergekommen.

59voto

ScArcher2 Punkte 81775

Hier ist ein einfaches Beispiel. Ich habe mich nicht mit html oder dem Servlet beschäftigt, aber Sie sollten die Idee verstehen.

Ich hoffe, das hilft Ihnen weiter.

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

Nun zum 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");
    ....
    ....
  }
}

2 Stimmen

Können Sie mir sagen, wie man die POST-Anfrage Wert in Servlet-Seite zu erhalten? Ich bin mit $.ajax Aufruf nicht Form Aktion und XMLHttpRequest?

0 Stimmen

53voto

Ryan Ahearn Punkte 7766

Ihr HttpServletRequest Objekt hat eine getParameter(String paramName) Methode, die zum Abrufen von Parameterwerten verwendet werden kann. http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

26voto

McDowell Punkte 105255

POST-Variablen sollten über das Request-Objekt zugänglich sein: [HttpRequest.getParameterMap()](http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getParameterMap()) . Die Ausnahme ist, wenn das Formular mehrteilige MIME-Daten sendet (die FORM hat enctype="multipart/form-data" ). In diesem Fall müssen Sie den Bytestrom mit einem MIME-Parser parsen. Sie können einen eigenen Parser schreiben oder einen vorhandenen verwenden, wie den Apache Commons File Upload API.

7 Stimmen

Hinweis: Diese Antwort stammt aus der Zeit vor der Veröffentlichung von Servlet 3.0 und der Standardunterstützung für multipate/form-data . Siehe die Java EE 6-API und/oder dieser Blogbeitrag

3voto

hgc2002 Punkte 168

Die vorherigen Antworten sind richtig, aber denken Sie daran, das Attribut name in den Eingabefeldern (html-Formular) zu verwenden, sonst erhalten Sie nichts. Beispiel:

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

Der gesamte Code ist HTML-konform, aber bei der Verwendung von getParameter(java.lang.String) muss das Attribut name in allen Parametern, die Sie erhalten möchten, gesetzt sein.

1voto

Siddappa Walake Punkte 269

Um alle Post-Parameter zu erhalten, gibt es eine Map, die den Namen des Anforderungsparameters als Schlüssel und den Wert des Parameters als Schlüssel enthält.

Map params = servReq.getParameterMap();

Und um Parameter mit bekanntem Namen zu erhalten normal

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

0 Stimmen

Die Art der params wirklich sein sollte Map<String, String[]>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X