Kitaran hayat Servlet merujuk kepada keseluruhan proses servlet daripada penciptaan hingga kemusnahan, yang boleh dibahagikan kepada 3 peringkat: 1. Peringkat permulaan, memanggil kaedah init() untuk melaksanakan kerja permulaan Servlet 2; Peringkat berjalan (memproses permintaan ), bekas akan mencipta objek ServletRequest yang mewakili permintaan HTTP dan objek ServletResponse yang mewakili respons HTTP untuk permintaan yang ditentukan, dan kemudian menghantarnya sebagai parameter kepada kaedah service() Servlet 3. Pemusnahan fasa.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Java 8, komputer DELL G3.
Servlet (Server Applet) ialah singkatan Java Servlet dipanggil program perkhidmatan kecil atau penyambung perkhidmatan dan mempunyai ciri Platform dan protokol bebas, ialah program yang dijalankan pada pelayan web atau pelayan aplikasi.
Ia bertindak sebagai pelayan daripada pelayar web atau lain-lain Pelanggan HTTP Lapisan tengah antara permintaan dan pangkalan data atau aplikasi pada pelayan HTTP. Fungsi utama ialah mengumpul input pengguna daripada borang web, menyemak imbas dan menjana data secara interaktif, dan juga menjana kandungan web dinamik.
Kitaran hayat servlet boleh ditakrifkan sebagai keseluruhan proses daripada penciptaan hingga kemusnahan .
Tiga langkah ialah: pemulaan------> permintaan pemprosesan------> objek ---------->Initialize
(panggil kaedahinit () ) --------->Proses/ balas kepada pelanggan Tamatkan permintaan (panggil perkhidmatan() kaedah) ---------> musnahkan (panggil musnahkan() kaedah, akhirnya kutipan sampah dilakukan oleh pemungut sampah JVM) 1) Fasa permulaan
Apabila pelanggan menghantar permintaan HTTP kepada bekas Servlet untuk mengakses Servlet , bekas Servlet terlebih dahulu Menghuraikan permintaan dan semak sama ada objek Servlet sudah wujud dalam memori Jika ya, gunakan objek Servlet secara langsung Jika tidak, buat objek contoh Servlet dan kemudian mulakan Servlet dengan memanggil kaedah init(). Perlu diingat bahawa semasa keseluruhan kitaran hayat Servlet, kaedah init()nya hanya boleh dipanggil sekali.
2) Fasa berjalan (permintaan pemprosesan)
Ini adalah fasa paling penting dalam kitaran hayat Servlet Dalam fasa ini, bekas Servlet akan mencipta wakil untuk permintaan ini Objek ServletRequest permintaan HTTP dan objek ServletResponse mewakili respons HTTP, dan kemudian hantarkannya sebagai parameter kepada kaedah servis() Servlet.
Kaedah service() mendapatkan maklumat permintaan pelanggan daripada objek ServletRequest dan memproses permintaan itu, serta menjana hasil respons melalui objek ServletResponse. Semasa keseluruhan kitaran hayat Servlet, untuk setiap permintaan akses Servlet, bekas Servlet akan memanggil kaedah service() Servlet dan mencipta objek ServletRequest dan ServletResponse baharu, iaitu, service() Kaedah akan dipanggil beberapa kali sepanjang kitaran hayat Servlet.3) Fasa pemusnahan
Apabila pelayan ditutup atau aplikasi web dialih keluar daripada bekas, Servlet dimusnahkan apabila aplikasi web ditutup. Sebelum memusnahkan Servlet, bekas Servlet akan memanggil kaedah destroy() Servlet untuk membenarkan objek Servlet melepaskan sumber yang didudukinya. Kaedah destroy() hanya boleh dipanggil sekali semasa keseluruhan kitaran hayat Servlet.
Perlu diambil perhatian bahawa sebaik sahaja objek Servlet dicipta, ia akan berada dalam memori dan menunggu untuk akses pelanggan Objek Servlet tidak akan dimusnahkan sehingga pelayan ditutup atau aplikasi web dialih keluar daripada bekas.
1 kaedah init() Panggil Servlet. Kaedah init() objek memulakan maklumat Servlet Kaedah init() hanya akan dipanggil sekali selepas penciptaan (fasa permulaan)
(1) Kaedah init direka untuk dipanggil sekali sahaja. Ia dipanggil apabila Servlet pertama kali dibuat, dan tidak lagi dipanggil pada setiap permintaan pengguna berikutnya. Oleh itu,
ia digunakan untuk permulaan sekali, dicipta apabila pengguna memanggil URL Servlet untuk kali pertama Anda juga boleh menentukan bahawa Servlet dimuatkan apabila pelayan bermula untuk kali pertama .
(2)Apabila pengguna memanggil Servlet, tika Servlet akan dibuat dan setiap permintaan pengguna akan menjana urutan baharu Ia akan diserahkan kepada kaedah doGet atau doPost apabila sesuai.
(3) Kaedah init() hanya mencipta atau memuatkan beberapa data, yang akan digunakan sepanjang kitaran hayat Servlet.
Kaedah init ditakrifkan seperti berikut:
public void init() throws ServletException { // 初始化代码... }
Sebagai tindak balas kepada permintaan, panggil kaedah perkhidmatan() atau doGet(), doPost() untuk memproses permintaan Kaedah ini dijalankan dalam berbilang benang negeri. (Fasa tindak balas kepada permintaan pelanggan)
(1) Kaedah perkhidmatan() ialah kaedah utama untuk melaksanakan tugas sebenar, mengendalikan permintaan daripada klien (pelayar) dan format Jawapan ditulis semula kepada pelanggan.
(2) Setiap kali pelayan menerima permintaan Servlet, pelayan akan menjana urutan baharu dan memanggil perkhidmatan.
(3) Proses Servlet menerima dan membalas permintaan pelanggan Pertama, pelanggan menghantar permintaan kepada kaedah perkhidmatan() untuk bertindak balas kepada permintaan kod sumber yang dalam kaedah service() Padankan kaedah permintaan, pilih untuk memanggil doGet, doPost dan kaedah lain, dan kemudian masukkan kaedah yang sepadan untuk memanggil kaedah lapisan logik untuk melaksanakan respons kepada pelanggan. Memandangkan tiada kaedah doGet, doPost, dsb. dalam antara muka Servlet dan GenericServlet, kaedah ini ditakrifkan dalam HttpServlet Oleh itu, setiap kali kami mentakrifkan Servlet, kami mesti melaksanakan doGet atau doPost dan kaedah lain.
(4) kaedah service() Semak jenis permintaan HTTP (GET, POST, PUT, DELETE, dll.), dan panggil doGet, doPost, doPut, doDelete apabila sesuai dan kaedah lain untuk diproses.
Kaedah perkhidmatan ditakrifkan seperti berikut:
public void service(ServletRequest request,ServletResponse response) throws ServletException, IOException{ }
Memandangkan kaedah perkhidmatan() dipanggil oleh bekas, kaedah perkhidmatan akan memanggil doGet, doPost, kaedah doPut, doDelete dan lain-lain. Oleh itu, kami tidak perlu melakukan apa-apa dengan kaedah service(), kami hanya perlu menulis semula doGet() atau doPost() mengikut jenis permintaan pelanggan.
digunakan untuk memproses permintaan , Kaedah dijalankan dalam keadaan berbilang benang. (Fasa respons kepada permintaan pelanggan)
doGet() ialah kaedah yang paling biasa digunakan dalam permintaan perkhidmatan, digunakan untuk memproses permintaan Apabila jenis permintaan URL ialah permintaan GET , Atau ia adalah jenis permintaan yang tidak ditentukanborang HTML, maka permintaan itu akan diproses dengan kaedah doGet().
Kaedah doGet ditakrifkan seperti berikut:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // Servlet 代码 }
digunakan untuk memproses permintaan dan kaedah berjalan dalam keadaan berbilang benang. (Fasa respons kepada permintaan pelanggan)
doPost() ialah kaedah yang paling biasa digunakan dalam permintaan perkhidmatan Ia digunakan untuk memproses permintaan apabila permintaan itu datang daripada permintaan yang ditetapkan khas taip sebagai POST borang HTML, maka permintaan akan dikendalikan oleh kaedah doPost().
Kaedah doPost ditakrifkan seperti berikut:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代码 }
Apabila sudah lama tidak dipanggil atau pelayan ditutup, kaedah destroy() akan dipanggil untuk memusnahkan objek Servlet. (Fasa penamatan)
(1) Kaedahmusnah() hanya akan dipanggil sekali, pada penghujung kitaran hayat Servlet.
(2) Kaedah destroy() membenarkanServlet menutup sambungan pangkalan data, menghentikan utas latar belakang, menulis senarai kuki atau klik kaunter ke cakera dan melakukan aktiviti pembersihan lain yang serupa .
(3) Selepas memanggil kaedah destroy(), objekservlet ditandakan untuk pengumpulan sampah.
Kaedah musnah ditakrifkan seperti berikut:
public void destroy() { // 终止化代码... }
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Pengajaran Pengaturcaraan
! !Atas ialah kandungan terperinci Kitaran hayat servlet dibahagikan kepada beberapa peringkat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!