Filter adalah cuplikan kode yang dapat digunakan kembali yang dapat digunakan untuk mengonversi permintaan, tanggapan, dan informasi header HTTP. Filter tidak seperti servlet. Itu tidak dapat menghasilkan permintaan atau tanggapan. Ini hanya memodifikasi permintaan ke sumber daya tertentu atau memodifikasi respons dari sumber daya tertentu.
Baru -baru ini, saat menggunakan skrip, saya menggunakan cookie untuk mengidentifikasi komputer, menambahkan penyaringan, dan pelayanan dan filter yang dipelajari dengan cermat. Perbedaan utamanya adalah:
Siklus hidup filter umumnya melewati tiga tahap berikut:
Karakteristik servlet adalah:
inisialisasi
Metode init () dipanggil ketika wadah pertama memuat filter. Kelas ini berisi referensi ke objek konfigurasi filter dalam metode ini. Filter kami sebenarnya tidak perlu melakukan ini, karena tidak ada informasi inisialisasi yang digunakan, dan di sini hanya untuk tujuan demonstrasi.
menyaring
Sebagian besar waktu filter dikonsumsi di sini. Metode dofilter dipanggil oleh wadah, dan referensi ke permintaan servlet, respons servlet dan objek rantai filter dalam rantai permintaan/respons dilewatkan pada saat yang sama. Filter kemudian memiliki kesempatan untuk memproses permintaan, lulus tugas pemrosesan ke sumber daya berikutnya dalam rantai (dengan memanggil metode dofilter pada referensi objek rantai filter), dan kemudian memproses respons ketika kontrol pemrosesan kembali ke filter.
Pengrusakan
Wadah memanggil metode Destroy () segera sebelum pengumpulan sampah untuk dapat menjalankan kode pembersihan yang diperlukan.
Mengenai rantai.dofilter (permintaan, respons) fungsinya adalah meneruskan permintaan ke objek berikutnya pada rantai filter. Yang berikutnya di sini mengacu pada filter berikutnya, jika tidak ada filter, itu adalah sumber daya yang Anda minta. Secara umum, filter adalah satu rantai, dan hanya ada beberapa konfigurasi di web.xml. Terhubung satu per satu
Permintaan -> Filter1 -> Filter2 -> Filter3 -> .... -> Sumber Daya Permintaan.
Filter adalah operasi rantai, jadi ketika memproses satu filter, Anda akhirnya harus melompat ke servlet untuk menanggapi permintaan.
Jika Anda melewati rantai, metode rantai. Metode untuk memanggil filter adalah untuk mengonfigurasinya di web.xml, dan Anda perlu mengkonfigurasi pola URL yang sama dengan servlet yang perlu Anda integrik.
<!-- Configure a filter --> <filter> <filter-name>suibianxie</filter-name> <filter-class>com.etoak.filter.MyEncoding</filter-class> <!-- Configure a private parameter --> <init-param> <param-name>mycode</param-name> <param-value>gbk</param-value> </init-param> </filter> <!-- The Urutan Interception terkait dengan urutan pemetaan-> <STERFERTER-MAPPING> <STERFER-NAME> Suibianxie </tiler-name> <!-Perhatikan bahwa ini harus konsisten dengan pola url dari servlet yang akan dicegat, yang berarti filter> filter sebelum servlet-<url-pola>/servlet/test </test </Url-Polat> </colatter </catter </catter </catter </catter </catter </catter </catter </catter </catter </patter-MATER-MATER-MATERS> <! <nilter-name> suibianxie2 </tiler-name> <nilter-class> com.etoak.filter.naming </tiler-class> </filter> <nilter-Mapping> <nilter-name> Suibianxie2 </filter-name> <righlet> servlet> test/tes </Url-Pattern> </filter-mapping> <servlet> <lervlet> <lervlet> <lervlet> <lervlet> </servlet> </test </Url-Pattern> </filter-mapping> <lervlet> <lervlet> <servlet-class> com.etoak.servlet.test </servlet-class> </servlet> <servlet-papping> <servlet-name> test </servlet-name> <Rerl-pattern>/servlet/test </rerl-pola> </servlet-mapping>
Di atas adalah perbedaan dan hubungan antara servlet dan filter yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu semua orang!