Artikel ini berbagi siklus hidup dan prinsip kerja Servlet untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Siklus hidup servlet dibagi menjadi tiga tahap:
1. Hubungi metode init () pada tahap inisialisasi
2. Hubungi metode layanan () sebagai tanggapan terhadap tahap permintaan pelanggan
3. Call Destroy () Metode pada tahap penghentian
Fase Inisialisasi Servlet:
Pada saat -saat berikut, wadah servlet memuat servlet:
1. Ketika wadah servlet dimulai, beberapa servlet dimuat secara otomatis. Untuk mengimplementasikannya, Anda hanya perlu menambahkan kode berikut antara <servlet> </servlet> di file web.xml:
<Boadon-startup> 1 </loadon-startup>
2. Setelah wadah servlet dimulai, klien mengirimkan permintaan ke servlet untuk pertama kalinya
3. Setelah file kelas servlet diperbarui, muat ulang servlet
Setelah servlet dimuat, wadah servlet membuat instance servlet dan memanggil metode init servlet () untuk inisialisasi. Metode init () hanya disebut sekali selama seluruh kehidupan servlet.
Bagaimana servlets bekerja:
Pertama, mari kita jelaskan proses menerima dan menanggapi permintaan pelanggan secara singkat. Pertama, pelanggan mengirimkan permintaan. Servlet memanggil metode layanan () untuk menanggapi permintaan. Itu dapat dilihat melalui kode sumber. Metode layanan () cocok dengan metode permintaan. Pilih untuk memanggil DoGet, Dopost, dan metode lainnya, dan kemudian masukkan metode yang sesuai untuk memanggil metode lapisan logis untuk mewujudkan respons terhadap pelanggan. Tidak ada metode seperti doget, dopost, dll. Dalam antarmuka servlet dan genericservlet. Metode -metode ini didefinisikan dalam httpservlet, tetapi mereka semua mengembalikan informasi kesalahan. Oleh karena itu, setiap kali kita mendefinisikan servlet, kita harus mengimplementasikan metode seperti doget atau dopost.
Setiap servlet khusus harus mengimplementasikan antarmuka servlet. Lima metode didefinisikan dalam antarmuka servlet, di antaranya tiga metode yang lebih penting melibatkan siklus hidup servlet, yaitu metode init (), service (), dan hancur () yang disebutkan di atas. GenericServlet adalah umum, tidak spesifik untuk protokol apa pun, servlet, yang mengimplementasikan antarmuka servlet. Httpservlet mewarisi dari genericservlet, jadi httpservlet juga mengimplementasikan antarmuka servlet. Jadi ketika kita mendefinisikan servlet, kita hanya perlu mewarisi httpservlet.
Antarmuka Servlet dan GenericServlet tidak spesifik untuk protokol apa pun, sedangkan httpservlet adalah kelas khusus untuk protokol http, sehingga metode layanan () diimplementasikan dalam httpservlet dan servletRequest yang diminta dan respons servletspons yang diminta.
Layanan public void (ServletRequest Req, ServletResponse Res) melempar ServletException, ioException {httpRequest request; Respons httpresponse; Coba {req = (httprequest) permintaan; respons res = (httpresponse); } catch (ClasscastException e) {Throw New ServletException ("Respons Permintaan Non-HTTP"); } layanan (permintaan, respons);}Kode akhirnya memanggil metode layanan httpservlet (permintaan, respons), dan kemudian memanggil metode doxxx yang sesuai sesuai dengan permintaan, karena metode doxxx di httpservlet mengembalikan informasi kesalahan.
void doGet yang dilindungi (httpservletRequest res, httpservletResponse resp) melempar servletException, ioException {string protocol = req.getProtocol (); String msg = istrings.getString ("http.method_get_not_supported"); if (protocol.equals ("1.1")) {resp.senderror (httpservletResponse.sc.method.not.allowed, msg); } esle {resp.senderror (httpservletResponse.sc_bad_request, msg); }}Jadi kita perlu mengesampingkan metode ini dalam servlet khusus!
Tidak ada rahasia di depan kode sumber!
Fase Permintaan Respons Servlet:
Untuk permintaan pengguna untuk mencapai servlet, wadah servlet akan membuat objek servletRequest dan objek servletResponse khusus untuk permintaan ini, dan kemudian hubungi metode layanan servlet. Metode Layanan memperoleh informasi permintaan pelanggan dari objek ServletRequest, memproses permintaan, dan mengembalikan informasi respons kepada pelanggan melalui objek ServletResponse.
Untuk Tomcat, itu akan menempatkan parameter yang diteruskan di hashtable, dan definisi hashtable adalah:
Salinan kode adalah sebagai berikut: private hashtable <string string []> paramhashStringArray = hashtable baru <string string []> ();
Ini adalah peta nilai kunci dari string-> string [].
Benang hashmap tidak aman, utas hashtable aman.
Fase Pengakhiran Servlet:
Ketika aplikasi web diakhiri, atau wadah servlet berakhir berjalan, atau wadah servlet memuat ulang instance baru dari servlet, wadah servlet pertama -tama akan memanggil metode destroy () dari servlet, yang dapat membebaskan sumber daya yang ditempati oleh servlet dalam metode Destroy ().
Kapan servlet dibuat:
1. Secara default, ketika klien web meminta akses ke servlet untuk pertama kalinya, wadah web akan membuat instance dari servlet.
2. Ketika elemen anak <load-on-startup> ditentukan dalam elemen <servlet> dalam file web.xml, wadah servlet akan membuat dan menginisialisasi objek servlet secara berurutan saat memulai server web.
Catatan: Dalam file web.xml, beberapa servlet hanya memiliki elemen <serlvet> dan tidak memiliki elemen <servlet-Mapping>, jadi kami tidak dapat mengakses servlet ini melalui URL. Servlet ini biasanya mengkonfigurasi elemen anak <load-on-startup> dalam elemen <servlet>, sehingga wadah secara otomatis memuat servlet ini dan memanggil metode init () saat dimulai, menyelesaikan beberapa pekerjaan inisialisasi global.
Kapan aplikasi web akan dimulai:
1. Ketika wadah servlet dimulai, semua aplikasi web akan dimulai.
2. Pengontrol memulai aplikasi web
Perbandingan antara Servlet dan JSP:
Ada banyak kesamaan yang dapat menghasilkan halaman web dinamis.
Keuntungan dari JSP adalah bagus dalam produksi halaman web, dan lebih intuitif untuk menghasilkan halaman dinamis, tetapi kerugiannya adalah tidak mudah untuk melacak dan memecahkan masalah.
Servlet adalah bahasa Java murni dan pandai memproses proses dan logika bisnis. Kerugiannya adalah tidak intuitif untuk menghasilkan halaman web dinamis.
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.