Berapa banyak yang diketahui oleh Java Web Programming Servlet Technology?
1. Servlet Basics <BR /> Untuk pengembangan teknologi servlet, Sun Company menyediakan beberapa antarmuka dan kelas kolom, yang paling penting adalah antarmuka javax.servlet.servlet. Dua paket penting adalah Javax.servlet dan javax.servlet.http. Servlet adalah kelas yang mengimplementasikan antarmuka servlet. Ini dipanggil dan dibuat oleh wadah web (Tomcat/Jetty, dll.) Untuk menerima dan menanggapi permintaan pengguna. 5 Metode abstrak didefinisikan dalam antarmuka servlet:
Struktur kelas atas dari servlet adalah sebagai berikut:
2. Program Servlet Pertama
Buat proyek web Java baru, lalu buat kelas Hello baru. Kode Sumber Hello.java adalah sebagai berikut:
paket zzz; import java.io.ioException; import java.io.printwriter; import javax.servlet.http.httpservlet; import javax.servlet.http.htpservletrequest; import javax.servlet.http.htpservletequest; DoGet (permintaan httpservletRequest, respons httpservletResponse) melempar ioException {// atur respons response encoding response.setContentType ("text/html; charset = utf-8"); Printwriter out = response.getWriter (); out.println ("Hello World"); } @Override public void dopost (permintaan httpservletrequest, respons httpservletResponse) melempar ioException {this.doget (permintaan, respons); }}File Konfigurasi Web.xml adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlnsmlnsp.org/org/xlns =" http://xmlnsmlnsp.org/org/xx = XSI: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/xml/xml/xml/nee/nee/JEE/JEE/JEE/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/xml id = "webapp_id" version = "3.1"> <lplay-name> zzz </play- path-> <servlet-name> halo </servlet-name> <!-tentukan nama servlet-> <rucs-pola>/halo </rucs-pola> <!-Tentukan jalur virtual untuk mengakses servlet-> </servlet-Mapping> </web-app>
Memulai dan menjalankan tampilan browser sebagai berikut:
3. Siklus Hidup Servlet
Siklus hidup servlet secara kasar dibagi menjadi 3 tahap, tahap inisialisasi, tahap operasi dan tahap penghancuran . Berikut ini adalah deskripsi terperinci dari setiap tahap:
Fase Inisialisasi: Ketika klien membuat permintaan ke wadah servlet untuk mengakses servlet, wadah pertama -tama parsing permintaan untuk memeriksa apakah objek servlet ada dalam memori, dan jika digunakan secara langsung; Jika tidak, buat objek servlet dan kemudian panggil metode init (). Perhatikan bahwa init () hanya akan dipanggil sekali selama seluruh siklus deklarasi servlet.
Running Stage: Ini adalah tahap terpenting dari servlet. Pada tahap ini, wadah akan membangun objek servletRequest dan servletResponse sebagai parameter dan meneruskannya ke metode servlet service (). Untuk setiap akses servlet, wadah servlet akan menghubungi metode layanan () sekali. Metode layanan () akan dipanggil beberapa kali selama seluruh siklus hidup servlet
Tahap Penghancuran: Ketika server ditutup atau aplikasi web dihapus dari wadah, tahap ini akan dimasukkan. Pada saat ini, metode Destroy () akan dipanggil. Selama seluruh siklus hidup, metode Destroy () hanya akan dipanggil sekali. Ketika klien pertama kali mengakses servlet, wadah akan membuat objek servlet, tetapi kadang -kadang diharapkan bahwa objek servlet akan dimulai segera setelah Tomcat dimulai. Bagaimana cara menangani ini? Saat ini, Anda hanya perlu menggunakan elemen <boad-on-Startup> di web.xml. Contoh konfigurasi adalah sebagai berikut:
<servlet> <servlet-name> hello </servlet-name> <servlet-class> zzz.hello </servlet-class> <!-pemuatan otomatis program servlet-> <boad-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> Hello </servlet-name> </servlet> <servlet> <servlet-name> hello </servlet-name> </servlet> <servlet> <servlet-name> Hello </servlet-name> <rest-pattern> <servlet> <servlet-name> Hello </servlet-name> <REVLOT>
4. ServletConfig dan ServletContext
Selama antarmuka ServletConfig , jika beberapa informasi tambahan diperlukan, seperti pengkodean file, perusahaan yang menggunakan servlets, dll., Informasi ini dapat dikonfigurasi menggunakan elemen <InT-Param> di web.xml. Ketika Tomcat menginisialisasi servlet, informasi konfigurasi servlet akan dienkapsulasi ke dalam objek servletconfig dan diteruskan ke servlet melalui init (servletconfig config). ServletConfig mendefinisikan serangkaian metode untuk mendapatkan informasi konfigurasi:
Selanjutnya, ambil getInitparameter () sebagai contoh untuk menjelaskan penggunaan metode ini:
File konfigurasi web.xml adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlnsmlnsp.org/org/xlns =" http://xmlnsmlnsp.org/org/xx = XSI: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/xml/xml/xml/nee/nee/JEE/JEE/JEE/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/XML/xml id = "webapp_id" version = "3.1"> <play-name> zzz </play-name> <servlet> <servlet-name> halo </servlet-name> <servlet-class> zzz.hello </servlet-class> <Init-param> <param-name> </param-name> </Param-value> </Paramua> </Paramu </Paramu </Paramu </Paramu </Paramu </Paramua> </Paramu </Paramu </Paramu </Paramu </Paramua> <servlet-mapping> <servlet-name> halo </servlet-name> <rucs-pola>/hello </uRl-pattern> </servlet-mapping> </seb-app>
File hello.java adalah sebagai berikut:
paket zzz; impor java.io.ioException; import java.io.printwriter; import javax.servlet.servletconfig; import javax.servlet.http.httpservlet; impor javax.servlet.htp.httpservletequest; impor javax.servlet Memperluas httpservlet {@Override public void doGet (permintaan httpservletRequest, httpservletResponse response) melempar ioException {// atur respons response encoding response.setContentType ("Text/html; charset = UTF-8"); Printwriter out = response.getWriter (); ServletConfig config = this.getSerVletConfig (); String param = config.getInitparameter ("perusahaan"); out.println ("Perusahaan:" + param); } @Override public void dopost (permintaan httpservletrequest, respons httpservletResponse) melempar ioException {this.doget (permintaan, respons); }} Antarmuka ServletContext
Ketika wadah servlet dimulai, objek ServletContext yang unik dibuat untuk setiap aplikasi web untuk mewakili aplikasi web saat ini. Objek ini tidak hanya merangkum semua informasi aplikasi web, tetapi juga mengimplementasikan berbagi data di antara beberapa objek servlet. Di web.xml, Anda tidak hanya dapat mengonfigurasi informasi inisialisasi dari servlet, tetapi juga mengkonfigurasi informasi inisialisasi seluruh aplikasi web. Metode konfigurasi adalah sebagai berikut:
<context-param> <Param-name> Nama </param-name> <param-value> luoxn28 </param-value> </context-param> <Context-param> <param-name> Perusahaan </param-name> <param-value> Dahua </param-value> </konteks-param>
Catatan: Hanya ada satu <param-name> dan <param-value> di elemen <context-param>, dan konfigurasi di atas dikonfigurasi di bawah <eb-app> di web.xml. File hello.java adalah sebagai berikut:
paket zzz; impor java.io.ioException; import java.io.printwriter; impor java.util.enumeration; import javax.servlet.servletcontext; import javax.servlet.http.htpservlet; impor javax.servlet.http.htpservlet; javax.servlet.http.httpservletResponse; kelas publik Hello memperluas httpservlet {@override public void doGet (httpservletRequest, httpservletResponse response ("httpserpe {// atur respons response response. Printwriter out = response.getWriter (); ServletContext Context = this.getSerVletContext (); Enumeration <string> paramNames = context.getInitparameternames (); while (paramnames.hasmoreElements ()) {string name = paramNames.NextElement (); Nilai string = context.getInitparameter (name); out.println (name + ":" + value + "<br/>"); }} @Override public void dopost (permintaan httpservletrequest, respons httpservletResponse) melempar ioException {this.doget (permintaan, respons); }}Karena semua servlet dalam aplikasi web berbagi objek servletcontext, properti domain dari objek servletcontext dapat diakses oleh semua servlet di aplikasi web. Di antarmuka ServletContext, empat metode didefinisikan untuk menambah, menghapus dan mengatur properti domain servletContext:
Melalui metode di atas, Anda dapat mewujudkan berbagi data antara beberapa servlet. Contoh khusus ini tidak akan diposting dengan kode. Ada banyak informasi yang dapat dirujuk secara online, seperti mengklik:
Ringkasan Pengembangan Servlet Javaweb (II)
Di atas adalah semua tentang artikel ini, dan saya harap akan sangat membantu bagi semua orang untuk memahami teknologi servlet dari Java Web.
Referensi
1. "Pengantar Bab Teknologi Servlet Java Web Development"