Bengkel Rekayasa Piranti Lunak
Aplikasi Web Dengan Java
By ekobs@developerforce.netAplikasi Web Dengan Java
Draft 0.1.2
Last update 4 November 2003
Untuk release terbaru, question, troubleshoot dan feedback
kami undang Anda bergabung dengan
Masyarakat J2EE/Linux Indonesia
Bisa dilakukan dengan mengirim email ke
jlinux-subscribe@yahoogroups.com
PENGANTAR
Bagaimana mengembangkan aplikasi Web dengan Java ...
Table of Contents
1Jakarta Tomcat .................................................................................................................. 4
CS-071-011..........................................................................................................................5
CS-071-012........................................................................................................................10
2Aplikasi Web................................................................................................................... 13
CS-071-021........................................................................................................................14
CS-071-022........................................................................................................................17
3HTML............................................................................................................................. 20
CS-071-031........................................................................................................................21
CS-071-033........................................................................................................................23
CS-071-034........................................................................................................................26
CS-071-035........................................................................................................................29
CS-071-036........................................................................................................................32
CS-071-037........................................................................................................................35
4Cara Kerja Servlet ........................................................................................................... 38
5Context ............................................................................................................................ 39
6Java Servlet ..................................................................................................................... 40
7Deployment Servlet di Jakarta Tomcat ........................................................................... 41
8Initialization .................................................................................................................... 42
9HttpServletRequest.......................................................................................................... 43
10HttpServletResponse ..................................................................................................... 44
11Akses Database Melalui Servlet................................................................................... 45
CS-071-111........................................................................................................................46
CS-071-112........................................................................................................................49
CS-071-113........................................................................................................................53
CS-071-114........................................................................................................................56
CS-071-115........................................................................................................................59
CS-071-141........................................................................................................................65
CS-071-142........................................................................................................................66
CS-071-191........................................................................................................................74
CS-071-191........................................................................................................................77
1Jakarta Tomcat
Jakarta Tomcat adalah web application server, yang mempunyai kemampuan sebagai Servlet
container dan JSP container di mana Anda bisa men-deploy Servlet dan JSP. Di atas Jakarta
Tomcat, Servlet dan JSP akan bekerja melayani request dari client, yang lumrahnya adalah
berupa browser.
Untuk bisa menjalankan Jakarta Tomcat, Anda membutuhkan Java Development Kit (JDK).
Untuk instalasi Jakarta Tomcat, Anda bisa men-download binary dari http://jakarta.apache.org ,
dalam format .zip, .tar.gz. Yang Anda perlu lakukan hanyalah men-decompress file tersebut.
Dalam bekerja dengan Jakarta Tomcat, Anda mempunyai sebuah directory yang dikenal sebagai
TOMCAT_HOME. TOMCAT_HOME adalah directory di mana Jakarta Tomcat di-install.
Selanjutnya di bawah TOMCAT_HOME Anda akan menemukan beberapa sub-directory, di
antaranya bin/, conf/, logs/ dan webapp/. Di dalam sub-directory bin/ terdapat file-file
executable terutama untuk menjalankan dan menghentikan Jakarta Tomcat. Di dalam subdirectory
conf/ terdapat file-file untuk configuration. Di dalam sub-directory logs/ terdapat filefile
log. Dan sub-directort webapp/ adalah di mana Anda bisa meletakkan aplikasi Web yang
Anda bangun dengan Servlet dan JSP.
Di bawah sub-directory webapp/ Anda bisa meng-create sub-directory. Sub directory ini akan
dijadikan sebagai Context oleh Jakarta Tomcat.
Anda menjalankan Jakarta Tomcat dengan meng-execute startup.sh di subdirectory bin/.
Sedangkan untuk menghentikan Tomcat Anda meng-execute shutdown.sh di sub directory bin/
juga.
Secara default Jakarta Tomcat siap melayani request dari client melalui port 8080. Melalui Web
browser, Anda bisa menghubungi http://localhost:8080
.
CS-071-011
Sebuah praktikum dengan Servlet yang menggenerate satu halaman Web yang menampilkan
sebuah pesan.
Persiapan
Buat sebuah directory untuk bekerja
misalnya /home/lab/myjava
lalu buat sub directory WEB-INF
dan sub directory WEB-INF/classes
Langkah
Langkah ke-1
Tulis SalamKeadilanServlet.java, simpan di-directory yang sudah dipersiapkan WEB-INF/classes
SalamKeadilanServlet.java
i
mport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
p
ublic class SalamKeadilanServlet extends HttpServlet
{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("Salam keadilan !");
out.println("");
}
}
Langkah ke-2
Compile ...
$ export CLASSPATH=/home/lab/jakarta-tomcat-
4.1.18/common/lib/servlet.jar
$ javac WEB-INF/classes/SalamKeadilanServlet.java
Langkah ke-3
Tulis web.xml, simpan ke sub directory WEB-INF
WEB-INF/web.xml
<
?xml version="1.0" encoding="ISO-8859-1"?>
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
SalamKeadilanServlet
Langkah ke-4
Tulis myjava.xml yang mendefinisikan Web application Context myjava
myjava.xml
<
Context path="/myjava" docBase="/home/lab/myjava/" debug="1"
reloadable="true"/>
Langkah ke-5
Pindahkan myjava.xml ke TOMCAT_HOME/webapps
$
mv myjava.xml /home/lab/jakarta-tomcat-4.1.18/webapps
Langkah ke-6
Terpantau di log dari Tomcat :
2003-10-29 06:46:19 HostConfig[localhost]: Deploying configuration
descriptor myjava.xml
2003-10-29 06:46:19 StandardContext[/myjava]: Starting
2003-10-29 06:46:19 StandardContext[/myjava]: Processing start(),
current available=false
2003-10-29 06:46:19 StandardContext[/myjava]: Configuring default
Resources
2003-10-29 06:46:19 StandardContext[/myjava]: Configuring non-privileged
default Loader
2003-10-29 06:46:19 StandardContext[/myjava]: Configuring default
Manager
2003-10-29 06:46:19 StandardContext[/myjava]: Processing standard
container startup
2003-10-29 06:46:19 WebappLoader[/myjava]: Deploying class repositories
to work directory /home/lab/jakarta-tomcat-
4.1.18/work/Standalone/localhost/myjava
2003-10-29 06:46:19 WebappLoader[/myjava]: Deploy class files /WEBINF/
classes to /home/lab/myjava/WEB-INF/classes
2003-10-29 06:46:19 WebappLoader[/myjava]: Deploy JAR /WEBINF/
lib/calculator.jar to /home/lab/myjava/WEB-INF/lib/calculator.jar
2003-10-29 06:46:19 WebappLoader[/myjava]: Deploy JAR /WEBINF/
lib/jbossall-client.jar to /home/lab/myjava/WEB-INF/lib/jbossallclient.
jar
2003-10-29 06:46:19 WebappLoader[/myjava]: Deploy JAR /WEBINF/
lib/mm.mysql-2.0.8-bin.jar to /home/lab/myjava/WEB-INF/lib/mm.mysql-
2.0.8-bin.jar
2003-10-29 06:46:19 WebappLoader[/myjava]: Deploy JAR /WEBINF/
lib/salamkeadilan.jar to /home/lab/myjava/WEBINF/
lib/salamkeadilan.jar
2003-10-29 06:46:19 WebappLoader[/myjava]: Reloading checks are enabled
for this Context
2003-10-29 06:46:19 ContextConfig[/myjava]: ContextConfig: Processing
START
2003-10-29 06:46:19 StandardContext[/myjava]: Setting deployment
descriptor public ID to ’-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN’
2003-10-29 06:46:19 StandardContext[/myjava]: Setting deployment
descriptor public ID to ’-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN’
2003-10-29 06:46:19 ContextConfig[/myjava]: Accumulating TLD resource
paths
2003-10-29 06:46:19 ContextConfig[/myjava]: Scanning JAR at resource
path ’/WEB-INF/lib/mm.mysql-2.0.8-bin.jar’
2003-10-29 06:46:19 ContextConfig[/myjava]: Scanning JAR at resource
path ’/WEB-INF/lib/jbossall-client.jar’
2003-10-29 06:46:19 ContextConfig[/myjava]: Scanning JAR at resource
path ’/WEB-INF/lib/calculator.jar’
2003-10-29 06:46:19 ContextConfig[/myjava]: Scanning JAR at resource
path ’/WEB-INF/lib/salamkeadilan.jar’
2003-10-29 06:46:19 ContextConfig[/myjava]: Pipline Configuration:
2003-10-29 06:46:19 ContextConfig[/myjava]:
org.apache.catalina.core.StandardContextValve/1.0
2003-10-29 06:46:19 ContextConfig[/myjava]: ======================
2003-10-29 06:46:19 NamingContextListener[/Standalone/localhost/myjava]:
Creating JNDI naming context
2003-10-29 06:46:19 StandardManager[/myjava]: Seeding random number
generator class java.security.SecureRandom
2003-10-29 06:46:19 StandardManager[/myjava]: Seeding of random number
generator has been completed
2003-10-29 06:46:19 StandardContext[/myjava]: Posting standard context
attributes
2003-10-29 06:46:19 StandardContext[/myjava]: Configuring application
event listeners
2003-10-29 06:46:19 StandardContext[/myjava]: Sending application start
events
2003-10-29 06:46:19 StandardContext[/myjava]: Starting filters
2003-10-29 06:46:19 StandardWrapper[/myjava:default]: Loading container
servlet default
2003-10-29 06:46:19 StandardWrapper[/myjava:invoker]: Loading container
servlet invoker
2003-10-29 06:46:19 StandardContext[/myjava]: Starting completed
Langkah ke-8
Servlet telah di-deploy di atas Tomcat web application server, siap melayani request dari browser.
melalui URL :
http://localhost:8080/myjava/SalamKeadilanServlet
Jika Anda melihat source dari halaman Web yang ditampilkan adalah :
Salam keadilan !
CS-071-012
Praktikum lain ...
Prasyarat
Anda harus melakukan praktikum CS-071-011 terlebih dahulu ...
Langkah
Langkah ke-1
Tulis DateServlet.java, simpan di-directory yang sudah dipersiapkan WEB-INF/classes
DateServlet.java
i
mport java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
p
ublic class DateServlet extends HttpServlet
{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Date date = new Date();
SimpleDateFormat format
= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
out.println("");
out.println(format.format(date));
out.println("");
}
}
Langkah ke-2
Compile ...
$ javac WEB-INF/classes/DateServlet.java
Langkah ke-3
Tulis web.xml yang baru ...
WEB-INF/web.xml
<
?xml version="1.0" encoding="ISO-8859-1"?>
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
DateServlet
Langkah ke-4
Terpantau di log dari Tomcat :
2
003-10-17 07:00:07 StandardContext[/myjava]: Stopping
2003-10-17 07:00:07 StandardContext[/myjava]: Stopping filters
2003-10-17 07:00:07 StandardContext[/myjava]: Processing standard
container shutdown
2003-10-17 07:00:07 ContextConfig[/myjava]: ContextConfig: Processing
STOP
2003-10-17 07:00:07 StandardContext[/myjava]: Sending application stop
events
2003-10-17 07:00:07 StandardContext[/myjava]: Stopping complete
2003-10-17 07:00:07 StandardContext[/myjava]: Starting
2003-10-17 07:00:07 StandardContext[/myjava]: Processing start(),
current available=false
2003-10-17 07:00:07 StandardContext[/myjava]: Processing standard
container startup
2003-10-17 07:00:07 WebappLoader[/myjava]: Deploying class repositories
to work directory /home/lab/jakarta-tomcat-
4.1.18/work/Standalone/localhost/myjava
2003-10-17 07:00:07 WebappLoader[/myjava]: Deploy class files /WEBINF/
classes to /home/lab/myjava/WEB-INF/classes
2003-10-17 07:00:07 WebappLoader[/myjava]: Reloading checks are enabled
for this Context
2003-10-17 07:00:07 ContextConfig[/myjava]: ContextConfig: Processing
START
2003-10-17 07:00:07 StandardContext[/myjava]: Setting deployment
descriptor public ID to ’-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN’
2003-10-17 07:00:07 StandardContext[/myjava]: Setting deployment
descriptor public ID to ’-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN’
2003-10-17 07:00:07 ContextConfig[/myjava]: Accumulating TLD resource
paths
2003-10-17 07:00:07 ContextConfig[/myjava]: Pipline Configuration:
2003-10-17 07:00:07 ContextConfig[/myjava]:
org.apache.catalina.core.StandardContextValve/1.0
2003-10-17 07:00:07 ContextConfig[/myjava]: ======================
2003-10-17 07:00:07 NamingContextListener[/Standalone/localhost/myjava]:
Creating JNDI naming context
2003-10-17 07:00:07 StandardManager[/myjava]: Seeding random number
generator class java.security.SecureRandom
2003-10-17 07:00:07 StandardManager[/myjava]: Seeding of random number
generator has been completed
2003-10-17 07:00:07 StandardContext[/myjava]: Posting standard context
attributes
2003-10-17 07:00:07 StandardContext[/myjava]: Configuring application
event listeners
2003-10-17 07:00:07 StandardContext[/myjava]: Sending application start
events
2003-10-17 07:00:07 StandardContext[/myjava]: Starting filters
2003-10-17 07:00:07 StandardWrapper[/myjava:default]: Loading container
servlet default
2003-10-17 07:00:07 StandardWrapper[/myjava:invoker]: Loading container
servlet invoker
2003-10-17 07:00:07 StandardContext[/myjava]: Starting completed
Langkah ke-5
Servlet telah di-deploy di atas Tomcat web application server, siap melayani request dari browser.
melalui URL :
http://localhost:8080/myjava/DateServlet
Jika Anda melihat source dari halaman Web yang ditampilkan adalah :
16/10/2003 08:58:23
2Aplikasi Web
Teknologi inti untuk mengembangkan aplikasi Web dengan Java adalah Servlet. Servlet adalah
sebuah class yang digunakan untuk menerima request dan memberikan response, terutama
melalui protokol HTTP. Anda menulis source code dari Servlet, lalu meng-compile dan mendeploy
di java web server. Selanjutnya client dapat berinteraksi dengan Servlet melalui browser.
Servlet bisa dipandang sebagai class yang bisa digunakan untuk menulis response dalam format
HTML. Ia ditulis sebagaimana lumrahnya sebuah class di dalam bahasa pemrograman Java.
Servlet disimpan sebagai file .java. Untuk mengirimkan response dalam format HTML, Anda
bisa menulisnya melalui obyek PrintWriter, yang didapatkan dari HttpServletResponse.
Dalam perjalananya, dikembangkan teknologi Java Server Page (JSP) di mana Anda bisa menulis
script untuk aplikasi Web dengan bahasa Java.
Berbeda dengan Servlet, JSP bisa dipandang sebagai HTML yang di dalamnya bisa mempunyai
kode-kode Java. JSP disimpan sebagai file .jsp. Menulis JSP adalah seperti menulis file HTML,
kecuali di dalamnya dapat disisipkan kode-kode Java sebagai presentation logic. Kode-kode Java
ini disisipkan melalui directive, sebagai scriplet, atau sebagai expression.
Servlet dan JSP mempunyai kemampuan yang kembar. Keduanya bisa membaca input yang
dikirimkan melalui form di Web, mengakses database melalui JDBC, mengolah data dan menulis
response ke browser. Response lumrahnya dalam format HTML.
Perbedaan Servlet dan JSP lebih kepada proses pengembangannya. Sedangkan dalam operasinya,
keduanya adalah sama. Oleh web application server, JSP akan di-rewrite menjadi Servlet, dicompile
dan selanjutnya akan diperlakukan sebagaimana Servlet.
CS-071-021
Praktikum membaca input dari Servlet ...
Prasyarat
Anda harus melakukan praktikum CS-071-011 terlebih dahulu ...
Langkah
Langkah ke-1
Tulis myform.html, simpan di-directory yang sudah dipersiapkan, dalam contoh adalah
/home/myjava
myform.html
<
html>