Pertama gunakan antarmuka pengiriman pengguna sebagai contoh (kotak teks, kotak kata sandi, pemilihan, formulir tarik-turun, dll.), Efeknya adalah sebagai berikut
<!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" content="text/html; 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 box-> <tr> <td> Kata Sandi </td> <td> <input type = "password" name = "password"/> </td> </tr> <!-Radio Radio Radio-> <tr> <td> Jenis Kelamin </td> <td> <Input Type = "Radio" Nama = "Gender" Value = "Male" Male "Male =" Radio "Name =" Radio "Name =" Gender "MALE" MALE "MALE" MALE "MALE =" Radio " Female</td></tr><!-- Check box--><tr><td>Hosts</td><td><input type="checkbox" name="hobby" value="sport" /> Sports<input type="checkbox" name="hobby" value="music" /> Music<input type="checkbox" name="hobby" value="game" /> Games</td></tr><!-- Pull-down box-> <tr> <td> City </td> <pilih name = "city"> <option value = "beijing"> beijing </pection> <option value = "shanghai"> shanghai </pect> <opsi value = "shenzhen"> shenzhen </option> </pilih> </td> <! Profil </td> <td> <textarea rows = "5" cols = "60" name = "memperkenalkan"> </pextarea> </td> </tr> <tr> <td colspan = "2"> </tangkis input = "value =" register "/> </td> </tr> </tabel> </Form
Catatan: Definisi dan penggunaan tag HTML <Form> adalah:
<!-Atribut Tindakan yang Diperlukan Menentukan ke mana harus mengirim data formulir saat mengirimkan formulir. -> <Form Action = "Value">
Nilai atribut adalah URL, menunjukkan ke mana harus mengirim data formulir. Nilai -nilainya yang mungkin:
URL Absolute - Arahkan ke situs lain (seperti src = ”www.example.com/example.htm”)
URL Relatif - Arahkan ke file dalam situs (seperti src = "example.htm")
Misalnya, formulir berikut memiliki dua bidang input dan tombol kirim. Saat mengirimkan formulir, data formulir dikirim ke halaman bernama "form_action.asp":
<Form Action = "form_action.asp" Method = "get"> <p> Nama depan: <input type = "text" name = "fname" /> </p> <p> Nama belakang: <input type = "teks" name = "lname" /> < /p> <input type = "kirim" value = "kirim" /< /form>
Metode ini didapat, jadi informasi diambil dalam metode doget dari servlet
Public Class RequestSerVlet5 memperluas httpservlet {public void doGet (httpservletRequest, httpservletResponse response) melempar servletException, ioException {// menyelesaikan kode yang dipecat // request.setcharacterencoding ("UTF-8");/ GET GET DATA DALAM PERSETIK // DAFTAR. request.getParameter ("nama pengguna"); System.out.println (nama pengguna); // Dapatkan nilai // selesaikan mendapatkan kode kacau (misalnya, masukkan Cina) --- Gunakan encoding manual // username = urlencoder.encode (nama pengguna, "iso-8859-1"); // encoding dengan iso // username = urldecoder.decode (nama pengguna, "utf-8"); // decoding dengan USERNAME UTF-8 = string baru (username.getbytes ("iso-8859-1"), "UTF-8"); System.out.println (nama pengguna); // verifikasi non-null if (username! = Null && username.trim (). Length ()> 0) {System.out.println ("Username legal");} // Gunakan getParameter untuk mendapatkan kotak centang (kotak centang) untuk mengirimkan data. Secara default, hanya data pertama yang dapat diperoleh. Hobby string = request.getParameter ("hobi"); // System Box Multiple-Check.out.println (hobi); // Dapatkan semua data yang dikirimkan untuk kotak centang --- getParameterValuessTring [] hobbies = request.getParametervalues ("Hobby"); System.out.println (arrays.tostring (hobi)); System.out.println ("------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- request.getParameternames (); while (names.hasmoreElements ()) {string name = name.nextElement (); // Dapatkan setiap name parameter System.out.println (name + ":" Arrays.toString(request.getParameterValues(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, response);}}Alasan parameter kacau
Pengkodean URL adalah format yang digunakan oleh browser untuk mengemas input formulir. Browser mendapatkan semua nama dan nilai dari formulir, mengkodekannya dalam parameter nama/nilai (menghapus karakter yang tidak dapat ditransfer, memberi peringkat data, dll.) Sebagai bagian dari URL atau secara terpisah mengirimkannya ke server.
Metode permintaan yang berbeda sesuai dengan solusi yang berbeda:
POST ―- request.setcharacterencoding ("kumpulan pengkodean klien");
Dapatkan Kode Terpisah
username = urlencoder.encode (nama pengguna, "iso-8859-1"); // encode nama pengguna = urldecoder.decode (nama pengguna, "UTF-8"); // decode dengan UTF-8
Sederhanakan metode penulisan di atas: username = string baru (username.getbytes ("iso-8859-1"), "UTF-8");
Dapatkan Konfigurasi Terpisah Tomcat Default Decoded Character Set
di tomcat/conf/server.xml
Tambahkan properti Uriencoding = "UTF-8" di konektor
Kesimpulan: Selama pengembangan, cobalah untuk tidak memodifikasi set decoding default Tomcat. Silakan coba gunakan posting sebanyak mungkin untuk mengirimkan permintaan. Jika Anda harus menggunakan GET, encode secara manual.