📰 WHAT'S NEW?

[05] Servlet


Apa itu Servlet ?

Servlet adalah program kecil yang ditulis dengan bahasa Java yang dibuat untuk berjalan diatas web server. Kata Servlet memiliki kemiripan dengan Applet. Perbedaannya adalah applet berjalan disisi klien (client-side) sedangakan Servlet berjalan di sisi server (server-side).
Teknologi Java memperkenalkkan Servlet sebagai alternatif lain dari program CGI (Common Gateway Interface). CGI merupakan program yang dikembangkan untuk membuat halaman web menjadi lebih dinamis. CGI memungkinkan adanya interaksi antara user dengan web server, misalkan user input data pribadi melalui form HTML, kemudian data di proses di web server. Program CGI banyak ditulis dalam bahasa Perl atau C++.

Proses Akses Servlet

Program servlet berjalan di dalam web server, dan berperilaku sebagai lapisan penghubung antara request yang dikirim browser lewat protokol HTTP dengan Database, atau lapisan tengah antara browser dengan aplikasi pada web server.



Berikut alur proses yang terjadi ketika klien akses Servlet pada web server :

  1. Membaca data secara ekplist data yang dikirim oleh klien lewat browser. User input data pada form HTML pada halaman web, data juga bisa berasal dari sebuah applet atau lewat program klien HTTP.
  2. Membaca data secara implisit data HTTP request yang dikirim melalui browser. Dalam proses ini akan dibaca dua jenis data, pertama data yang diinput klien dan data yang dikirim oleh browser (seperti : cookies, media type) , proses ini berada di server dimana Servlet dieksekusi,
  3. Generate hasil permintaan (request). Proses ini mungkin memerlukan komunikasi dengan database, eksekusi sebuah RMI atau memanggil web service, invoke sebuah aplikasi, atau menjawab (response) secara langsung permintaan (request). Disini database tidak langsung "berbicara" dengan HTTP atau tidak langsung mengembalikan database dalam bentuk HTML, hal ini berlaku untuk semua aplikasi. Disini dibutuhkan suatu lapisan untuk meng-ekstrak data kedalam bentuk steram HTTP.
  4. Kirim data (dokumen) secara explicit ke client. Dokumen yang dikirim dapat dalam berbagai format , text (HTML), binary (image file), atau bahkan file hasil kompres (gzip file)
  5. Kirim data response HTTP secar implisit. Servlet atau JSP akan mengirim data ke client, ada dua jenis data yang dikirim, data yang berisi informasi yang diinginkan / diproses dan informasi HTTP ( cookies, catch parameter dan sebagainya).

Struktur Dasar Servlet

Package yang diperlukan untuk membuat class Servlet adalah package java.io.* (PrintWriter), javax.servlet.* (HttpServlet), dan javax.servlet.http.* (HttpServletRequest ,HttpServletResponse).
Berikut struktur dasar class Servlet:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTemplate extends HttpServlet {
 public void doGet(HttpServletRequest request,
          HttpServletResponse response)
   throws ServletException, IOException {
  // Use "request" to read incoming HTTP headers
  // (e.g., cookies) and query data from HTML forms.
  // Use "response" to specify the HTTP response status
  // code and headers (e.g. the content type, cookies).
  PrintWriter out = response.getWriter();
  // Use "out" to send content to browser.
 }
}


Method Method HttpServletRequest


Method
Description
String getParameter(String name)
Mengembalikan nilai yang berkesesuaian dengan parameter yang dikirim ke servlet sebagai bagian dari proses request GET atau POST
Enumeration getParamterNames( )
Mengembalikan nama seluruh parameter yang dikirim ke servlet sebagai bagian dari request POST
String[] getParameterValues( )
Mengembalikan array of String yang berisi untuk nilai paramater tertentu yang dikirim ke Servlet
Cookie[] getCookies()
Mengembalikan array of Cookie yang merupakan object yang disimpan di client oleh server. Cookie dapat digunakan untuk mengidentifikasi secara unik setiap client oleh servlet
HttpSession getSession(boolean create)
Mengembalikan object HttpSession yang berkesesuaian dengan browsing session yang sedang berlangsung pada client. Object session ini digunakan untuk mengidentifikasi klien yang mengakses servlet secara unik.


Method Method HttpServletResponse


Method
Description
void addCookie (Cookie cookie)
Digunakan untuk menambahkan cookie pada header sebagai respons ke klien.
ServletOutputStream getOutputStream( )
Mendapatkan output stream berbasis byte yang memungkinkan binary data di kirim ke klien
PrintWriter getWriter( )
Mendapatkan output stream berbasis karakter yang memungkinkan data teks dikirim ke klien
void setContentType( String type)
Menspesifikasi tipe MIME pada respons ke browser. Tipe MIME membantu browser menentukan cara menampilkan data. Misalnya tipe MIME "text/html" mengindikasikan respons berupa dokumen HTML sehingga browser menampilkan halaman HTML


Siklus Servlet

Servlet mempunyai siklus internal [sun] yaitu :

1.       Memanggil class servlet,

2.       Men-create instance dari servlet,

3.       Memanggil method init,

4.       Memanggil method service,

5.       Memanggil method destroy.

Siklus ini di atur oleh web container. Proses 1, 2, 3 hanya berlangsung satu kali, pada saat servlet di panggil untuk pertama kalinya. Setelah proses tersebut, servlet dalam keadaan ready.

Proses 4 akan dilakukan apabila ada request dari client, kemudia web container menangani request, menggunakan method service (doGet, doPost, dll). Apabila terdapat banyak request, akan ditangani oleh web container, dengan multi thread.

Proses 5 dilakukan apabila aplikasi web tidak digunakan lagi atau dimatikan. Web container akan memanggil method destroy untuk melepaskan memory yang terpakai. Proses ini berlangsung satu kali saja.

Membuat Servlet Pertama

Berikut ini contoh program Servlet sederhana yang menampilkan teks "Salam dari Servlet !" ke dalam halaman web pada browser.

/**
 * File SalamServlet.java
 */
package app;
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
// setiap servlet adalah turunan HttpServlet
public class SalamServlet extends HttpServlet
{
                    // inilah 'main' dari Servlet
    public void doGet ( HttpServletRequest rq, HttpServletResponse resp )
    throws ServletException, IOException
    {
        // supaya browser type content data
        resp.setContentType ("text/html");
        // untuk character dan line oriented output
        PrintWriter out = resp.getWriter ( );
        // send salaam
        out.println("<h1>Assalamu'alaikum ...</h1>");
        Date date = new Date();
        out.println(date.toString());
    }
}

Simpan file ini dibawah direktori base_aplikasi/src/java/app

Compile Program Servlet

Proses kompilasi dan deploy aplikasi menggunakan tools ant (detail pada bab II), dengan konsole (shell command) di base direktori aplikasi anda, jalankan perintah :

base_aplikasi]$ ant

Sebelum di deploy Servlet kew servlet container (tomcat), edit terlebih dahulu file web.xml pada direktori (base_aplikasi/web/WEB-INF/web.xml), dengan menambahkan baris berikut:

<servlet>
        <servlet-name>firstServlet</servlet-name>
        <servlet-class>app.SalamServlet</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name<firstServlet>/servlet-name<
        <url-pattern</salam>/url-pattern<
</servlet-mapping>

Penjelasan baris kode pada file web.xml

<servlet>
<servlet-name>firstServlet</servlet-name>
<servlet-class>app.SalamServlet</servlet-class>
</servlet>

berarti : class hasil kompilasi SalamServlet.class yang terdapat dalam package app akan di mapping dengan nama servlet firstServlet

<servlet-mapping>
<servlet-name<firstServlet>/servlet-name<
<url-pattern</salamt>/url-pattern<
</servlet-mapping>

berarti : servlet dengan nama firstServlet mempunyai url /SalamServlet

Deploy Servlet ke Tomcat Web Server

base_aplikasi]$ ant install

Jika sudah pernah deploy aplikasi ke dalam servlet container (tomcat), jalankan perintah :

base_aplikasi]$ ant reload

Akses Servlet

Jika semua berjalan lancar anda bisa mengakses Servlet pertama anda lewat browser dengan url : http://localhost:8080/appweb/salam. 

appweb adalah nama project yang di deploy ke servlet container (tomcat).

Arsitektur Model 2 menggunakan Servlet

Pada kali ini akan diterapkan arsitektur model 2, dimana komponen view menggunakan JSP, komponen controlle menggunakan servlet dan komponen model menggunakan java class Karena saat ini kita baru mempelajari servlet, maka kita cob membuat komponen view dengan menggunakan servlet.

Membuat Komponen View

Komponen view dalam aplikasi web digunakan untuk [SUN] :

*      Menampilkan data, dapat berupa tabel, grafik daftar dsb.

*      Form untuk menginputkan data, user dapat memberikan informasi dengan menginputkan data melalui form.

*      Menampilkan menu, site maps, hyperlink.

*      Menampilkan informasi, seperti welcome text, pesan kesalahan, instruksi dsb.

Untuk memudahkan mengklasifikasikan servlet sebagai komponen view dan komponen controller, pada NetBeans, dibuat package view, package controller serta package model untuk menempatkan servlet sesuai dengan fungsinya.

Membuat Komponen Controller Servlet

Sebagai komponen controller, dapat digunakan untuk [SUN] :

*      Memproses input dari user, user menginputkan data melalui form. dibutuhkan servlet untuk memproses input tersebut, apakah disimpan ke data base atau untuk proses selanjutnya.

*      Mensupport data untuk page informasi, page informasi seperti welcome text, pesan kesalahan, instruksi, memerlukan data. Seperti pada pesan kesalahan (error page), supaya pesan kesalahannya sesuai dengan kesalahan yang terjadi, maka pesan tersebut dikirim dari servlet, dimana kesalahan tersebut terjadi.

*      Mempersiapkan data untuk ditampilkan di komponen view, dalam aplikasi web, data biasanya disimpan dalam data base. Komponen view, hanya untuk mempresentasikan data saja, sedangkan yang mempersiapkan data adalah komponen controller.

0 komentar:

Posting Komentar