subrutin
a sequence of programmer life

Advertisement

Memahami Daur Hidup Servlet

0 1,017

Sebelumnya kita telah belajar membuat servlet pertama. Seperti biasa, untuk memahami dengan benar servlet, maka kita perlu memahami sedikit banyak tentang daur hidup servlet, dan method – method yang dipanggil kala sebuah servlet dibentuk hingga kemudian dihancurkan,

Advertisement

Ketika servlet pertama kali dibuat, method init akan dipanggil, sehingga init method dimana kita bisa meletakan kode setup pertama kali. Kemudian, setiap request yang berasal dari client akan menghasilkan sebuah thread yang memanggil method service dari instance yang sebelumnya dibuat. Banyak request yang terjadi secara paralel akan menghasilkan banyak thread juga yang memanggil service secara simultan. Meskipun servlet bisa diimplement sebuah interface khusus (SingleThreadModel) yang  menetapkan bahwa hanya satu thread yang diijinkan berjalan dalam satu waktu.

Method service kemudian memanggil doGetdoPost atau method doXXX yang lain bergantung pada jenis request HTTP yang diterima. Setelah selesei, server memutuskan untuk menghancurkan servlet yang sudah tak terpakai, saat itulah method destroy dipanggil.

  • Method init

Method init dipanggil ketika servlet pertama kali dipanggil. Hal ini terjadi hanya sekali,  dan tidak akan dipanggil lagi, untuk setiap request user.  Method ini digunakan untuk inisialisasi user pertama kali, kurang lebih sama dengan method init pada java Applet. Servlet secara normal akan diciptakan ketika user pertama kali meminta URL yang terkait dengan servlet, tapi kita harus menspesifikasikan servlet yang akan dimuat ketika server pertama kali dijalankan.

Template dari method init terlihat seperti berikut

public void init() throws ServletException {

// Initialization code...

}

Apa fungsi method init? Ya, salah satunya,  yang paling umum adalah membaca parameter inisialisasi dari spesifikasi server. Misalnya, servlet mungkin memerlukan informasi tentang pengaturan database, password file, parameter unjuk kerja dari server tertentu, mencacah file atau serialized cookie data dari request sebelumnya. Namun untuk  dapat membaca parameter inisialisasi, maka kita pertama kali harus mendapatkan object ServletConfig dengan getServletConfig, baru kemudian memanggil getInitParameter, sperti contoh berikut

public void init() throws ServletException {
  ServletConfig config = getServletConfig();
  String param1 = config.getInitParameter("parameter1");
}

Yang perlu dicatat, dua hal dari program tersebut adalah.

Pertama method init menggunakan getServletConfig untuk mendapatkan referensi pada Object ServletConfig.

Kedua, ServletConfig memiliki  sebuah method getInitParamter yang dapat digunakan untuk melihat parameter inisialisasi yang terkait dengan servlet. Hal ini analogi dengan  method getParameter yang digunakan pada method init dari java applet.

  • Web.xml

Oke, sekarag kita bisa membaca parameter inisialisasi dengan memanggil method getInitParameter dari ServletConfig. Lalu bagaimana caranya kita bisa mengeset nilai-nya? Nah, untuk mengeset nilai inisialisasi, dapat dilakukan di file  web.xml yang disebut dengan deployment descriptor. File ini berada pada direktori WEB-INF dari aplikasi web yang digunakan dan ia mengendalikan banyak akspek dari perilaku Servlet dan JSP.

Penggunaan selengkapnya web.xml akan dibahas di sesi lain tulisan saya (Semoga jika ada waktu :mrgreen: ). Namun intinya, web.xml berisi sebuah header XML, deklarasi DOCTYPE, dan sebuah elemen web-app. Untuk tujuan parameter inisialisasi, elemen web app harus berisi elemen servlet dengan tiga sub elemen yaitu

  1. servlet-name,
  2. servlet-class
  3.  init-param.

Elemen servlet-name diisi dengan nama yang kita inginkan untuk digunakan mengakses servlet. Sedangkan element servlet-class merupakan alamat kelas servlet. Dan init-param berisi nama dan nilai dari parameter inisialisasi.

Berikut contoh program sederhana yang mengilustrasikan penggunaan  web.xml, anda bisa menggunakannya dengan menyalin program dibawah ini dan merunningnya di alamat http://[alamat-host]/[app-name]/index.html

package net.ruangtedy.java;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class MyServlet extends HttpServlet {

public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
  res.setContentType("text/plain");
  PrintWriter out = res.getWriter();

  out.println("Init Parameters:");
  Enumeration e = getInitParameterNames();
  while (e.hasMoreElements()) {
    String name = (String) e.nextElement();
    out.println(name + ": " + getInitParameter(name));
  }
 }
}

 

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.