Servlet (Introduction)
July 25th, 20061. Struktur Dasar Servlet
Struktur dasar servlet yang menangani method get dan post adalah sebagai berikut :
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorldServlet extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
}
}
Method doGet menerima dan menangani request get dari webserver, sementara request post ditangani oleh method doPost. Parameter req digunakan untuk membaca HTTP header yang datang (misal cookie) dan data dari form HTML. Parameter res digunakan untuk menspesifikasikan respon line dan header misalnya set cookie an set content-type.
Kelas yang akan menjadi servlet harus meng-extend Kelas HttpServlet dan meng-override method doGet atau doPost atau keduanya.
Umumnya servlet mengembalikan halaman HTML. Untuk melakukannya, kita harus memberitahu browser bahwa kita mengirim halaman HTML melalui setting content-type dan kita harus membangun halaman HTML, tag-per tag, melalui perintah println. Contoh :
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWWW extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(”text/html”);
PrintWriter out = response.getWriter();
out.println(”n” +
“n” +
“n” +
“n” +
”
Hello WWW
n” +”");
}
}
2. Membaca data dari form
Contoh form yang datanya akan dibaca oleh servlet :
Contoh Servlet yang membaca data nama :
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class MyNameServlet extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
doPost(req,res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
//*****Read the value of the ‘yourname’ parameter*****
String name=req.getParameterValues(”yourname”)[0];
//*****Construct a response in HTML*****
String reply=”n”+
“n”+
“n”+
”
n”+
“Hello “+name+”n”+
“nn”;
//*****Send the reply*****
res.setContentType(”text/html”);
PrintWriter out=res.getWriter();
out.println(reply);
out.close();
}
}
Hampir sama dengan PHP, servlet membaca variabel dengan cara menggunakan parameter req yang bertipe HttpServletRequest, dengan memanggil method getParameterValues(“yourname�).
3. Penanganan Cookie
Untuk mengeset cookie dapat dilakukan dengan menggunakan method addCookie( ) milik HttpServletResponse, sedangkan untuk membaca cookie menggunakan method getCookie( ) milik HttpServletRequest. Contoh, program diatas dapat dimodifikasi untuk menangani cookie sebagai berikut :
Untuk mengeset cookie : res.addCookie(new cookie(”MyNameServlet_cookie”,name));
Untuk membaca cookie : req.getCookies();
4. Penanganan Session
Penanganan session hampir sama dengan penanganan cookie. Caranya seperti contoh potongan program berikut.
//mengeset session
HttpSession session=req.getSession(true);
session.putValue(”name”, name);
//membaca session
HttpSession session=req.getSession(false);
String output=”No Session”;
if (session!=null)
output=”Hello “+session.getValue(”name”);
Maksud parameter pada method getSession( ) adalah :
True : Jika tidak ada, buat session baru
False : tidak membuat session baru
5. Koneksi database
Untuk membangun koneksi ke database, kita membutuhkan JDBC API. Langkah pertama adalah me-load kelas driver yang spesifik ke JVM. Caranya dengan menggunakan method Class.forName( ). Contoh :
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
Saat driver tersebut di-load ke memori, ia meregistrasi dirinya dengan kelas java.sql.DriverManager. Langkah berikutnya adalah dengan menggunakan kelas DriverManager untuk membuka koneksi. Method yang digunakan adalah DriverManager.getConnection( ) yang mengembalikan kelas yang mengimplementasi interface java.sql.Connection. Contoh :
Connection con =
DriverManager.getConnection(”jdbc:odbc:somedb”, “user”, “passwd”);
Langkah berikutnya setelah koneksi terbangun adalah mengeksekusi query. Cara termudah adalah menggunakan kelas java.sql.Statement. Untuk membuat objek statement yang baru, digunakan method Connection.createStatement( ). Contoh :
Statement stmt = con.createStatement(); //con adalah instance dari kelas Connection.
Query yang mengembalikan dataset dapat dieksekusi dengan method Statement.executeQuery( ) yang mengembalikan java.sql.ResultSet. Contoh :
ResultSet rs = stmt.executeQuery(”SELECT * FROM CUSTOMERS”);
Untuk melakukan iterasi terhadap ResultSet dapat dilakukan seperti contoh berikut :
while(rs.next()) {
String event = rs.getString(”event”);
Object count = (Integer) rs.getObject(”count”);
}
