Primeiro, use uma interface de envio de usuário como exemplo (caixa de texto, caixa de senha, seleção, formulário suspenso etc.), o efeito é o seguinte
<! Doctype html public "-// w3c // dtd html 4.01 transitório // pt" "http://www.w3.org/tr/html4/loose.dtd"><html> <Header>" METTP-HTTP-EQUIV = CONTEÚTIO " charset=UTF-8"><title>User Registration</title></head><body><!-- User Registration--><form action="/requesttest/request5" method="get"><table><!-- Text input box--><tr><td>Username</td><td><input type="text" name="username"/></td></tr><!-- Password Caixa-> <tr> <td> senha </td> <td> <input type = "senha" name = "senha"/> </td> </tr> <!-botão de rádio rádio-> <tr> <td> gênero </td> <td> <input Type = "radio" "gênero" gênero ") Feminino </td> </tr> <!-caixa de seleção-> <tr> <td> hosts </td> <td> <input type = "caixa de seleção" name = "hobby" value = "esportes"/> esportes <input type = "caixa de seleção" name = "hobby" value = "music/> music <////" types <BexBox "=" Nome "", "Nome", "Hobby" Value = "Music/> Music </input Type =" CHECT (caixa "=" Nome "" " Caixa-> <tr> <td> cidade </td> <select name = "city"> <opção value = "beijing"> beijing </pption> <opção value = "shanghai"> shanghai </option> </td) Perfil </td> <td> <textarea linhas = "5" cols = "60" name = "introdução"> </sexttarea> </td> </tr> <tr> <td colspan = "2"> <input type = "submit" value = "registra"/> </td> </tr> </tabela> </forma>
Nota: a definição e o uso da tag html <form> são:
<!-Atributo de ação necessário Especifica para onde enviar os dados do formulário ao enviar um formulário. -> <Form Action = "Value">
O valor do atributo é um URL, indicando onde enviar dados de formulário. Seus valores possíveis:
URL absoluto - aponte para outros sites (como src = ”www.example.com/example.htm”)
URL relativo - aponte para arquivos no site (como src = ”exemplo.htm”)
Por exemplo, o formulário a seguir possui dois campos de entrada e um botão de envio. Ao enviar o formulário, os dados do formulário são enviados para uma página chamada "form_action.asp":
<Form Action = "form_action.asp" Method = "get"> <p> Primeiro nome: <input type = "text" name = "fname" /> </p> <p> Sobrenome: <input type = "text" name = "lname" /> </p> <input Type = "submit" = "submit" / /> < /forma "
O método é obtido, então as informações são recuperadas no método doget do servlet
public class RequestServlet5 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Solve post garbled code// request.setCharacterEncoding("utf-8");// Get specified data through getParameter String username = request.getParameter ("nome de usuário"); System.out.println (nome de usuário); // obtenha um valor // Resolva o código de obtenha um código ilegal (por exemplo, digite chinês) --- use codificação manual // nome de usuário = urlencoder.encode (nome de usuário, "iso-8859-1"); // codificando com iso // nome de usuário = urldecoder.decode (username, "utf-8"); // decodificação com utf-8 nome de usuário = new string (userName.getbytes ("ISO-8859-1"), "UTF-8"); System.out.println (nome de usuário); // Verificação não null if (nome de usuário! = Null && userram.trim (). Length ()> 0) {system.out.println ("nome de usuário legal");} // use getParameter para obter a caixa de seleção (caixa de seleção) para enviar dados. Por padrão, apenas os primeiros dados podem ser obtidos. String hobby = request.getParameter ("hobby"); // múltiplo-check box System.out.println (hobby); // Obtenha todos os dados enviados para a caixa de seleção --- getParameTerValuessTring [] hobbies = request.getParameterValues ("hobby"); system.out.println (Arrays.toString (hobbies)); System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- request.getParameterNames (); Arrays.ToString (request.getParameterValues (nome)));} system.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- parametermap.KeySet (); para (String Key: Keys) {// Key é o parâmetro namesystem.out.println (key + ":" + Arrays.toString (parameTerMap.get (key));}}} public void DoPOST (HTTPSEVLETLEETETEXEX); resposta);}}Razões para parâmetros distorcidos
A codificação de URL é um formato usado pelos navegadores para empacotar a entrada de formulários. O navegador obtém todos os nomes e valores do formulário, os codifica nos parâmetros de nome/valor (remove os caracteres que não podem ser transferidos, classifica dados etc.) como parte do URL ou os envia separadamente para o servidor.
Diferentes métodos de solicitação correspondem a diferentes soluções:
postar ―- request.setcharacterencoding ("Conjunto de codificação do cliente");
Obtenha o código iluminado resolve manualmente
nome de usuário = urlencoder.encode (nome de usuário, "iso-8859-1"); // codifica nome de usuário = urldecoder.decode (nome de usuário, "utf-8"); // decodificar com UTF-8
Simplifique o método de escrita acima: nome de usuário = new String (nome de usuário.getBytes ("ISO-8859-1"), "UTF-8");
Obtenha Configuração de Configuração Tomcat Decodificado Define
no tomcat/conf/server.xml
Adicione uma propriedade uriencoding = "UTF-8" no conector
Conclusão: Durante o desenvolvimento, tente não modificar o conjunto de decodificação padrão do Tomcat. Tente usar o POST o máximo possível para enviar uma solicitação. Se você precisar usar o GET, codificá -lo manualmente.