1. Pemintas dan penapis kedua-duanya merangkumi idea AOP, dan kedua-duanya boleh memintas kaedah permintaan dengan meningkatkan pelaksanaan kaedah.
2. Kedua-dua pemintas dan penapis boleh menetapkan susunan pelaksanaan melalui anotasi Pesanan
Dalam pembangunan Web Java, penapis (Penapis) dan pemintas (Interceptor) adalah komponen biasa yang digunakan untuk memproses antara permintaan dan tindak balas. Perbezaan utama mereka adalah seperti berikut:
Lokasi berjalan adalah berbeza: penapis ialah komponen yang dijalankan antara pelayan web dan bekas Servlet, yang boleh memintas semua permintaan dan respons masuk dan keluar daripada bekas; semasa pemintasan Pengawal memintas dan mengendalikan kaedah pengawal tertentu dan hanya dilaksanakan di dalam pengawal.
Arahan pelaksanaan adalah berbeza: susunan pelaksanaan penapis ditentukan mengikut susunan ia diisytiharkan dalam fail web.xml dan ia dilaksanakan mengikut susunan pengisytiharan; manakala perintah pelaksanaan pemintas adalah Ia ditentukan mengikut susunan pengisytiharan dalam fail konfigurasi, yang bermaksud bahawa pemintas boleh menentukan perintah itu.
Fungsinya berbeza: penapis digunakan terutamanya untuk pramemproses dan menapis permintaan, seperti menetapkan set aksara, pengesahan log masuk, pengelogan, dsb. manakala pemintas digunakan terutamanya untuk praproses dan penapis Melaksanakan kawalan proses, seperti pengesahan kebenaran, suntikan parameter, pengendalian pengecualian, dsb.
Bergantung pada rangka kerja yang berbeza: penapis dilaksanakan berdasarkan spesifikasi Servlet dan tidak bergantung pada mana-mana rangka kerja khusus biasanya dilaksanakan untuk rangka kerja atau perpustakaan tertentu, seperti Spring MVC Interceptors dalam rangka kerja.
Ringkasnya, penapis dan pemintas mempunyai perbezaan tertentu dalam kaedah pelaksanaan, fungsi dan senario penggunaan Pembangun boleh memilih komponen yang sesuai mengikut keperluan tertentu.
Konfigurasikan lapisan web dalam penapis web.xml
Dalam pembangunan Web Java, penapis digunakan terutamanya untuk mempraproses dan menapis permintaan Anda boleh membuat penapis tersuai dengan melaksanakan antara muka javax.servlet.Filter. Langkah-langkah khusus adalah seperti berikut:
Buat kelas Java, laksanakan antara muka javax.servlet.Filter dan laksanakan kaedah doFilter().
javaCopy code public class MyFilter implements Filter { public void init(FilterConfig config) throws ServletException { // Filter initialization operation}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 过滤器处理逻辑 // 对request和response进行预处理 // 调用chain.doFilter()方法,将请求传递给下一个过滤器或Servlet chain.doFilter(request, response); // 对response进行后处理 } public void destroy() { // 过滤器销毁操作 }
dalam fail web.xml Declare penapis dan tentukan corak URL.
xmlCopy code myFilter com.example.MyFilter myFilter /*
Dalam kod di atas, nama penapis menentukan nama penapis, kelas penapis menentukan kelas pelaksanaan penapis; pemetaan penapis menentukan corak URL untuk dipintas oleh penapis, /* bermaksud memintas semua permintaan.
Gunakan semula aplikasi web, mulakan pelayan dan gunakan penapis ini untuk mempraproses dan menapis permintaan.
Perlu diambil perhatian bahawa apabila melaksanakan penapis, anda boleh mendapatkan parameter permulaan, ServletContext dan maklumat lain melalui objek FilterConfig untuk mencapai penapisan yang lebih halus. Pada masa yang sama, dalam kaedah doFilter(), kaedah doFilter() bagi objek FilterChain perlu dipanggil untuk menghantar permintaan kepada penapis atau Servlet seterusnya, jika tidak permintaan akan disekat dan tidak boleh diproses seperti biasa.
Konfigurasikan lapisan tindakan (antara sevlet dan pengawal) dalam pemintas springmvc.xml
Dalam Pembangunan Web Java , pemintas (Interceptor) ialah komponen yang digunakan untuk memintas dan memproses permintaan Anda boleh mencipta pemintas tersuai dengan melaksanakan antara muka HandlerInterceptor. Langkah-langkah khusus adalah seperti berikut:
Buat kelas Java, laksanakan antara muka HandlerInterceptor dan tulis semula tiga kaedahnya: preHandle(), postHandle() dan afterCompletion().
javaCopy code public class MyInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // Dipanggil sebelum kaedah pengawal dilaksanakan, mengembalikan benar bermakna dan Pengawal terus memintas kaedah; mengembalikan palsu bermakna menghentikan pelaksanaan kaedah pemintas dan pengawal berikutnya. return true; }
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在控制器方法执行之后、视图渲染之前被调用,可以对模型数据进行修改或查看。 } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 整个请求完成之后被调用,可以用于清理资源等工作。 }
Isytiharkan pemintas dalam fail konfigurasi Spring MVC dan nyatakan laluan pemintasan.
xmlCopy code mvc:interceptors
Dalam konfigurasi XML di atas, MyInterceptor ialah nama kelas pemintas tersuai. Dengan mendaftarkan pemintas dalam fail konfigurasi Spring MVC, semua permintaan yang melalui laluan pemintas pemintas akan dipintas dan diproses dengan sewajarnya.
Perlu diingat bahawa apabila melaksanakan pemintas, anda boleh memilih kaedah yang perlu ditulis semula mengikut keperluan anda sendiri untuk mencapai pemprosesan pemintasan yang diperhalusi. Pada masa yang sama, dalam kaedah preHandle(), hasil jenis boolean perlu dikembalikan untuk menunjukkan sama ada untuk meneruskan pelaksanaan kaedah pemintas dan pengawal berikutnya Jika palsu dikembalikan, permintaan akan dihentikan dan pelaksanaan tidak akan diteruskan.
1.
Penapis ialah komponen yang digunakan dalam bekas Servlet untuk mempraproses dan menapis permintaan Ia boleh melaksanakan fungsi seperti penapisan, pengesahan dan pemampatan. Pemintas (Pemintas) ialah komponen yang digunakan untuk memintas dan memproses permintaan dalam rangka kerja Spring MVC Ia boleh melaksanakan fungsi seperti pengesahan kebenaran, pengelogan dan pengendalian pengecualian. Penapis dilaksanakan dalam bekas Servlet, manakala pemintas dilaksanakan dalam rangka kerja Spring MVC.
2. Apakah susunan pelaksanaan penapis dan pemintas?
Dalam aplikasi web Java, susunan pelaksanaan penapis dan pemintas ditentukan oleh susunan ia diisytiharkan dalam fail konfigurasi. Secara umumnya, penapis atau pemintas yang diisytiharkan dahulu akan dilaksanakan dahulu, dan penapis atau pemintas yang diisytiharkan kemudian akan dilaksanakan kemudian.
3. Apakah fungsi penapis dan pemintas?
Kedua-dua penapis dan pemintas boleh memproses dan mengawal permintaan serta melaksanakan satu siri fungsi, seperti penapisan permintaan, pengesahan, penyulitan data, pengelogan, dsb. Penapis digunakan terutamanya untuk pra-memproses dan menapis permintaan, manakala pemintas digunakan terutamanya untuk memintas dan memproses permintaan sebelum atau selepas kaedah pengawal dilaksanakan.
4. Apakah senario penggunaan penapis dan pemintas?
Kedua-dua penapis dan pemintas boleh digunakan untuk melaksanakan satu siri fungsi kawalan dan pengurusan. Contohnya, penapis boleh digunakan dalam senario seperti pengesahan identiti, penyulitan dan penyahsulitan data, penapisan permintaan dan pemampatan manakala pemintas boleh digunakan dalam senario seperti pengesahan kebenaran, pengelogan dan pengendalian pengecualian.
5. Bagaimana untuk menggunakan penapis dan pemintas dalam aplikasi web Java?
Dalam aplikasi web Java, untuk menggunakan penapis dan pemintas, ia perlu diisytiharkan dan didaftarkan dalam fail konfigurasi. Untuk penapis, ini boleh dilakukan dengan menambah teg dan dalam fail web.xml untuk pemintas, ia boleh dilakukan dengan menambah teg mvc:interceptors dalam fail konfigurasi Spring MVC. Pada masa yang sama, apabila mengisytiharkan dan mendaftarkan penapis dan pemintas, anda juga perlu menentukan perintah pelaksanaan dan laluan pemintas serta maklumat lain yang berkaitan.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penapis dan pemintas Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!