Primero use una interfaz de envío de usuario como ejemplo (cuadro de texto, cuadro de contraseña, selección, forma desplegable, etc.), el efecto es el siguiente
<! DocType html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "contenido =" text/html; charset = utf-8 "> <title> Registro de usuario </title> </head> <body> <!-Registro de usuario-> <form de acción ="/requestal/request5 "método =" get "> <table> <!-Box de entrada de texto-> <tr> <td> username </td> <td> <input type =" text "name =" username "/> </td> </tr> </tr>-contrase 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" /> Femenina </td> </tr> <!-casilla de verificación-> <tr> <td> hosts </td> <td> <input type = "checkbox" name = "hobby" valor = "deportivo"/> sports <input type = "checkbox" name = "hobby" value = "music"/> music <input type = "checkbox" name = "hobby" valor = "juego"/> juegos </td> </tr> < Cuadro-> <tr> <TD> CITY </td> <select name = "City"> <option value = "beijing"> beijing </opción> <opción valor = "shanghai"> shanghai </pption> <option value = "shenzhen"> shenzhen </option> </select> </td> <!-múltiple cero de texto-> <tr> <tr> <tr> Perfil </td> <td> <textarea sows = "5" cols = "60" name = "introducir"> </sextarea> </td> </tr> <tr> <td colspan = "2"> <input type = "enviar" value = "registrar"/> </td> </tr> </bear> </form> </body> </html>
Nota: La definición y el uso de la etiqueta HTML <Form> son:
<!-El atributo de acción requerido especifica dónde enviar datos del formulario al enviar un formulario. -> <Form Action = "Value">
El valor del atributo es una URL, que indica dónde enviar datos del formulario. Sus posibles valores:
URL absoluta: apunte a otros sitios (como src = "www.example.com/example.htm")
URL relativa: apunte a archivos dentro del sitio (como src = "ejemplo.htm")
Por ejemplo, el siguiente formulario tiene dos campos de entrada y un botón de envío. Al enviar el formulario, los datos del formulario se envían a una página llamada "Form_action.asp":
<Form Action = "Form_action.asp" Method = "Get"> <p> Nombre del primer: <input type = "text" name = "fname" /> </p> <p> apellido: <input type = "text" name = "lname" /> </p> <input type = "enviar" value = "enviar" /> < /form>
Se obtiene el método, por lo que la información se recupera en el método de Doget del servlet
Solicitud de clase pública Solicitude de HTTPServlet {public void doget (httpservletRequest solicitud, respuesta httpservletResponse) lanza ServletException, IOException {// Resuelve el código de poste acumulado // request.setcharacterIncoding ("Utf-8"); // Obtener datos especificados a través de los datos especificados a través de Getparameter String Username = = request.getParameter ("Nombre de usuario"); System.out.println (nombre de usuario); // Obtener un valor // Resolver el código Get GreBlle (por ejemplo, Ingrese chino) --- Use la codificación manual // username = urlencoder.encode (nombre de usuario, "ISO-8859-1"); // codificando con ISO // username = urlDecoder.decode (username, "UTF-8"); // decodificando con UTF-8 username = new String (username.getBytes ("ISO-8859-1"), "UTF-8"); System.out.println (username); // Verificación no nula if (username! = Null && username.trim (). Longitud ()> 0) {system.out.println ("username legal");} // use getparameter para obtener checkbox (casilla de verificación) para enviar datos. Por defecto, solo se pueden obtener los primeros datos. Hobby de cadena = request.getParameter ("Hobby"); // box múltiple check system.out.println (hobby); // Obtenga todos los datos enviados para la casilla de verificación --- getParametervaluesString [] Hobbies = request.getParametervalues ("Hobby"); System.out.println (Arrays.ToString (Hobbies)); System.out.println ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- request.getParamTernames (); Arrays.ToString (request.getParametervalues (nombre)));} System.out.println ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- parametermap.keySet (); for (clave de cadena: tecla) {// key es el parámetro namesystem.out.println (key + ":" + arrays.ToString (parametermap.get (key));}} public void dopost (httpservletRequest solicitud, httpServlet Respuesta) ServletException, Itget (httpServletRequest Solicitue respuesta);}}Razones para parámetros confundidos
La codificación de URL es un formato utilizado por los navegadores para empacar la entrada de formulario. El navegador obtiene todos los nombres y valores del formulario, los codifica en parámetros de nombre/valor (elimina los caracteres que no se pueden transferir, clasifican los datos, etc.) como parte de la URL o los envía por separado al servidor.
Los diferentes métodos de solicitud corresponden a diferentes soluciones:
Post ―- request.setcharacterEncoding ("Conjunto de codificación del cliente");
Obtenga resolución de código confundido manualmente
UserName = urlencoder.Encode (nombre de usuario, "ISO-8859-1"); // codifica username = urlDecoder.decode (nombre de usuario, "utf-8"); // decodificar con UTF-8
Simplifique el método de escritura anterior: username = new String (username.getBytes ("ISO-8859-1"), "UTF-8");
Obtenga configuración de conflicto Tomcat Conjunto de caracteres decodificado predeterminado
En Tomcat/conf/server.xml
Agregue una propiedad uriEncoding = "UTF-8" en el conector
Conclusión: durante el desarrollo, intente no modificar el conjunto de decodificación predeterminado de TomCat. Intente usar la publicación tanto como sea posible para enviar una solicitud. Si tiene que usar Get, codifíquelo manualmente.