Perbedaan dan Koneksi Antara Servlets, Filter, Pendengar, Pencegat
1. Konsep
1.Servlet: Servlet adalah aplikasi Java yang menjalankan sisi server, dengan fitur platform dan protokol-independen, dan secara dinamis dapat menghasilkan halaman web, yang berfungsi di lapisan tengah antara permintaan klien dan respons server.
2.Filter: 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.
3. Pendengar: Pendengar, secara harfiah, dapat dilihat bahwa pendengar terutama digunakan untuk mendengarkan saja. Melalui pendengar, Anda dapat mendengarkan tindakan eksekusi di server web dan membuat tanggapan yang sesuai sesuai dengan persyaratannya.
Secara sederhana, ini adalah komponen fungsional yang secara otomatis menjalankan kode ketika tiga objek aplikasi, sesi, dan permintaan dibuat atau ketika atribut modifikasi dan penghapusan ditambahkan ke dalamnya.
4.Interceptor: Ini pemrograman dalam orientasi tangensial, yaitu memanggil metode sebelum layanan Anda atau metode, atau memanggil metode setelah metode.
Misalnya, proxy dinamis adalah implementasi sederhana dari pencegat. Anda dapat mencetak string sebelum Anda memanggil metode ini (atau melakukan operasi logika bisnis lainnya), Anda juga dapat mencetak string setelah Anda memanggil metode ini, atau bahkan melakukan operasi logika bisnis saat Anda melempar pengecualian.
5. Servlet, filter, pendengar dikonfigurasi ke web.xml, Interceptor tidak dikonfigurasi ke web.xml, Struts Interceptor dikonfigurasi ke struts.xml. Interceptor untuk Spring dikonfigurasi ke Spring.xml.
2. Pesanan pemuatan
Urutan pemuatan web.xml adalah: konteks -param -> pendengar -> filter -> servlet
3. Tanggung jawab
1.Servlet:
(1) Buat dan kembalikan halaman HTML lengkap yang berisi konten dinamis berdasarkan sifat permintaan klien
(2) Buat bagian dari halaman HTML (fragmen HTML) yang dapat disematkan di halaman HTML yang ada
(3) Baca data tersembunyi yang dikirim oleh klien
(4) Baca data tampilan yang dikirim oleh klien
(5) Berkomunikasi dengan sumber daya server lainnya (termasuk aplikasi database dan Java)
(6) Kirim data tersembunyi ke klien melalui kode status dan header respons.
2. Filter:
(1) filter dapat memproses permintaan pengguna sebelum permintaan mencapai servlet, atau juga dapat memproses respons http saat meninggalkan servlet
(2) Sebelum menjalankan servlet, pertama -tama jalankan program filter dan lakukan beberapa pekerjaan preprocessing untuk itu.
(3) Ubah permintaan dan respons sesuai dengan kebutuhan program
(4) mencegat eksekusi servlet setelah servlet dipanggil.
3.Shistener:
8 Antarmuka pendengar disediakan dalam spesifikasi servlet2.4, yang dapat dibagi menjadi tiga kategori, sebagai berikut:
(1) Listne r Interface Terkait dengan ServletContext. Termasuk: ServletContextListener, ServletContextAttributeListener
(2) Antarmuka Listner terkait dengan httpsession. Termasuk: httpsessionlistner, httpsessionattributeListener, httpsessionBindingListener, httpsessionactivationlistenerer
(3) Antarmuka pendengar yang terkait dengan ServletRequest, termasuk: ServletRequestListner, ServletRequestAttributeListener
4. Perbedaan
1.Servlet: Proses servlet pendek. Setelah URL ditransmisikan, diproses dan kemudian dikembalikan atau diserahkan ke halaman yang ditentukan oleh Anda. Ini terutama digunakan untuk mengontrol sebelum pemrosesan bisnis.
2. Filter: Prosesnya berulir. Setelah URL ditransmisikan, setelah memeriksa, proses asli dapat disimpan ke bawah dan diterima oleh filter berikutnya, servlet, dll., Dan setelah servlet diproses, itu tidak akan terus diteruskan ke bawah.
Fungsi filter dapat digunakan untuk menjaga proses berjalan dengan cara asli, atau untuk mendominasi proses, sedangkan fungsi servlet terutama digunakan untuk mendominasi proses. Filter dapat dianggap sebagai suplemen untuk servlet (soft wipe).
Filter dapat dianggap sebagai "varian" dari servlet. Ini terutama digunakan untuk memproses permintaan pengguna, dan juga dapat memposting HTTPServletResponse. Ini adalah rantai pemrosesan yang khas.
Perbedaan antara itu dan servlet adalah bahwa ia tidak dapat menghasilkan respons secara langsung kepada pengguna.
Proses lengkapnya adalah: filter preprocesses permintaan pengguna, lalu menyerahkan permintaan ke servlet untuk diproses dan menghasilkan respons, dan akhirnya memfilter proses pasca-proses respons server.
3. Aturan pencocokan
Ketika permintaan dikirim ke wadah servlet, wadah pertama akan mengurangi URL yang diminta ke jalur konteks aplikasi saat ini sebagai URL pemetaan servlet. Misalnya, saya mengunjungi http: //localhost/test/aaa.html (konteks aplikasi saya adalah tes).
Wadah akan menghapus http: // localhost/tes dan menggunakan bagian yang tersisa.
Catatan: Ada aturan tertentu untuk proses pencocokan pemetaan ini, dan setiap pertandingan pada akhirnya hanya akan cocok dengan satu servlet. (Ini berbeda dari filter)
aturan pencocokan servlet: Ketika servlet cocok dengan berhasil, itu tidak akan dicocokkan lebih lanjut
Pencocokan jalur yang tepat:
Contoh: Misalnya, pola url servleta adalah /tes, dan pola url servletb adalah /*. Saat ini, jika URL I Access adalah http: // localhost/tes,
Pada saat ini, wadah pertama akan melakukan pencocokan jalur yang akurat dan menemukan bahwa /tes persis cocok dengan servleta, jadi hubungi Servleta dan tidak akan memperhatikan servlet lainnya.
Pencocokan jalan terpanjang:
Contoh: Pola URL dari servleta adalah/test/*, dan pola url servletb adalah/test/a/*. Saat mengakses http: // localhost/test/a,
Wadah akan memilih servlet dengan jalur terpanjang yang cocok, yang merupakan servletb di sini.
Pencocokan ekstensi: Jika segmen terakhir dari URL berisi ekstensi, wadah akan memilih servlet yang sesuai berdasarkan ekstensi.
Contoh: URL-Pattern of Servleta: *.Action
4. Servlets dan filter semuanya ditujukan untuk URL dan sebagainya, sementara pendengar ditargetkan pada objek, seperti penciptaan sesi dan terjadinya sesi.
Dapat digunakan untuk: Spring mengintegrasikan struts, menyuntikkan atribut ke dalam tindakan struts, mengimplementasikan tugas waktu aplikasi web, statistik pada jumlah pengguna online, dll.
5. Interceptor Interceptor, mirip dengan filter, tetapi dikonfigurasi dalam struts.xml, bukan di web.xml, dan bukan untuk URL, tetapi untuk tindakan. Saat halaman mengirimkan suatu tindakan,
Melakukan operasi penyaringan setara dengan mekanisme plug-in yang disediakan oleh Struts1.x. Ini dapat dianggap sebagai yang pertama adalah filter yang disediakan oleh Struts1.x, dan interseptor adalah filter yang disediakan oleh Struts2.
Perbedaan dari Filter:
(1) Tidak dikonfigurasi dalam web.xml, tetapi dikonfigurasi dalam struts.xml, dan dengan tindakan (2) tindakan itu sendiri dapat menentukan pencegat mana yang akan digunakan untuk melakukan hal -hal sebelum menerimanya
6. Perbedaan dan hubungan antara filter dan pencegat di Struts2:
(1) Interceptor disediakan oleh Struts2, sedangkan filter disediakan oleh Servlet Standard
(2) Interceptor mencegat metode target tindakan target, sedangkan filter menargetkan berbagai sumber daya web
(3) Interceptor dikonfigurasi di struts.xml, saat filter dikonfigurasi dalam file web.xml
(4) Pencegatan diatur bersama menggunakan tumpukan interseptor, sedangkan filter dihubungkan bersama sesuai dengan sumber daya yang dicegat. Urutan eksekusi ditentukan oleh posisinya di file konfigurasi.
(5) Pencegatan didasarkan pada mekanisme refleksi Java, sedangkan filter didasarkan pada panggilan balik fungsi.
(6) Filter bergantung pada wadah servlet, sedangkan pencegat tidak bergantung pada wadah servlet.
(7) Pencegat hanya dapat mengerjakan permintaan tindakan, sementara filter dapat bekerja pada hampir semua permintaan.
(8) Interceptor dapat mengakses objek dalam konteks tindakan dan tumpukan nilai, tetapi filter tidak bisa.
(9) Selama siklus hidup aksi, pencegat dapat dipanggil beberapa kali, sedangkan filter hanya dapat dipanggil sekali ketika wadah diinisialisasi.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!