GET POST Unterschiede

GET POST Unterschiede

1. „Get“ wird verwendet, um Daten vom Server abzurufen, während „Post“ verwendet wird, um Daten an den Server zu übergeben.
2. Get fügt die Daten im Formular der von der Aktion angezeigten URL in der Form „Variable=Wert“ hinzu, und die beiden werden mit „?“ verbunden, und jede Variable wird mit „&“ verbunden; Post fügt die Daten im Formular in den Datenkörper des Formulars ein und übergibt sie in der entsprechenden Weise von Variablen und Werten an die von der Aktion angezeigte URL.
3. Get ist nicht sicher, da die Daten während des Übertragungsvorgangs in die angeforderte URL eingefügt werden. Viele vorhandene Server, Proxyserver oder Benutzeragenten zeichnen die angeforderte URL in einer Protokolldatei auf und speichern sie dann irgendwo. Auf diese Weise können einige private Informationen von Dritten eingesehen werden. Darüber hinaus können Benutzer die übermittelten Daten auch direkt im Browser anzeigen. Außerdem werden den Benutzern einige interne Systemmeldungen zusammen angezeigt. Alle Post-Operationen sind für den Benutzer unsichtbar.
4. Die von Get übertragene Datenmenge ist gering, was hauptsächlich auf die Beschränkung der URL-Länge zurückzuführen ist. Während Post eine große Datenmenge übertragen kann, kann beim Hochladen von Dateien nur Post verwendet werden (es gibt natürlich noch einen weiteren Grund, der später erwähnt wird).
5. Get beschränkt den Wert des Datensatzes im Formular auf ASCII-Zeichen, während Post den gesamten ISO10646-Zeichensatz unterstützt. Die Standardkodierung ist ISO-8859-1.
6. Get ist die Standardmethode des Formulars.
Der folgende Vergleich ist sehr hilfreich:
Ich beschäftige mich seit einiger Zeit mit Java-Webentwicklung und es gibt ein Problem, das mich immer wieder ärgert: das Problem der verstümmelten Zeichen. Grundsätzlich suche ich im Internet nach Lösungen (es gibt wirklich viele Informationen im Internet) und es gibt viele Anleitungen zur Lösung dieser Art von Problemen mit verstümmelten Zeichen, aber nur wenige davon erklären die Einzelheiten des Problems klar. Manchmal denke ich nach dem Lesen einiger Artikel, ich hätte es verstanden, aber während der Entwicklung taucht das Problem mit den verstümmelten Zeichen wie ein Gespenst auf und erschreckt mich, was wirklich Kopfschmerzen bereitet! Dieser Artikel ist eine Zusammenfassung meiner Erkenntnisse über den langen Kampf mit verstümmelten Zeichen. Ich hoffe, dass mir weitere Freunde Ratschläge und Ergänzungen geben können.
Es gibt zwei Möglichkeiten, Daten an den Server zu übermitteln: Abrufen und Senden. Lassen Sie uns diese beiden Möglichkeiten separat besprechen.
1. Einreichung erhalten
1. Lassen Sie uns zunächst darüber sprechen, wie das Client- (Browser-)Formular die Get-Methode verwendet, um Daten zu kodieren und an den Server zu übermitteln.

Bei der Get-Methode werden die Daten nach der angeforderten URL als Parameter angehängt, beispielsweise: http://localhost:8080/servlet?msg=abc
(Es tritt sehr häufig ein verstümmeltes Problem auf. Wenn in der URL chinesische oder andere Sonderzeichen vorkommen, z. B.: http://localhost:8080/servlet?msg=杭, treten auf der Serverseite leicht verstümmelte Zeichen auf.) Nachdem die URL verkettet wurde, codiert der Browser die URL und sendet sie an den Server. Der URL-Codierungsprozess besteht darin, einen Teil der URL als Zeichen gemäß einer bestimmten Codierungsmethode (z. B.: utf-8, gbk usw.) in binären Bytecode zu codieren und dann jedes Byte durch eine 3-stellige Zeichenfolge „%xy“ darzustellen, wobei xy die zweistellige Hexadezimaldarstellung des Bytes ist. Was ich hier gesagt habe, ist möglicherweise nicht klar. Eine ausführliche Einführung finden Sie hier in der Einführung zur Klasse java.net.URLEncoder. Nachdem wir den Prozess der URL-Kodierung verstanden haben, können wir zwei sehr wichtige Probleme erkennen. Erstens sind die Zeichen, die eine URL-Kodierung benötigen, im Allgemeinen keine ASCII-Zeichen (allgemein gesprochen). Für Laien ausgedrückt müssen alle Zeichen außer englischen Buchstaben (wie Chinesisch, Japanisch usw.) URL-kodiert werden. Für uns werden URLs, die nur aus englischen Buchstaben bestehen, auf dem Server also keine verstümmelten Zeichen aufweisen. Verstümmelte Zeichen werden durch chinesische oder Sonderzeichen in der URL verursacht. Zweitens: Welche Kodierungsmethode verwendet die URL-Kodierung zum Kodieren von Zeichen? Dies ist Sache des Browsers, und verschiedene Browser haben unterschiedliche Vorgehensweisen. Die chinesische Version des Browsers verwendet im Allgemeinen standardmäßig GBK, und Sie können auch UTF-8 verwenden, indem Sie den Browser einstellen. Verschiedene Benutzer haben möglicherweise unterschiedliche Browsereinstellungen, was zu unterschiedlichen Kodierungsmethoden führt. Daher verwenden viele Websites zuerst JavaScript, um die chinesischen oder Sonderzeichen in der URL zu kodieren, und teilen dann die URL auf, um die Daten zu übermitteln, was eine URL-Kodierung für den Browser bedeutet. Der Vorteil besteht darin, dass die Website die Kodierungsmethode zum Übermitteln von Daten mithilfe der Get-Methode vereinheitlichen kann. Nachdem die URL-Kodierung abgeschlossen ist, wird die URL nun zu einem Zeichen im ASCII-Bereich, das dann mit der Kodierungsmethode ISO-8859-1 in Binärcode umgewandelt und mit dem Anforderungsheader gesendet wird. Ich möchte hier noch ein paar Worte sagen: Für die Get-Methode gibt es keine Anforderungsentität und die URLs, die Daten enthalten, befinden sich alle im Anforderungsheader. Ich persönlich denke, der Grund für die Verwendung der URL-Kodierung ist, dass der Anforderungsheader schließlich mit der Kodierungsmethode ISO-8859-1 in binär 101010 kodiert und im Internet übertragen wird. Wenn Sonderzeichen wie Chinesisch direkt mit ISO-8859-1 kodiert werden, gehen Informationen verloren, sodass zuerst eine URL-Kodierung durchgeführt werden muss.
2. Wie erhält der Server (Tomcat) die Daten zur Dekodierung?
Der erste Schritt besteht darin, die Daten mit iso-8859-1 zu dekodieren. Für die get-Methode erhält Tomcat die Anforderungsheaderzeichen im ASCII-Bereich. Die Anforderungs-URL enthält Parameterdaten. Wenn die Parameter Sonderzeichen wie Chinesisch enthalten, befinden sie sich nach der URL-Kodierung immer noch im Status %XY. Lassen Sie uns hier anhalten und über den allgemeinen Prozess sprechen, mit dem Entwickler Daten erhalten. Normalerweise verwendet jeder request.getParameter("name"), um Parameterdaten abzurufen. Die Daten, die wir vom Anforderungsobjekt erhalten, werden dekodiert, und der Dekodierungsprozess kann im Programm nicht angegeben werden. Hier möchte ich sagen, dass viele Anfänger sagen, dass request.setCharacterEncoding("Zeichensatz") verwendet werden kann, um die Dekodierungsmethode anzugeben. Tatsächlich ist dies nicht möglich. Die offizielle Servlet-API-Beschreibung enthält eine Erklärung dieser Methode: Überschreibt den Namen der Zeichenkodierung, die im Hauptteil dieser Anforderung verwendet wird. Diese Methode muss aufgerufen werden, bevor Anforderungsparameter gelesen oder Eingaben mit getReader() gelesen werden. Es ist ersichtlich, dass er gegen die get-Methode machtlos ist. Welche Kodierungsmethode sollte also zum Dekodieren der Daten verwendet werden? Das ist Sache von Tomcat. Der Standardwert ist iso-8859-1. Auf diese Weise können wir herausfinden, warum die Get-Anforderung mit chinesischen Parametern auf der Serverseite verstümmelt ist. Der Grund dafür ist, dass der Client im Allgemeinen UTF-8 oder GBK verwendet, um die Daten-URL zu kodieren. Es ist hier offensichtlich nicht möglich, den URL-Decoder iso-8859-1 zu verwenden. Im Programm können wir direkt
Java-Code
1. new String(request.getParameter("name").getBytes("iso-8859-1"),"Vom Client angegebene URL-Kodierungsmethode")
Stellen Sie es wieder in Bytecode zurück und dekodieren Sie die Daten dann auf die richtige Weise. Online-Artikel konfigurieren es normalerweise in Tomcat.
XML-Code
1. <Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>
Dadurch kann Tomcat nach dem Abrufen der Daten den angegebenen URL-Decoder verwenden. Die Einführung des URL-Decoders finden Sie hier (I) nach der Übermittlung
1. Wie verwendet das Client- (Browser-)Formular die Post-Methode, um Daten zu kodieren und an den Server zu übermitteln?
Die in der Post-Methode zu übertragenden Daten müssen auch URL-codiert sein. Welche Codierungsmethode wird also verwendet?
Wenn in der HTML-Datei, in der sich das Formular befindet, ein Abschnitt <meta http-equiv="Content-Type" content="text/html; charset=Zeichensatz (GBK, utf-8 usw.)"/> vorhanden ist, wird der Beitrag mit der hier angegebenen Kodierung kodiert. Es wird allgemein angenommen, dass dieser Code dem Browser mitteilt, welcher Zeichensatz zur Interpretation der Webseite verwendet werden soll, sodass die Website ihn an den Anfang des HTML-Codes stellt, um verstümmelte Zeichen so weit wie möglich zu vermeiden. Tatsächlich hat er auch die Funktion, die URL-Kodierungsmethode für die Übermittlung von Daten mit der Post-Methode des Formulars anzugeben . Von hier aus können wir sehen, dass für die Get-Methode die Art und Weise, wie der Browser die URL der Daten codiert, durch die Browsereinstellungen bestimmt wird (die einheitlich mit js angegeben werden können), während für die Post-Methode der Entwickler sie angeben kann.
2. Wie erhält der Server (Tomcat) die Daten zur Dekodierung?
Wenn Sie die Standardeinstellungen von Tomcat verwenden und keine Filter oder andere Kodierungen festlegen, wird es auch mit iso-8859-1 dekodiert, aber request.setCharacterEncoding("Zeichensatz") kann nützlich sein.

Ich habe festgestellt, dass die Prämisse dessen, was Tomcat oben getan hat, darin besteht, dass im Anforderungsheader keine Codierungsmethode angegeben ist. Wenn die Codierungsmethode im Anforderungsheader angegeben ist, wird sie auf diese Weise codiert.
Es werden zwei Artikel empfohlen, die Adressen lauten: URL-Kodierung in einfachen Worten:
http://www.cnblogs.com/yencain/articles/1321386.html ;
Das Problem verstümmelter Zeichen beim Senden von Daten mit der Post-Methode:
http://wanghuan8086.javaeye.com/blog/173869

Bei der Verwendung von „Post“ ist es sehr wichtig, dass in der HTML-Datei ein Absatz vorhanden ist, in dem sich das Formular befindet <meta http-equiv="Content-Type" content="text/html; charset=Zeichensatz (GBK, utf-8 usw.)"/>
Es wird dringend empfohlen, die Post-Submission zu verwenden

<<:  Vue realisiert die Funktion eines Bucheinkaufswagens

>>:  Detailliertes Tutorial zur Installation des ElasticSearch:7.8.0-Clusters mit Docker

Artikel empfehlen

JavaScript zum Erzielen eines einfachen Lupeneffekts

In einem großen Kästchen befindet sich ein Bild. ...

Methoden und Schritte zum Bereitstellen mehrerer War-Pakete in Tomcat

1 Hintergrund JDK1.8-u181 und Tomcat8.5.53 wurden...

Tutorial zur Änderung des Root-Passworts in MySQL 5.6

1. Nach der Installation von MySQL 5.6 kann es ni...

33 Eis- und Schnee-Schriftarten zum Download empfohlen (privat und kommerziell)

01 Winterflocken (nur einzeln) 02 Snowtop Caps (k...

Beispiel für die Bereitstellung von Spring Boot mit Docker

Hier verwenden wir hauptsächlich Spring-Boot, das...

So installieren Sie den Kibana-Tokenizer im Docker-Container

Schritt: 1. Erstellen Sie eine neue Datei docker-...

Führen Sie die Schritte zum Erstellen eines Squid-Proxyservers unter Linux aus.

Vorwort Dieser Artikel stellt hauptsächlich die r...

So erstellen Sie LVM für das XFS-Dateisystem in Ubuntu

Vorwort Die logische Datenträgerverwaltung von lv...

So erstellen Sie eine TAR-Datei von WSL über Docker

Ich habe kürzlich mit der Remote-Entwicklungsfunk...

Schritte zum Übertragen des neuen Kernels auf das Linux-System

1. Laden Sie das Ubuntu16.04-Image und den entspr...

Multiservice-Image-Packaging-Vorgang von Dockerfile unter Aufsicht

Schreiben einer Docker-Datei Konfigurieren Sie di...

Anweisungen zur Verwendung des HTML-Tags dl dt dd

Grundaufbau: Code kopieren Der Code lautet wie fol...