1. Dalam aplikasi Spring, kami memiliki dua penggunaan penyaringan, satu adalah interseptor, dan yang lainnya tentu saja filter. Kami akan memperkenalkan penggunaan filter di Springboot di sini. Penggunaan filter di SpringMVC pada dasarnya sama, tetapi ada sedikit perbedaan dalam konfigurasi.
2. Fungsi filter memungkinkan pengguna untuk mengubah permintaan dan memodifikasi respons. Filter bukan servlet, tidak dapat menghasilkan respons. Ini dapat melakukan preprocess permintaan sebelum permintaan mencapai servlet, atau dapat menangani respons saat meninggalkan servlet. Dengan kata lain, filter sebenarnya adalah "servlet chaining" (rantai servlet).
Filter termasuk:
1) mencegat sebelum servlet dipanggil;
2) Periksa permintaan servlet sebelum servlet dipanggil;
3) Ubah header permintaan dan data permintaan sesuai kebutuhan;
4) memodifikasi header respons dan data respons sesuai kebutuhan;
5) dicegat setelah servlet dipanggil.
1. Skenario aplikasi filter
Melalui pemahaman filter filter, kita dapat mengetahui bahwa beberapa pemrosesan dapat dilakukan dalam tiga situasi berikut:
1> Putuskan apakah sumber daya target perlu diakses dengan mengendalikan panggilan ke rantai.dofilter.
Misalnya, Anda dapat memverifikasi dalam izin pengguna, dll. Tentukan apakah pengguna memiliki izin untuk mengakses sumber daya tertentu, memiliki izin untuk melepaskan, dan tidak mengeksekusi metode rantai.dofilter tanpa izin.
2> Beberapa tujuan dicapai dengan melakukan beberapa pemrosesan sebelum memanggil metode rantai.dofilter.
Misalnya, selesaikan masalah kode kacau Cina, dll. Sebelum metode dofilter, pengkodean pengkodean dan respons permintaan pengaturan dapat dilakukan. Anda bahkan dapat merangkum dan menghias antarmuka permintaan untuk menangani masalah Metode Permintaan GET China (menulis ulang permintaan yang sesuai. Metode GetParameter).
3> Beberapa tujuan dicapai dengan melakukan beberapa pemrosesan setelah memanggil metode rantai.dofilter.
Misalnya, kompres seluruh situs web. Sebelum memanggil metode rantai. Di dalam kelas A, konten output di -cache ke dalam stream ByteArrayOutputStream, dan kemudian setelah rantai. Metode Dofilter dieksekusi, data cache aliran ByteArrayOutputStream di Kelas A diperoleh dan dikompresi dengan aliran GzipoutputStream.
2. Prinsip intersepsi filter
Ada metode dofilter di antarmuka filter. Ketika pengembang menulis kelas filter untuk mengimplementasikan metode dofilter dan mengonfigurasi sumber daya web mana yang akan dicegat, server web akan memanggil metode dofilter filter terlebih dahulu sebelum memanggil metode layanan sumber daya web (ditentukan oleh mekanisme akses internal server).
3. Aturan penyaringan
// Saring semua sumber daya dalam aplikasi. Semua file di bawah root aplikasi saat ini termasuk semua file di bawah subdirektori multi-level. Perhatikan bahwa * didahului oleh "/" Registration.addurlPatterns ("/ *"); // Saring sumber daya file tipe yang ditentukan, semua file HTML di bawah root aplikasi saat ini. Catatan: Tidak ada "/" sebelum *.html, jika tidak, registrasi kesalahan. // Saring semua file di bawah direktori yang ditentukan. Semua file di bawah subdirektori folder_name (dapat berupa subdirektori multi-level) di bawah akar aplikasi saat ini.addurlpatterns ("/folder_name/*"); // Saring registrasi file yang ditentukan.addurlPatterns ("/index.html");AKU AKU AKU. Aplikasi
@Komponen @servletComponentscan @webfilter (urlpatterns = "/login/*", filtername = "loginfilter") kelas publik LoginFilter mengimplementasikan filter {@override public void init (filterconfig filterconfig) Layanan servletre {}} @override void dofilterse dofilterse) servletreesception {} @override void dofil Dofilterse) ServeLreSception {} @override void dofil dofilterse dofilters ServletResponse, filterchain filterChain) melempar ioException, servletException {} @override public void dashar () {}}4. Penjelasan:
1. Tujuan anotasi @Component ini adalah untuk menyerahkan loginfilter ke wadah untuk diproses. Yaitu membuat loginfilter bekerja
2. @SerVletComponentS dapat digunakan untuk memindai @webfilter untuk membuat @webfilter berfungsi. Tentu saja, dimungkinkan juga untuk menjelaskan tabung kawat servlet. @SerVleTComponents ini yang terbaik untuk menghapus aplikasi, konfigurasi umum. Saya hanya memiliki satu filter di sini, jadi saya tidak menulisnya di aplikasi.
3. @WebFilter sudah jelas digunakan. Tautan apa yang digunakan untuk memfilter dan mengapa nama filter?
5. Pengantar singkat untuk penggunaan filter di SpringMVC
1. Metode penulisan masih sama. Ini mewarisi filter untuk mengimplementasikan 3 metode untuk memprosesnya.
2. Lemparkan ke dalam wadah: Ini perlu dikonfigurasi di web.xml
<nilter> <nilter-name> LoginFilter </tiler-name> <nilter-class> com.troy.boot.filter.loginfilter </tiler-class> </tilter> <nilter-Mapping> <nilter-name> LoginFilter </filter-name> <rerl-pattern>/*</url-pattern> </filter-phather>
3. Anda dapat mempelajari penggunaan spesifik sendiri.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.