You are on page 1of 16

JSP

JSP dan SERVLET DAN


SMK TELKOM SANDHY PUTRA MALANG SERVL
Jalan Danau Ranau Sawojajar Malang
Tahun Pelajaran 2009/2010 ET
SMK TELKOM SP MALANG  Tahun Pelajaran 2009/2010 [Type your
address]  [Type
your phone number]
— [Type your e-mail
address]

Nama: Herdianto
Kelas: 3RPL2
Absen: 32
Java Server Pages (JSP)

Pengenalan JSP
Java Server Pages (JSP) merupakan perluasan dari spesifikasi Java Servlet, yang
bertujuan untuk menyederhanakan dalam pengembangan suatu content yang dinamis.
JSP merupakan bagian dari teknologi J2EE,bersama-sama dengan Servet, EJB, JNDI,
XML. JSP dan Servlet bekerja dalam suatu lingkungan web container yang
menyediakan koneksi dan service, sedangkan JSP dan Servlet mengontrolpresentasi
data yang dihasilkan dari suatu proses untuk dikirimkan ke client.

Server yang menangani permintaan JSP seperti sebuah kompiler halaman yang
menggabungkan template HTML dengan kode Java yang dinyatakan pada elemen
JSP.
Sebuah JSP ketika akan dijalankan, web container akan memeriksa status class
servlet terakhir, jika belum Ada atau berstatus lama, maka container akan melakukan
kompilasi terhadap file JSP untuk dihasilkan suatu servlet yang menerapka interface
HttpJspPage berdasar isi dari halaman JSP. Dari Servlet inilah kemudian dijalankan
method _jspService untuk menghasilkan response dengan menggunakan class
HttpServletRequest dan HttpServletResponse.
Untuk dapat menggunakan JSP, terdapat dua package tambahan lain :
● package javax.servlet.jsp
berisi kelas-kelas dan method utama JSP
● package javax.servlet.jsp.tagtest
berisi kelas-kelas dan method untuk custom tag

2
Apache Tomcat Web Server
Seperti halnya skrip-skrip server side yang lain, JSP pun memerlukan Web
Server. Skrip ASP memerlukan IIS sebagai web server, PHP memerlukan IIS atau
Apache sedangkan JSP bisa menggunakan Apache Tomcat sebagai salah satu web
server yang mendukungnya.

Installasi Apache Tomcat


Paket yang diperlukan untuk proses installasi adalah :
 Java 2 Software Development Kit (J2SDK) (http://java.sun.com/j2se/)
 Apache Tomcat (http://jakarta.apache.org)

Langkah atau urutan installasi :


 install J2SDK
 install Apache Tomcat

Setelah melewati tahapan installasi di atas maka untuk mencoba maka tahapan yang
dilakukan adalah :
 Start Tomcat (pada sistem operasi MS Windows, pilih Start | Program |
Apache Tomcat | Start Tomcat).
 Buka web browser, kemudian ketikkan URL berikut http://localhost:8080.
Hasilnya bisa dilihat pada gambar berikut.

Konfigurasi
File konfigurasi Apache Tomcat ada 3 yaitu :
 server.xml, setting konfigurasi server seperti port atau direktori yang
digunakan.
 users.xml atau tomcat-users.zml, menyimpan user dan password pada server.
Selain itu juga menentukan hak akses dari user.
 web.xml, setting konfigurasi untuk setiap aplikasi web.

3
Secara default “direktori kerja utama" adalah <TOMCAT-
HOME>/webapps/ROOT. Apabila user ingin mendeklarasikan direktori misalnya
pada D:\Dokumen\Web\JSP sebagai "direktori kerja utama" maka yang perlu
dilakuka adalah memodifikasi file server.xml pada bagian:

<!-- Tomcat Root Context -->


<Context path="" docBase="ROOT" debug="0"/>

menjadi :
<!-- Tomcat Root Context -->
<Context path="" docBase="D:\Dokumen\Web\JSP" debug="0"/>

apabila kita ingin mengakses suatu direktori kerja C:\app\JSP dengan URL sebagai
berikut
http://localhost:8080/jsp/ maka pada server.xml bisa disetting seperti berikut :

<!-- Tomcat Examples Context -->


<Context path="/jsp" docBase="C:\app\JSP\" debug="0" reloadable="true"/>

Selain dengan cara di atas, untuk melakukan konfigurasi “direktori kerja” dan
URL yang diinginkan bisa digunakan fasilitas yang diberikan oleh Apache Tomcat
4.1 yaitu Manger. Untuk mengaksesnya dapat digunakan URL sebagai berikut:

http://localhost:8080/manager/html.
Maka akan dimunculkan tampilan sebagai berikut :

4
Untuk mengetahui user apa yang bisa mengakses direktori manager dan
password dari user tersebut bisa dilihat daftar user pada file users.xml atau tomcat-
users.xml. Sebagai contoh isi file tersebut adalah:

<?xml version='1.0' encoding='utf-8'?>


<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>

Pada baris berikut dapat diketahui bahwa user admin dengan password admin
dapat mengakses manager.
<user username="admin" password="admin" roles="admin,manager"/>

Dan berikut adalah tampilan dari URL http://localhost:8080/manger/html

Pada halaman di atas bisa dilihat “direktori kerja” yang telah dibuat, serta
fasilitas untuk Stop, Reload dan Remove. Perintah Reload biasanya digunakan untuk
me-refresh Servlet yang baru dimodifikasi, karana untuk melihat perubahan dari
modifikasi sebuah Servlet tidak bisa dilakukan dengan cara me-refresh web browser.

5
JSP merupakan bahasa pemrograman web dimana penulisannya menggunakan
tag-tag yang memiliki aturan penulisan sama dengan XML. Penulisan program JSP
menggunakan tag-tag yang disebut skriplet.
Saat pertama kali file JSP dipanggil maka JSP akan dikompilasi menjadi
Servlet yang kemudian disimpan di memori server sehingga proses pada pemanggilan
berikutnya dapat berlangsung lebih cepat.

Tag asli JSP pada dokumen HTML


Tag Fungsi Contoh
<%-- --%> Komentar <%-- ini komentar --%>
<%= %> Ekspresi (sebagai String) <%= new java.util.Date()%>
<%! %> Deklarasi <%! Date d = new Date();%>
<% %> Fragmen Kode Program <%
for (int i=0;i<10;i++)
%>
<%@ %> Directive <%@ page import=”java.util.*” %>

Objek Implisit
Setiap halaman JSP berisi variabel penunjuk ke objek servlet yang disebut objek
implisit yang sudah terdefinisikan dan siap digunakan. Variabel ini memiliki ruang
lingkup :
Lingkup Keterangan
Application - Dimiliki oleh container JSP
- dapat dimanipulasi oleh sembarang Servlet
atau aplikasi
Page - Ada pada halaman yang mendefinisikan
- Instance individu untuk tiap halaman
Request - ada selama waktu Request
Session - ada untuk selama session client

Objek implisit yang disediakan


Nama Tipe Fungsi
Application
application javax.servlet.ServletContext Berisi atribut seluruh
aplikasi
Page
config javax.servlet.ServletConfig Sebagai Objek representasi
dari konfigurasi JSP yang
tersimpan pada Web
Descriptor (web.xml)
exception ava.lang.Throwable Sebagai directive untuk
halaman error
out javax.servlet.jsp.JspWriter Output stream untuk
response
response javax.servlet.ServletRequest Membuat output response
pages java.lang.Object Sebagai this untuk

6
menunjuk ke halamannya
sendiri
pageContext javax.servlet.jsp.PageContext Berisi atribut halaman
Request
request javax.servlet.ServletRequest Wakil dari Request user
Session
session javax.servlet.http.HttpSession Berisi variabel yang
disertakan pada session user

Contoh penggunaan objek implisit:


<%@page contentType="text/html"%>
<html>
<head><title>Objek Implisit</title></head>
<BODY>
<H2>Mencoba Objek Implisit</H2>
<UL>
<LI>Waktu saat ini: <%= new java.util.Date() %>
<LI>Server: <%= application.getServerInfo() %>
<LI>Session ID: <%= session.getId() %>
<LI>Nilai parameter <CODE>Nama</CODE> :
<%= request.getParameter("Nama") %>
</UL>
</BODY>
</HTML>

Directive
Mendefinisikan atribut yang digunakan oleh seluruh halaman JSP.
Contohpemakaiannya :
<%@ page language=”java” import=”java.util.*, java.io.*” %>

Beberapa atribut directive page :


Atribut Keterangan
language Mendefinisikan bahasa yang digunakan pada code fragmen
extends Mendefinisikan kelas induk dari servlet yang dihasilkan
import Mendefinisikan daftar kelas-kelas yang diimport session
Menentukan apakah sebuah objek session harus didefinisikan
session Menentukan apakah sebuah objek session harus didefinisikan
buffer Mengontrol ukuran buffer keluaran response
autoFlush Jika 'false', jika terjadi buffer overflow akan muncul exception,
jika 'true', buffer akan diflush ke stream output
isThreadSafe Jika 'false', container JSP hanya mengerjakan 1 request

7
info Mendefinisikan suatu String yang dapat dipanggil dengan
method getServletInfo()
errorPage Mendefinisikan URL yang akan dikirimi sembarang objek
Exception atau Error
isErrorPage Jika 'true', page aktif adalah error page juga
contentType Mendefinisikan nilai tipe header MIME
Tag-tag kompatibel dengan XML
Tag-tag asli JSP dapat dituliskan dengan bentuk elemen XML, yang
menggunakan namespace “jsp:” untuk tiap elemennya.

Berikut adalah persamaan tag JSP dengan XML :


Tag JSP XML Tag Contoh
<%= %> <jsp:expression> <jsp:expression></jsp:expression>
<%! %> <jsp:declaration> <jsp:declaration>String ver=”v1.0”
</jsp:declaration>
<% %> <jsp:scriptlet> <jsp:scriptlet>
for(int i=0;i<10;i++)
</jsp:scriptlet>
<%@ %> <jsp:directive/> <jsp:directive.page language=”java”/>
<jsp:include/> <jsp:include page=”copy.html”/>
<jsp:forward/> <jsp:forward page=”url.html” />
<jsp:param/> <jsp:param name=”nm” value=”xxx”/>
<jsp:getProperty/> <jsp:getProperty name=”nmBean”
property=”nmProp”/>
<jsp:setProperty/> <jsp:setProperty name=”nmBean”
property=”nmProp” value=”xxxx”/>
<jsp:useBean/> <jsp:useBean id=”nmBean”
scope=”request” class=”classBean”/>
<jsp:plugin/> <jsp:plugin type=”applet”
code=”nmApplet” width=”w”
height=”h”/>

Terdapat perbedaan jika Anda menggunakan <%@ include file=”url” %> dengan
<jsp:include page=”url” />, antara lain :
untuk tag <%@ include file=”url” %> :
● file dibaca dan disisipkan pada halaman JSP sebelum halamanditerjemahkan
● file dapat berisi JSP
untuk tag <jsp:include page=”url” /> :
● hasil dari url di sisipkan ke dalam halaman JSP pada saat request
● file yang diinclude tidak dapat berisi JSP

8
SERVLET

Definisi Servlet
Servlet merupakan class yang didefinisikan dalam java dan digunakan untuk meningkatkan
kemampuan web server dalam menangani request dan response client. Servlet dapat menerima request
dan menghasilkan response melalui protokol komunikasi yang berbeda, tetapi sebagian besar tipe yang
digunakan adalah HTTP Servlet, yang diimplementasikan dengan class java javax.servlet.httpServlet.

Method Dalam Servlet


Java memiliki dua paket yang menyediakan interface dan class untuk servlet, yaitu javax.servlet
dan javax.servlet.http. Beberapa method yang terdapat pada interface servlet, antara lain adalah :
Method Keterangan
void init (ServletConfig config)
Method ini dipanggil hanya sekali selama siklus servlet dan pemanggilan secara
otomatis. Method ini digunakan untuk inisialisasi servlet.
ServletConfig getServletConfig()
Method ini mengembalikan reference ke objek yang mengimplementasikan interface
ServletConfig. Objek ini memungkinkan servlet mengakses konfigurasi informasi
servlet seperti inisialisasi parameter dan ServletContex, yang memungkinkan servlet
memiliki akses ke lingkungannya, seperti pengaksesan ke server dimana servlet
dijalankan.
void service (ServletRequest request, ServletResponse response)
Method ini merupakan method pertama yang dipanggil pada setiap servlet untuk
merespons request client.
String getServletInfo()
Method ini didefinisikan programmer servlet untuk mengembalikan String yang berisi
informasi servlet seperti author dan versi servlet.
Void destroy()
Method ini sering disebut clenUp. Method ini untuk mendealokasi resource yang
digunakan servlet.
Paket servlet mendefinisikan dua buah class abstract yang mengimplementasikan interface Servlet,
yaitu class GenericServlet pada paket javax.servlet dan class HttpServlet pada paket javax.servlet.http.
Contoh-contoh yang diberikan pada bagian ini diturunkan dari class HttpServlet, yang mendefinisikan
kemampuan pemrosesan servlet untuk mewarisi fungsionalitas web server. Method utama yang
terdapat pada setiap servlet adalah methot service, yang memiliki parameter berupa objek
ServletRequest dan ServletResponse. Kedua objek ini menyediakan akses untuk input stream maupun
output stream dan mengijinkan servlet untuk membaca data dari client dan mengirimkan data kembali
ke client. Jika terdapat masalah selama eksekusi servlet, maka class ServletException atau IOException
di passing untuk memberitahukan masalah yang terjadi.

Class HttpServlet akan melakukan override method service untuk membedakan antara request
yang diterima web browser client. Dua tipe request yang paling umum digunakan adalah GET dan
POST, yang sering disebut sebagai request method. Request GET digunakan untuk mendapatkan atau
menerima informasi dari server yang berupa file HTML atau image. Sedangkan request POST

9
digunakan untuk mengirimkan data ke server dalam bentuk HTML yang berisi data yang dimasukan
oleh client. Method yang sering digunakan untuk memberikan respon terhadap request client adalah
doGet dan doPost yang memiliki dua parameter, yaitu HttpServletRequest dan HttpServletResponse.
Beberapa method yang berasal dari ServletRequest adalah sebagai berikut :
Method Keterangan
String getParameter(String name)
Dikirim ke servlet sebagai bagian request GET atau POST.
Enumeration getParameterNames()
Mengembalikan nama seluruh parameter yang dikirim ke servlet sebagai bagian dari
request POST.
String[] getParameterValues(String name)
Mengembalikan array of string yang berisi nilai untuk parameter servlet
Cookie[] getCookies()
Mengembalikan array of cookie, merupakan objek client yang disimpan di server.
Cookies dapat digunakan untuk mengidentifikasikan secara unik setiap client oleh
server.
HttpSession getSession(Boolean create)
Mengembalikan objek HttpSession yang sedang berlasung pada client. Parameter akan
bernilai jika tidak terdapat objek Httpsession di client. Secara fungsionalitas memilki
kegunaan yang sama dengan Cookies.
Beberapa method yang berasal dari ServletResponse adalah sebagai berikut :
Method Keterangan
void addCookie(Cookie cookie)
Digunakan untuk menambahkan cookie pada header sebagai respons ke client.
ServletOutputStream getOutputStream()
Mendapatkan output stream berbasis byte yang memungkinkan data teks dikirim ke
client.
PrintWriter getWriter()
Mendapatkan output stream berbasis karakter yang memungkinkan data binary
dikirim ke client.
Void setContentType(String type)
Menspesifikasikan type MIME respons ke browser.

Penanganan request HTTP GET


Tujuan utama adalah untuk menerima content dari suatu URL. Content biasanya dalam bentuk
HTML. Dibawah ini diberikan contoh program servlet sederhana untuk menangani request HTTP Get
untuk menerima content dari suatu URL.
Listing Program 1.1.
// Nama file : HTTPGetServlet.java
// Diskripsi : Membuat dan mengirimkan halaman web ke client

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HTTPGetServlet extends HttpServlet {


public void doGet( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException
{

10
PrintWriter output;

response.setContentType( "text/html" ); //tipe content


output = response.getWriter(); // get writer

// membuat dan melakukan send halaman HTML ke client


StringBuffer buf = new StringBuffer();
buf.append( "<HTML><HEAD><TITLE>\n" );
buf.append( "Contoh Servlet Sederhana\n" );
buf.append( "</TITLE></HEAD><BODY>\n" );
buf.append( "<H1>Program Servlet Sederhana!</H1>\n" );
buf.append( "</BODY></HTML>" );
output.println( buf.toString() );
output.close(); // close PrintWriter stream
}
}

Sedangkan file HTML yang mendemonstrasikan servlet untuk menangani Request HTTP GET adalah
sebagai berikut :

Listing Program 1.2.


<!-- Nama file : HTTPGetServlet.html -->
<!-- Deskripsi : Mendemonstrasikan servlet untuk menangani Request HTTP GET -->
<HTML>
<HEAD>
<TITLE>
Contoh Servlet : Request HTTP GET
</TITLE>
</HEAD>
<BODY>
<FORM
ACTION="http://localhost:8080/SERVER2/servlet/HTTPGetServlet"
METHOD="GET">
<P><H2>Tekan tombol Submit agar servlet mengirimkan
file HTML </H2></P>
<INPUT TYPE="submit" VALUE="Submit">
</FORM>
</BODY>
</HTML>

Jika HTTPGetServlet.html dijalankan pada browser, maka akan terlihat tampilan pada browser seperti
Dilakukan dengan memasukan alamat URL pada browser sebagai berikut :

http://localhost:8080/server2/HTTPGetServlet.html

11
Tampilan HTTPGetServlet.html pada Browser

Jika button Submit ditekan, maka servlet akan mengembalikan HTML seperti yang terlihat pada
browser sebagai berikut :

Servlet yang Menangani Request HTTP Get

Menangani Request HTTP POST


Request HTTP Post sering digunakan untuk mengirimkan data dalam bentuk HTML menjadi server-
side form handler yang digunakan untuk memproses data. Dibawah ini diberikan contoh program
servlet sederhana untuk menangani request HTTP Post.

Contoh ini mendeskripsikan survey berbasis web untuk mengetahui minat kebutuhan terhadap suatu
jenis bahasa pemrograman.

12
Listing Program 1.3.
// Nama file : HTTPPostServlet.java
// Diskripsi : Hasil survey menggunakan servlet request HTTP POST

import javax.servlet.*;
import javax.servlet.http.*;
import java.text.*;
import java.io.*;
import java.util.*;

public class HTTPPostServlet extends HttpServlet {


private String namaBahasa[] =
{ "Fortran", "Pascal", "C", "Java", "TidakAda" };

public void doPost( HttpServletRequest request,


HttpServletResponse response )
throws ServletException, IOException
{
int bahasa[] = null, total = 0;
File f = new File( "survey.txt" );

if ( f.exists() ) {
// menentukan responden hasil survey
try {
ObjectInputStream input = new ObjectInputStream(
new FileInputStream( f ) );

bahasa = (int []) input.readObject();


input.close(); // close stream

for ( int i = 0; i < bahasa.length; ++i )


total += bahasa[ i ];
}
catch( ClassNotFoundException cnfe ) {
cnfe.printStackTrace();
}
}
else
bahasa = new int[ 5 ];

// membaca responden hasil survey current


String value =
request.getParameter( "jBahasa" );
++total; // update total of all responses

// menentukan bahasa yang dipilih dan melakukan update total


for ( int i = 0; i < namaBahasa.length; ++i )
if ( value.equals( namaBahasa[ i ] ) )
++bahasa[ i ];

// menulis update total ke disk


ObjectOutputStream output = new ObjectOutputStream(

13
new FileOutputStream( f ) );

output.writeObject( bahasa );
output.flush();
output.close();

// menghitung persentase
double percentages[] = new double[ bahasa.length ];

for ( int i = 0; i < percentages.length; ++i )


percentages[ i ] = 100.0 * bahasa[ i ] / total;

// mengirim message terima kasih ke clien


response.setContentType( "text/html" );//content type

PrintWriter responseOutput = response.getWriter();


StringBuffer buf = new StringBuffer();
buf.append( "<html>\n" );
buf.append( "<title>Terima Kasih!</title>\n" );
buf.append( "Terima Kasih untuk partisipasinya.\n" );
buf.append( "<BR>Hasil Survei :\n<PRE>" );

DecimalFormat twoDigits = new DecimalFormat("#0.00");


for ( int i = 0; i < percentages.length; ++i ) {
buf.append( "<BR>" );
buf.append( namaBahasa[ i ] );
buf.append( ": " );
buf.append(twoDigits.format(percentages[ i ]) );
buf.append( "% responden: " );
buf.append( bahasa[ i ] );
buf.append( "\n" );
}

buf.append( "\n<BR><BR>Total responden: " );


buf.append( total );
buf.append( "</PRE>\n</html>" );

responseOutput.println( buf.toString() );
responseOutput.close();
}
}

Sedangkan file HTML yang mendemonstrasikan servlet untuk menangani Request HTTP POST adalah
sebagai berikut :

14
Listing Program 1.4.
<!—Nama file : HTTPPostServlet.html -->
<!-- Diskripsi : Mendemonstrasikan servlet untuk menangani Request HTTP GET -->

<HTML>
<HEAD>
<TITLE> Contoh Servlet : Request HTTP POST </TITLE>
</HEAD>

<BODY>
<FORM METHOD="POST" ACTION=
"http://localhost:8080/SERVER2/servlet/HTTPPostServlet">
Bahasa Pemrograman yang paling banyak dibutuhkan<BR><BR>
<INPUT TYPE=radio NAME=jBahasa VALUE=Fortran>Fortran<BR>
<INPUT TYPE=radio NAME=jBahasa VALUE=Pascal>Pascal<BR>
<INPUT TYPE=radio NAME=jBahasa VALUE=C>C<BR>
<INPUT TYPE=radio NAME=jBahasa VALUE=Java>Java<BR>
<INPUT TYPE=radio NAME=jBahasa VALUE=TidakAda CHECKED>TidakAda
<BR><BR><INPUT TYPE=submit VALUE="Submit">
<INPUT TYPE=reset>
</FORM>
</BODY>
</HTML>

Jika HTTPPostServlet.html dijalankan pada browser, maka akan terlihat tampilan pada browser seperti
pada gambar 1.3 :

Dilakukan dengan memasukan alamat URL pada browser sebagai berikut :


http://localhost:8080/server2/HTTPPostServlet.html

Tampilan HTTPPostServlet.html pada Browser


Jika tombol submit ditekan, maka servlet akan mengembalikan dokumen HTML sebagai berikut :

15
Servlet yang Menangani Request HTTP Post

16

You might also like