Kitaran hayat Servlet


Kitaran hayat Servlet boleh ditakrifkan sebagai keseluruhan proses daripada penciptaan hingga kemusnahan. Berikut ialah proses yang diikuti oleh Servlet:

  • Servlet dimulakan dengan memanggil kaedah init ().

  • Servlet memanggil kaedah service() untuk mengendalikan permintaan pelanggan.

  • Servlet ditamatkan (berakhir) dengan memanggil kaedah musnah().

  • Akhir sekali, Servlet adalah sampah yang dikumpul oleh pemungut sampah JVM.

Sekarang mari kita bincangkan kaedah kitaran hayat secara terperinci.

kaedah init()

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, sama seperti kaedah init Applet.

Servlet dicipta apabila pengguna mula-mula memanggil URL yang sepadan dengan Servlet, tetapi anda juga boleh menentukan bahawa Servlet dimuatkan apabila pelayan mula-mula dimulakan.

Apabila pengguna memanggil Servlet, tika Servlet akan dibuat Setiap permintaan pengguna akan menjana urutan baharu dan menyerahkannya kepada kaedah doGet atau doPost apabila sesuai. 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 {
  // 初始化代码...
}

kaedah service() Kaedah

service() ialah kaedah utama untuk melaksanakan tugasan sebenar. Bekas Servlet (iaitu, pelayan Web) memanggil kaedah perkhidmatan() untuk mengendalikan permintaan daripada klien (penyemak imbas) dan menulis semula respons berformat kepada klien.

Setiap kali pelayan menerima permintaan Servlet, pelayan akan menghasilkan urutan baharu dan memanggil perkhidmatan tersebut. Kaedah service() menyemak jenis permintaan HTTP (GET, POST, PUT, DELETE, dsb.) dan memanggil kaedah doGet, doPost, doPut, doDelete, dsb. apabila sesuai.

Berikut ialah ciri kaedah ini:

public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{
}

Kaedah service() dipanggil oleh bekas, dan kaedah perkhidmatan memanggil doGet, doPost, doPut, doDelete dan kaedah lain apabila sesuai . Jadi, anda tidak perlu melakukan apa-apa dengan kaedah service(), anda hanya perlu membebankan doGet() atau doPost() bergantung pada jenis permintaan daripada klien.

Kaedah doGet() dan doPost() ialah kaedah yang paling biasa digunakan dalam setiap permintaan perkhidmatan. Di bawah adalah ciri-ciri kedua-dua kaedah.

Kaedah doGet()

Permintaan GET yang datang daripada permintaan biasa ke URL, atau daripada borang HTML tanpa KAEDAH ditentukan, dikendalikan oleh kaedah doGet().

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}

kaedah doPost()

Permintaan POST datang daripada borang HTML yang secara khusus menentukan METHOD sebagai POST, yang diproses oleh kaedah doPost().

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}

kaedah musnah()

kaedah musnah() hanya akan dipanggil sekali, pada penghujung kitaran hayat Servlet. Kaedah destroy() membolehkan servlet anda menutup sambungan pangkalan data, menghentikan benang latar belakang, menulis senarai kuki atau klik kaunter ke cakera, dan melakukan aktiviti pembersihan lain yang serupa.

Selepas memanggil kaedah destroy(), objek servlet ditandakan untuk pengumpulan sampah. Kaedah musnah ditakrifkan seperti berikut:

  public void destroy() {
    // 终止化代码...
  }

Rajah seni bina

Rajah berikut menunjukkan skema kitaran hayat Servlet biasa.

  • Permintaan HTTP pertama yang sampai ke pelayan diwakilkan kepada bekas Servlet.

  • Bekas Servlet memuatkan Servlet sebelum memanggil kaedah service().

  • Kemudian bekas Servlet mengendalikan berbilang permintaan yang dijana oleh berbilang benang, setiap utas melaksanakan kaedah service() bagi satu contoh Servlet.

Servlet-LifeCycle.jpg