Servlets dan JSP

advertisement
Servlets dan JSP
Oleh
Risanuri Hidayat
Memanfaatkan web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>helloservlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hellourl</url-pattern>
</servlet-mapping>
</web-app>
Memanfaatkan web.xml
• Cara memanggilnya
http://localhost:8080/risanuri/servlet/hello
• Atau
http://localhost:8080/risanuri/ hellourl
• Atau
http://localhost:8080/risanuri/servlet/helloservlet.HelloServlet
Memanfaatkan web.xml
Jika test di atas tidak berhasil, kemungkinan
kesalahan yang terjadi adalah
• Salah ketik ketika menulis file web.xml
• Salah meletakkan file web.xml
• Jika anda memakai Jbuilder 4.0 sebagai Java
editor/compiler-nya, bisa secara otomatis dibangkitkan
web.xml-nya. Tetapi file ini memakai nama WEB.XML
(bukan web.xml). Karena file XML bersifat CASE
sensitive, maka sebelum bisa digunakan gantilah namanya
menjadi web.xml (dengan huruf kecil). Demikian juga
dengan file-file *.class-nya, akan terletak di subdirectory
..\CLASSES (bukan classes). Ini juga harus diubah,
menjadi ..\classes.
Servlets dan HTML
•
•
•
•
Kombinasi antara Servlets dan HTML
HTML digunakan sebagai halaman Web
Servlets digunakan untuk program aplikasi
Di dalam HTML terdapat link/action yang akan
menghubungkan ke Servlets
• Servlets menerima perintah dan parameterparameter melalui Httprequest
• Servlets mengeksekusi aplikasi dan menampilkan
hasilnya, melalui Httpresponse
Servlets dan HTML
Contoh: Akan dibuat HTML dan Servlets. HTML
memasukkan form, yang akan ditampilkan
kembali melalui servlets.
• Kita buat file HTML (contoh file: Form.html)
• Letakkan Form.html ke subdirektori
..webapps\risanuri
• Buat program Servlets (contoh nama file java:
HelloSayangServlet01.java, dalam package:
servlet03)
• Compile file Java sehingga menjadi file class:
HelloSayangServlet01.class
Servlets dan HTML
• Letakkan dan atur file-file dengan susunan
sebagai berikut:
..\risanuri\form.html
\WEB-INF\web.xml
\classes\servlet03\HelloSayangServlet01.class
• Test; Aktifkan Tomcat
• Panggil alamat berikut dengan Web
browser:
http://localhost:8080/risanuri/form.html
Servlets dan HTML
• Tekan Submit
Servlets dan HTML
• Hasilnya seperti ini
Servlets dan HTML
<html>
<head>
<title>HTML dan Servlets</title>
</head>
<body bgcolor="#ffffc0">
<form action="http://localhost/risanuri/servlet/servlet03.HelloSayangServlet01"
method="post">
<p>Input <input type="text" name="param0"></p>
<p>Tekan Submit untuk memanggil servlet03.HelloSayangServlet01 metode
post</p>
<p><input type="submit" name="Submit" value="Submit">
<input type="reset" value="Reset"></p>
</form>
</body>
</html>
Nama file : Form.html
Servlets dan HTML
package servlet03;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class HelloSayangServlet01 extends HttpServlet {
private static final String CONTENT_TYPE = "text/html";
/**Initialize global variables*/
public void init() throws ServletException {
}
Nama file Java : HelloSayangServlet01.java
Servlets dan HTML
/**Process the HTTP Post request*/
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
String var0 = "";
try {
var0 = request.getParameter("param0");
}
catch(Exception e) {
e.printStackTrace();
}
Nama file Java : HelloSayangServlet01.java
Servlets dan HTML
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>HelloSayangServlet01</title></head>
");
out.println("<body>");
out.println("<p>Hallo "+var0+"</p>");
out.println("</body></html>");
}
/**Clean up resources*/
public void destroy() {
}
}
Nama file Java : HelloSayangServlet01.java
JSP
• Setiap file *.HTML dapat dikonversi menjadi file
*.JSP
• JSP dapat dieksekusi seperti html
• JSP dapat diprogram seperti Java
• JSP dikonversi ke servlets dahulu sebelum
dikompile
JSP
JSP
Java file
servlet kode
Class file
servlet
My First JSP
• File HTML dapat diubah ke dalam file JSP dengan
mengganti ekstensi file menjadi .jsp. Dengan file JSP, kita
dapat memprogram Java
• Contoh : hellojsp.jsp
<HTML><BODY>
Hallo Sayang!<br>
Sekarang ini : <%= new java.util.Date() %>
</BODY>
</HTML>
• Simbol/Karakter <%= serta %> untuk menyatakan ekspresi
Java di dalamnya
• Hal ini memungkinkan kita untuk membuat halaman Web
dinamis
My First JSP
• Buat subdirektori baru di dalam $CATALINA_HOME
yang sejajar dengan ROOT, misalnya subdirektori myjsp,
$CATALINA_HOME/webapps/myjsp
(atau C:\Program Files\Apache Tomcat 4.0\webapps\myjsp)
• Letakkan file Jsp001.jsp di subdirectory myjsp
• Buat subdirektori baru di dalam myjsp, yang diberi nama
WEB-INF. Letakkan file web.xml ke dalam WEB-INF
(web.xml masih kosong, copy saja dari ROOT)
• Test; aktifkan Tomcat, panggil dengan web browser alamat
berikut
http://localhost:8080/myjsp/hellojsp.jsp
My First JSP
My First JSP
• JSP memungkinkan kita untuk menuliskan kode-kode program Java di
dalamnya, yaitu di antara karakter <% dan %> (Ingat: bukan <%= di
awalnya)
• Blok kode ini dinamakan "scriptlet". Suatu scriptlet mengandung
kode Java yang akan dieksekusi setiap kali file JSP dipanggil
• Berikut ini modifikasi file JSP dari contoh di atas, dengan
menambahkan scriptlet.
<HTML>
<BODY>
<%
System.out.println( "Hari ini hari apa" );
java.util.Date date = new java.util.Date();
%>
Hallo Sayang!
Sekarang ini : <%= date %>
</BODY>
</HTML>
My First JSP
• Simpan file tersebut dengan subdirektori yang
sama dengan nama : hellojsp02.jsp
• Dengan Tomcat yang aktif, panggil alamat
http://localhost/myjsp/hellojsp02.jsp
Catatan : Di dalam scriptlet tidak bisa diselingi dengan kode-kode
html biasa. Semua kode harus dalam kode Java
My First JSP
• "System.out.println" tidak akan
tertampil dalam halaman html, tetapi di
server log. Kita perlu cara lain untuk
menampilkan tulisan di halaman web
• Scriplet menggunakan variabel "out"
untuk keluaran di HTML. Variabel ini tidak
perlu dideklarasikan dahulu karena sudah
terdeklarasikan
My First JSP
<HTML>
<BODY>
<%
// Nama file : hellojsp03.jsp
java.util.Date date = new java.util.Date();
%>
Hallo Sayang! Sekarang ini :
<%
out.println(date);
%>
</BODY>
</HTML>
<HTML>
<BODY>
<%
// Nama file : hellojsp04.jsp
java.util.Date date = new java.util.Date();
out.println("Hallo Sayang ! Sekarang ini :");
out.println(String.valueOf(date));
out.println("<br>Alamat PC-mu adalah");
out.println(request.getRemoteHost());
%>
</BODY>
</HTML>
My First JSP
JSP Directive
• Seperti pada Program Java biasa, kita menggunakan statement
"import" dalam JSP
• Syntax-nya agak berbeda, tapi masih tetap sederhana
• Contoh:
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%
// Nama file : hellojsp05.jsp
Date date = new Date();
out.println(” Hallo Sayang! Sekarang ini : ”);
out.println(date);
%>
</BODY>
</HTML>
Page Directive
• Baris pertama yang diawali dengan <%@ disebut
"directive". Suatu directive JSP selalu diawali dengan
kode karakter <%@
• Baris pertama pada contoh di atas disebut dengan "page
directive". Suatu page directive dapat mengandung semua
package import.
• Untuk mengimport lebih dari satu, dipisah dengan tanda
koma (,)
<%@ page import="java.util.*,
java.text.*”
%>
• Ada sejumlah directive yang lain pada JSP, yang paling
sering terpakai adalah include dan taglib
Include directive
• Include directive digunakan untuk memanggil file
yang lain. File yang dipanggil bisa berupa file
HTML atau JSP atau yang lain. File terpanggil
harus bisa dieksekusi oleh JSP, dalam format
standart JSP
<HTML>
<BODY>
Akan memanggil "hellojsp.jsp"...<br><br>
<%@ include file="hellojsp.jsp" %>
</BODY>
</HTML>
Nama File: hellojsp06.jsp
• Lihat hasilnya di web browser, kita akan lihat
hasilnya seperti pada hellojsp.jsp
Include directive
JSP Declarations
• Kode-kode Java di dalam scriptlets akan menjadi
class. Kode-kode ini terletak di dalam satu metode
pada class tersebut
• Variabel dan metode lain bisa ditambahkan di
dalam scriptlets.
• Pendeklarasian suatu metode atau variabel, harus
terletak di dalam simbol karakter <%! dan %>
• Contoh
JSP Declarations
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%!
Date theDate = new Date();
Date getDate() {
System.out.println( ”Metode
getDate()" );
out.println(”metode geDate()”);
return theDate;
}
%>
Hallo Sayang! Sekarang adalah : <%=
getDate() %>
</BODY>
</HTML>
Nama File:hellojsp07.jsp
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%!
Date date = new Date();
Date getDate() {
System.out.println("metode
getDate()");
return date;
}
%>
<%
out.println("Hallo Sayang! Sekarang
adalah : ");
out.println(getDate());
%>
</BODY>
</HTML>
Nama File:hellojsp08.jsp
JSP Declarations
• http://localhost/myjsp/hellojsp07.jsp
• http://localhost/myjsp/hellojsp08.jsp
JSP Tags
• JSP tag dimulai dengan karakter < (bukan <%)
• JSP tag tampak seperti HTML tag, mempunyai
start tag, body tag, dan end tag.
• Baik start tag dan end tag harus ada nama tag-nya,
dan terletak di dalam karakter < dan >
• End tag dimulai dengan karakter </
• Nama tag diberikan setelah karakter pembuka (<),
setelah itu disisipkan karakter :
<some:tag>body</some:tag>
• Jika suatu tag tidak punya body, maka boleh
digabung. Penutupan tag dengan karakter />
<some:tag/>
JSP Tags
• Ada dua tipe tag, yaitu: pemanggilan library luar dan predefined
tag
• Predefined tag dimulai dengan karakter jsp: characters. Contoh,
jsp:include adalah predefined taguntuk memanggil halaman
yang lain
• jsp:include mirip dengan include directive.
• Contoh penggunaan jsp:include (Bandingkan dengan include
directive)
<HTML>
<BODY>
Akan memanggil
"hellojsp.jsp"...<br><br>
<%@ include file="hellojsp.jsp"
%>
</BODY>
</HTML>
<HTML>
<BODY>
Akan memanggil
"hellojsp.jsp"...<br><br>
<jsp:include page="hellojsp.jsp"/>
</BODY>
</HTML>
Nama file:hellojsp06.jsp
Nama file:hellojsp09.jsp
JSP Tags
• Hasil dari :
http://localhost/myjsp/hellojsp09.jsp
JSP Tags
• include directive (<%@ include file="hellojsp.jsp" %>)
memanggil file dan menjalankannya ke dalam
halaman jsp/web
• jsp:include memanggil file dengan
berperilaku seperti request-response
• Perilaku yang mirip dengan "jsp:include”
adalah "jsp:forward”
• Cobalah ganti jsp:include dengan
jsp:forward , dan lihat hasilnya. Kedua
predefined tags ini sering sangat berguna di dalam
halaman jsp
JSP Sessions
• ”session” sangat berguna untuk mendata client
yang masuk
• Session adalah object yang berhubungan dengan
suatu client. Data dapat diletakkan di session dan
diambil dari session itu
• Contoh : getname.html
<HTML>
<BODY>
<FORM METHOD=POST ACTION="SaveName.jsp">
Masukkan Nama-mu ? <INPUT TYPE=TEXT NAME=username
SIZE=20>
<P><INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
JSP Sessions
• Target form adalah "SaveName.jsp", yang akan
menyimpan user's name-nya ke dalam session.
• SaveName.jsp
<%
String name = request.getParameter( "username" );
session.setAttribute( "theName", name );
%>
<HTML>
<BODY><A HREF="NextPage.jsp">Continue</A>
</BODY>
</HTML>
JSP Sessions
• SaveName.jsp menyimpan user’s name ke dalam
session, dan me-link ke halaman lain:
NextPage.jsp
<HTML>
<BODY>
Hello, <%= session.getAttribute( "theName" ) %>
</BODY>
</HTML>
• NextPage.jsp memanggil nama yang tersimpan
Beans dan Form processing
• Form merupakan metode yang sangat sering
dipakai untuk interaksi di dalam web site. Dengan
JSP kita mudah membuat Form processing ini
• Untuk menghandle Form di dalam JSP, kita
mendefinisikan suatu "bean". Kita perlu
mendefinisikan suatu class yang menghubungkan
ke setiap field dalam form. Class harus punya
setters dengan nama yang sesuai dengan nama di
form
Beans dan Form processing
<form method="post">
<html>
<br>Masukkan String : <input
<head>
name="sample">
<title>
<input type="submit" name="Submit"
Jsp001
value="Submit">
</title>
<input type="reset" value="Reset">
</head>
<br>
<jsp:useBean id="Jsp001BeanId"
<br><br>
scope="session"
String yang anda masukkan adalah
class="jsp01.Jsp001Bean" />
:<jsp:getProperty
<jsp:setProperty
name="Jsp001BeanId"
name="Jsp001BeanId"
property="sample" />
property="*" />
</form>
<body>
</body>
<h1>
</html>
JSP Pertama-ku
</h1>
Nama File :Jsp001.jsp
Beans dan Form processing
• Buat subdirektori baru di dalam
$CATALINA_HOME yang sejajar dengan ROOT,
misalnya subdirektori myjsp, sehingga akan
terlihat sebagai berikut
$CATALINA_HOME/webapps/myjsp
(atau C:\Program Files\Apache Tomcat
4.0\webapps\myjsp)
Letakkan file Jsp001.jsp di subdirectory myjsp
Beans dan Form processing
• Buat subdirektori baru di dalam myjsp, yang diberi nama
WEB-INF.
• Letakkan file web.xml ke dalam WEB-INF
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
Beans dan Form processing
• Buat program java dengan nama class dan package
seperti berikut:
package jsp01;
public class Jsp001Bean {
private String sample = "Start value";
/**Access sample property*/
public String getSample() {
return sample;
}
/**Access sample property*/
public void setSample(String newValue) {
if (newValue!=null) {
sample = newValue;
}
}
}
Beans dan Form processing
• Compile Jsp001Bean.java
• Kita letakkan Jsp001Bean.class di :
..\myjsp\WEB-INF\classes\jsp01\ Jsp001Bean.class
• Susunan file menjadi sebagai berikut:
..\myjsp\Jsp001.jsp
\WEB-INF\web.xml
\classes\jsp01\Jsp001Bean.class
Beans dan Form processing
• Start Tomcat
• Dengan Web Browser ketikkan alamat:
http://localhost:8080/myjsp/Jsp001.jsp
Download