1. Get digunakan untuk mendapatkan data daripada pelayan, manakala Post digunakan untuk memindahkan data ke pelayan.
2. Get menambah data dalam bentuk ke URL yang ditunjukkan oleh tindakan dalam bentuk variable=value, dan kedua-duanya disambungkan menggunakan "?", dan setiap pembolehubah disambungkan menggunakan "&"; untuk menyambung Data dalam borang diletakkan dalam badan data borang dan dihantar ke URL yang ditunjukkan oleh tindakan mengikut pembolehubah dan nilai yang sepadan.
3. Get tidak selamat kerana semasa proses penghantaran, data diletakkan dalam URL yang diminta, dan banyak pelayan sedia ada, pelayan proksi atau ejen pengguna akan merekodkan URL yang diminta dalam fail log dan kemudian meletakkan Somewhere, mungkin terdapat beberapa maklumat peribadi yang boleh dilihat oleh pihak ketiga. Selain itu, pengguna juga boleh melihat data yang diserahkan terus pada pelayar, dan beberapa mesej sistem dalaman akan dipaparkan di hadapan pengguna. Semua operasi Pos tidak dapat dilihat oleh pengguna.
4. Jumlah data yang dipindahkan oleh Get adalah kecil, terutamanya kerana ia terhad oleh panjang URL manakala Post boleh memindahkan sejumlah besar data, jadi anda hanya boleh menggunakan Post apabila memuat naik fail (sudah tentu ada sebab, yang akan disebut kemudian) ).
5. Dapatkan mengehadkan nilai set data dalam borang Borang kepada aksara ASCII manakala Pos menyokong keseluruhan set aksara ISO10646. Lalai adalah menggunakan pengekodan ISO-8859-1
6. Get ialah kaedah lalai Borang.
Perbandingan berikut sangat berguna:
Saya telah membuat pembangunan web Java untuk sementara waktu, dan terdapat masalah yang selalu mengganggu saya, iaitu kacau-bilau masalah kod. Pada asasnya saya sedang mencari penyelesaian dalam talian (terdapat banyak maklumat dalam talian), dan terdapat banyak pengenalan tentang cara menyelesaikan masalah kod yang kacau ini, tetapi hanya sedikit daripada mereka yang menjelaskan selok-belok masalah dengan jelas. Kadang-kadang selepas membaca beberapa artikel, saya fikir saya faham, tetapi semasa pembangunan masalah kod bercelaru kelihatan seperti hantu dan menakutkan orang. Artikel ini adalah pengumpulan beberapa pemahaman tentang perjuangan jangka panjang saya dengan watak-watak yang kacau.
Borang ini mempunyai dua kaedah untuk menghantar data ke pelayan, dapatkan dan hantar masing-masing.
(1) Dapatkan penyerahan
1. Mula-mula, mari kita bincangkan tentang cara borang klien (penyemak imbas) menggunakan kaedah get untuk mengekod data dan menyerahkannya kepada pelayan.
Untuk kaedah dapatkan, data digabungkan di belakang url yang diminta sebagai parameter, seperti: http://localhost:8080/servlet?msg=abc
(masalah bercelaru yang sangat biasa Ia adalah akan muncul. Jika aksara Cina atau aksara khas lain muncul dalam URL, seperti: http://localhost:8080/servlet?msg=Hangzhou, bahagian pelayan mudah untuk mendapatkan aksara yang kacau selepas penyambungan URL selesai, penyemak imbas akan memproses pengekodan URL, dan kemudian dihantar ke pelayan Proses pengekodan URL adalah untuk menggunakan sebahagian daripada URL sebagai aksara, mengekodnya ke dalam kod bait perduaan mengikut kaedah pengekodan tertentu (seperti utf-8, gbk, dsb.), dan kemudian gunakan Diwakili oleh rentetan 3 aksara "%xy", di mana xy ialah perwakilan heksadesimal dua digit bait. Perkara yang saya bincangkan di sini mungkin tidak jelas Untuk pengenalan terperinci, anda boleh membaca pengenalan kelas java.net.URLEncoder di sini. Selepas memahami proses pengekodan URL, kita dapat melihat dua isu yang sangat penting Pertama: aksara yang memerlukan pengekodan URL secara amnya ialah aksara bukan ASCII (secara amnya), dan secara umum, ia adalah teks selain daripada huruf Inggeris ( Seperti. : Cina, Jepun, dsb.) mesti dikodkan URL, jadi bagi kami, URL dengan huruf Inggeris tidak akan menyebabkan pelayan mendapat aksara bercelaru disebabkan oleh aksara Cina atau khas dalam URL:Yang kaedah pengekodan adakah pengekodan URL digunakan untuk mengekod aksara? Ini adalah masalah penyemak imbas, dan pelayar yang berbeza mempunyai pendekatan yang berbeza Pelayar versi Cina biasanya menggunakan GBK secara lalai Anda juga boleh menggunakan UTF-8 dengan menetapkan pelayar yang berbeza dalam kaedah pengekodan yang berbeza, begitu banyak tapak web menggunakan JavaScript untuk mengekod URL bahasa Cina atau aksara khas dalam URL, dan kemudian menyambung URL untuk menyerahkan data, iaitu, pengekodan URL dilakukan untuk pelayar Kelebihannya ialah laman web itu boleh satukan kaedah pengekodan data yang dikemukakan oleh kaedah get. Selepas pengekodan URL selesai, URL kini menjadi aksara dalam julat ASCII, dan kemudian ditukar kepada perduaan menggunakan pengekodan iso-8859-1 dan dihantar bersama dengan pengepala permintaan. Apa yang saya ingin katakan beberapa perkataan lagi di sini ialah untuk kaedah dapatkan, tiada entiti permintaan, dan URL yang mengandungi data berada dalam pengepala permintaan Sebab mengapa pengekodan URL digunakan Saya secara peribadi berpendapat ialah: untuk pengepala permintaan Pada akhirnya, data tulen 101010... akan dikodkan ke dalam binari menggunakan kaedah pengekodan iso-8859-1 dan dihantar melalui Internet Jika aksara khas yang mengandungi aksara Cina dan aksara lain dikodkan secara langsung dalam iso -8859-1, maklumat akan hilang, jadi perlu melakukan pengekodan URL terlebih dahulu.
2. Bagaimanakah pihak pelayan (tomcat) mendapatkan data dan menyahkodnya.
Langkah pertama ialah menyahkod data menggunakan iso-8859-1 Untuk kaedah dapatkan, tomcat mendapatkan data menggunakan aksara pengepala permintaan dalam julat ASCII aksara, maka ia masih dalam keadaan %XY selepas pengekodan URL Mari kita bincangkan dahulu tentang proses pembangun memperoleh data. Biasanya, semua orang menggunakan request.getParameter("nama") untuk mendapatkan data parameter Data yang kami perolehi dalam objek permintaan telah dinyahkod, dan ia tidak boleh dinyatakan dalam program semasa proses penyahkodan orang baru berkata Anda boleh menggunakan request.setCharacterEncoding("Character Set") untuk menentukan kaedah penyahkodan Sebenarnya, ia tidak boleh Lihat perihalan API rasmi servlet untuk penjelasan kaedah ini: Mengatasi nama pengekodan aksara yang digunakan dalam badan permintaan ini Kaedah ini mesti dipanggil sebelum membaca parameter permintaan atau membaca input menggunakan getReader(). Jadi apakah kaedah pengekodan yang digunakan untuk menyahkod data? Ini adalah masalah tomcat lalainya ialah iso-8859-1, jadi kita boleh mengetahui mengapa permintaan mendapatkan dengan parameter Cina bercelaru di bahagian pelayan , UTF-8 atau GBK biasanya digunakan untuk mengekod URL data Jelas sekali tidak mungkin untuk menggunakan penyahkod URL iso-8859-1 di sini, kita boleh terus
Kod Java
1 String( request.getParameter("nama") , dalam talian Artikel biasanya dikonfigurasikan dalam tomcat
Kod Xml
1
Ini membolehkan tomcat menggunakan penyahkod URL yang ditentukan selepas mendapatkan data Pengenalan penyahkod URL ada di sini
(1) penghantaran pos
1. Pelanggan (pelayar) Bagaimana. borang menggunakan kaedah pos untuk mengekod data dan menyerahkannya kepada pelayan.
Data yang akan dihantar dalam kaedah pos juga memerlukan pengekodan URL, jadi apakah kaedah pengekodan yang digunakannya?
Jika terdapat segmen dalam fail html di mana borang itu terletak,
Secara amnya semua orang berpendapat bahawa kod ini adalah untuk memberitahu penyemak imbas set aksara yang hendak digunakan untuk mentafsir halaman web, jadi tapak web akan meletakkannya di hujung hadapan kod html untuk mengelakkan aksara yang bercelaru. ia juga mempunyai fungsi lain: Nyatakan kaedah pengekodan URL untuk data yang diserahkan melalui kaedah pos dalam borang . Ia boleh dilihat dari sini bahawa untuk kaedah get, kaedah pengekodan pengekodan URL data oleh penyemak imbas ditentukan oleh tetapan penyemak imbas (ia boleh ditentukan secara seragam dengan js), dan untuk kaedah pos, pemaju boleh nyatakannya. 2. Bagaimanakah pihak pelayan (tomcat) mendapatkan data dan menyahkodnya.
Jika anda menggunakan tetapan lalai tomcat dan tidak membuat sebarang tetapan pengekodan seperti penapis, maka ia juga akan dinyahkod menggunakan iso-8859-1, tetapi request.setCharacterEncoding("Set Aksara") boleh berguna.
Saya mendapati bahawa premis yang disebut oleh tomcat di atas ialah kaedah pengekodan tidak dinyatakan dalam pengepala permintaan Jika kaedah pengekodan dinyatakan dalam pengepala permintaan, ia akan dengan cara ini. Terdapat 2 artikel disyorkan, alamatnya
Terangkan pengekodan URL dalam istilah mudah:
http://www.cnblogs.com/ yencain/ articles/1321386.html; Masalah aksara bercelaru apabila borang menyerahkan data menggunakan kaedah siaran:
http://wanghuan8086.javaeye. com/blog/173869
Sangat penting untuk menggunakan post Jika terdapat bahagian dalam fail html di mana borang itu terletak,