In der Anfangsphase des Erlernens von JavaWeb wird jeder in HttpServlet auf die Methoden doGet und doPost stoßen. Ich habe vor zwei Tagen „Head First Servlets & JSP“ gelesen und gesehen, dass es um den Unterschied zwischen Get-Requests und Post-Requests in Servlets geht. Ich fasse es wie folgt zusammen:
1: Die Größe der angeforderten Daten ist unterschiedlich.
Da die von get angeforderten Daten an die URL angehängt werden und die Datengröße der URL im Allgemeinen 2 KB nicht überschreiten darf, ist die Datengröße bei Verwendung der Get-Anforderungsmethode begrenzt. Die Post-Request-Methode fügt die Daten in den Nachrichtentext ein, sodass es theoretisch keine Begrenzung der Datenmenge gibt. (Aber im tatsächlichen Betrieb darf es nicht zu groß sein)
2: Die Sicherheit ist anders
Da die von get angeforderten Daten an die URL angehängt werden, sind sie für externe Benutzer leicht sichtbar. Aus dieser Perspektive ist dies nicht sicher. Die Post-Methode platziert die Anfrage im Nachrichtentext und wird nicht direkt in der URL angezeigt, sodass die Daten aus dieser Perspektive sicherer sind.
3: Lesezeichenerstellung
Get-Anfragen können Lesezeichen erstellen; Post-Anfragen nicht. Beispiel: Angenommen, Sie haben eine Seite, auf der Benutzer Suchregeln festlegen können. Der Benutzer kommt möglicherweise eine Woche später zurück und möchte die Originaldaten abrufen, zu diesem Zeitpunkt befinden sich jedoch neue Daten auf dem Server.
4: Einsatz von Methoden
get wird verwendet, um etwas abzurufen, einfach einen Erwerb, ohne irgendwelche Änderungen am Server vorzunehmen. Post bedeutet, dass der Benutzer Daten zur Verarbeitung sendet und die Daten auf dem Server ändern kann.
5: Ist die Anfrage idempotent?
Die Get-Anfrage ist idempotent, sie ruft einfach etwas ab und verändert den Inhalt auf dem Server nicht. Es kann mehrmals durchgeführt werden, ohne dass es zu schlimmen Nebenwirkungen kommt. Der Beitrag ist nicht idempotent und die übermittelten Daten im Beitragstext können für irreversible Transaktionen verwendet werden. Aus dieser Perspektive sollten Sie die Funktion doPost() also mit Vorsicht verwenden.
Wenn method="POST" im Formular nicht angegeben ist, wird standardmäßig eine HTTP-GET-Anfrage verwendet. Das heißt, der Standardzustand besteht darin, die Get-Anfrage aufzurufen.
In der Anfangsphase des Erlernens von JavaWeb wird jeder in HttpServlet auf die Methoden doGet und doPost stoßen.
(1) doGet-Methode: Verarbeitet hauptsächlich Get-Anfragen in HTTP. (2) doPost-Methode: Verarbeitet hauptsächlich Post-Anfragen in HTTP
Was ist also der Unterschied zwischen Get-Request und Post-Request?
(1) get hat nur einen Stream. Die Anzahl der Parameter ist streng begrenzt und kann beispielsweise nur http://localhost:8888/javaweb/getServlet?name=123 sein
(2) Die Parameter des Beitrags werden über einen anderen Stream und nicht über die URL übergeben, sodass sie sehr groß sein können, und es können auch Binärdaten übergeben werden, z. B. das Hochladen von Dateien.
Wann sollten die Methoden doGet und doPost verwendet werden:
1. Prüfen Sie für das über das Formular übermittelte Servlet, ob die Methode des Formulars get oder post ist.
2. Servlet, auf das über den Link <a href...>, doGet, zugegriffen wird
3. Geben Sie die Servlet-Adresse direkt in die IE-Adressleiste ein, doGet