Verwenden Sie zunächst eine Benutzereinstellungsschnittstelle als Beispiel (Textfeld, Kennwortbox, Auswahl, Dropdown-Formular usw.). Der Effekt ist wie folgt
<! DocType html public "-// w3c // dtd html 4.01 transitional // en charSet = utf-8 "> <title> Benutzerregistrierung </title> </head> <body> <!-Benutzerregistrierung-> <Formular Action ="/requestTest/request5 "methode =" get "> <table> <!-Texteingangsbox-> <tr> <Td> Benutzername </td> <td> <Eingabe type =" körpername "name" username "/username"/username "/username"/</td> </th> </th> <! box--><tr><td>Password</td><td><input type="password" name="password" /></td></tr><!-- Radio button radio--><tr><td>Gender</td><td><input type="radio" name="gender" value="male" /> Male <input type="radio" name="gender" value="female" /> Weiblich </td> </tr> <!-Kontrollkästchen-> <tr> <td> Hosts </td> <td> <Eingabe type = "Checkbox" name = "Hobby" value = "Sport"/> Sport <Eingabe type = "Checkbox" name "name =" hobby "value =" music "/> music <Eingabe type =" tectbox ". Box-> <tr> <td> City </td> <select name = "city"> <option value = "pejing"> peking </option> <option value = "shanghai"> shanghai </option> <option value = "shenzhen"> shenzhen </option> </select> </td> </td> <! Profile</td><td><textarea rows="5" cols="60" name="introduce"></textarea></td></tr><tr><td colspan="2"><input type="submit" value="Register"/></td></tr></table></form></body></html>
HINWEIS: Die Definition und Verwendung des HTML <Form> -Tags sind:
<!-Das erforderliche Aktionsattribut gibt an, wo bei der Übermittlung eines Formulars Formulardaten gesendet werden sollen. -> <form action = "value">
Der Attributwert ist eine URL, die angibt, wo Formulardaten gesendet werden sollen. Seine möglichen Werte:
Absolute URL - Zeigen Sie auf andere Websites (z. B. src = ”www.example.com/example.htm”))
Relative URL - Zeigen Sie auf Dateien innerhalb der Site (z. B. Src = ”Beispiel.htm”))
Das folgende Formular verfügt beispielsweise über zwei Eingabefelder und eine Schaltfläche Senden. Bei der Übermittlung des Formulars werden die Formulardaten an eine Seite mit dem Namen "Form_Action.asp" übermittelt:
<form action = "form_action.asp" methode = "get"> <p> Vorname: <Eingabe type = "text" name = "fname" /> < /p> <p> Nachname: <Eingabe type = "text" name = "lname" /> < /p> <Eingabe type = "subg.
Die Methode wird erhalten, sodass die Informationen in der DoGet -Methode des Servlets abgerufen werden
public class requestServlet5 erweitert HttpServlet (public void dodget (httpServletRequest request, httpServletResponse-Antwort). Request.GetParameter ("Benutzername"); System.out.println (Benutzername); // einen Wert abrufen // GET GET MANTLALBLED CODE (z. B. Chinese eingeben) --- Verwenden Sie manuelle Encodierung // userername = urlencoder.encode (userername, "iso-8859-1"); // codieren mit iso // username = urldecoder.decode (username, utf-8 "); // Decodieren mit UTF-8 username = new String (usustBytes ("ISO-8859-1"), "UTF-8"); System.out.println (Benutzername); // Nicht-Null-Überprüfung if (Benutzername! Standardmäßig können nur die ersten Daten erhalten werden. String hobby = request.getParameter ("Hobby"); // Multiple-Check-Box System.out.println (Hobby); // Alle eingereichten Daten für das Kontrollkästchen erhalten --- GetParametervalUessstring [] Hobbies = Request.GetParametervalues ("Hobby"); System.out.println (Arrays.toString (Hobbies)); System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Request.GetParameternames (); Arrays.toString (Request.GetParamTervalues (Name)));} System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- parameterMap.keySet();for (String key : keys) { // key is the parameter nameSystem.out.println(key + ":"+ Arrays.toString(parameterMap.get(key)));}} public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, Antwort);}}Gründe für verstümmelte Parameter
Die URL -Codierung ist ein Format, das von Browsern zum Packen von Formulareingaben verwendet wird. Der Browser erhält alle Namen und Werte aus dem Formular, codiert sie in Namens-/Wertparametern (entfernt die Zeichen, die nicht übertragen werden, Daten rangieren usw.) als Teil der URL oder sendet sie separat an den Server.
Verschiedene Anforderungsmethoden entsprechen unterschiedlichen Lösungen:
Post —- Request.Setcharacterencoding ("Client-Coding-Set");
Setzen Sie verstümmelte Code manuell löst
userername = urlencoder.encode (userername, "iSO-8859-1"); // codieren username = urdecoder.decode (username, "utf-8"); // mit UTF-8 dekodieren
Vereinfachen Sie die obige Schreibmethode: userername = new String (userername.getBytes ("ISO-8859-1"), "UTF-8");
Holen Sie sich die Kelselkonfiguration Tomcat Standard decodiertes Zeichensatz
in tomcat/conf/server.xml
Fügen Sie im Stecker eine Eigenschaft URiencoding = "UTF-8" hinzu
Schlussfolgerung: Während der Entwicklung versuchen Sie, den Standard -Dekodierungssatz von Tomcat nicht zu ändern. Bitte versuchen Sie, Post so viel wie möglich zu verwenden, um eine Anfrage einzureichen. Wenn Sie GET verwenden müssen, codieren Sie es manuell.