Semua orang pasti sudah familiar dengan servlet, saya akan mengulasnya hari ini, jika ada yang ditulis dengan buruk atau salah, saya harap netizen akan mengkritik dan memperbaikinya. Hari ini kita hanya akan membahas dua metode get dan post. Ada banyak perbedaan di antara keduanya, sehingga metode pengkodeannya akan berbeda. Masalah posting yang kacau lebih mudah diselesaikan. Mari kita bahas secara singkat tentang protokol http agar saya bisa lebih baik memahaminya. Prinsip-prinsip ingatan yang baik dan perbedaan di antara mereka.
Baik metode get maupun metode posting didasarkan pada protokol http. Tujuannya adalah untuk menyediakan metode penerbitan dan penerimaan halaman html. Klien memulai permintaan dan server merespons.
Pesan permintaan lengkap mencakup: baris permintaan, beberapa header pesan, dan konten entitas permintaan
Baris permintaan mencakup metode permintaan (dapatkan atau posting), jalur sumber daya (alamat yang akan diakses), nomor versi http (http1.1)
Beberapa header pesan (misalnya, termasuk informasi kernel browser (agen-pengguna), siapa yang membuka halaman induknya (referensi), dll.
Terdapat baris kosong di konten entitas permintaan dan header pesan untuk memisahkan header pesan dan konten entitas permintaan yang dikirimkan oleh pengguna.
Pesan respons lengkap mencakup: baris status, satu atau lebih header respons, baris kosong, dan entitas respons
Baris status: termasuk nomor versi protokol http, kode status, dan deskripsi alasan
Kode status umum: 200 normal
404: Sumber daya yang diminta tidak ada
500: Kesalahan internal server
Setelah membahas secara singkat tentang http, kita dapat memperkenalkan perbedaan antara metode get dan post.
dapatkan metode:
Metode get menempatkan konten yang dikirimkan di akhir url, dan panjangnya dibatasi. Baik post maupun get didasarkan pada protokol http. Metode get meletakkannya di baris permintaan karena parameternya ada di url, dan metode posting Ini ditempatkan dalam konten entitas permintaan. Metode posting relatif aman. Browser tidak menyimpan informasi cache, sedangkan metode get akan menyimpan cache. Anda dapat melihat konten yang dikirimkan dari riwayat browser, dan metode get mempunyai batasan panjang postingan no.
Justru karena posisi protokol http saat mengirimkan data pada metode get dan metode post berbeda, maka metode pengkodean untuk menyelesaikannya juga akan berbeda.
Memecahkan masalah karakter yang kacau dalam mode posting:
Dalam metode layanan servlet (metode doGet atau doPost juga dapat diterima), atur pengkodean permintaan ke UTF-8
req.setCharacterEncoding("UTF-8");
Dengan cara ini, tidak ada masalah dengan penyandian permintaan, dan kemudian penyandian respons juga disetel ke UTF-8;
resp.setCharacterEncoding("UTF-8");
Dengan cara ini tidak ada masalah dengan pengkodean responnya, tetapi setelah ditulis seperti ini, mungkin masih ada masalah di browser, karena browser tidak mengetahui format pengkodean Anda apa, sehingga menampilkannya sesuai dengan format default browser, jadi Untuk menyetel metode pengkodean tampilan browser ke UTF-8, pernyataannya adalah sebagai berikut:
resp.setContextType("teks/html;charset=utf-8");
Pada saat yang sama, Anda juga harus memastikan bahwa pengkodean alat pengembangan Anda konsisten dengan pengkodean proyek, jika tidak, karakter yang kacau dapat terjadi. Di sini kami mengambil UTF-8 sebagai contoh.
Memecahkan masalah karakter kacau dalam metode get:
Selain operasi di atas, metode get juga perlu menambahkan kalimat ke file konfigurasi server.xml di direktori conf Tomcat.
<Konektor port = "8080" protokol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" />
Setelah dimodifikasi, jadilah itu
<Konektor port = "8080" protokol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" userBodyEncodingForURI = "benar" />
Metode modifikasi ini lebih fleksibel, memungkinkan format pengkodean URL sama dengan format pengkodean halaman, atau dapat diatur ke format tetap, seperti
<Konektor port = "8080" protokol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" EncodingForURI = "UTF-8" />
Dengan cara ini pada dasarnya tidak akan ada masalah. Jika masih ada masalah, Anda harus menggunakan metode di String untuk mengubah karakter kacau pada halaman ke format yang Anda inginkan tidak akan berhasil. Bagaimana cara menggunakannya?
Selain operasi di atas, format pengkodean database juga harus diatur sama dengan proyek. Di sini diubah menjadi UTF-8 karena keterbatasan waktu, penulisan kasar dan banyak hal yang dihilangkan. tapi itu seharusnya cukup untuk menyelesaikan metode pengkodean servlet.
Anda dapat menggunakan js saat menelepon, seperti:
function ceshi() {window.location.href = "UserServlet?uname=zhangsan&realname=" + encodeURIComponent("Halo semuanya");}
Dengan cara ini, karakter Cina Hello Everyone tidak lagi ditampilkan di bilah alamat (ikat kalimat ini ke tombol kirim), dan Anda dapat mengirimkannya ke servlet yang sesuai. Metode penyelesaian karakter yang kacau ini juga berlaku untuk jsp
Ngomong-ngomong, saya harus membicarakan sesuatu yang berhubungan dengan servlet, yaitu forward dan redirect. Forward hanya bisa melompat di proyek saat ini, dan redirect bisa melompat ke luar Izinkan saya berbicara tentang sesuatu yang menurut saya penting, yaitu apa pun yang digunakan, setelah menulis forward dan redirect, pastikan untuk menambahkan return. Jika tidak, pernyataan berikut akan tetap dijalankan setelah menambahkan return, berikut ini pernyataan Kesalahan akan dilaporkan, yang mencegah halaman yang sama melompat beberapa kali. Netizen yang kurang suka melakukan kesalahan secara tidak sengaja, terima kasih atas kerjasamanya, dan terima kasih kepada netizen yang telah membantu saya memperbaiki kesalahan saya, karena dengan cara ini saya akan terus berkembang.