JSP 01

12

Click here to load reader

Transcript of JSP 01

Page 1: JSP 01

Tutorial DasarJava Server Pages (JSP)

Pengenalan JSPJava Server Pages (JSP) merupakan perluasan dari spesifikasi JavaServlet, yang bertujuan untuk menyederhanakan dalam pengembangansuatu 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 yangmenyediakan 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 halamanyang menggabungkan template HTML dengan kode Java yang dinyatakanpada elemen JSP.

Sebuah JSP ketika akan dijalankan, web container akan memeriksa statusclass servlet terakhir, jika belum Ada atau berstatus lama, maka containerakan melakukan kompilasi terhadap file JSP untuk dihasilkan suatu servletyang menerapka interface HttpJspPage berdasar isi dari halaman JSP.Dari Servlet inilah kemudian dijalankan method _jspService untukmenghasilkan response dengan menggunakan classHttpServletRequest dan HttpServletResponse.

Untuk dapat menggunakan JSP, terdapat dua package tambahan lain :

JSP – Budi Susanto 1

Web BrowserHTML, Applet, Image, dll.

Perangkat dengan Kemampuan Internet

Web Server/Web ContainerFiles JavaServer pages Servlets

Enterprise JavaBean, Java Bean, JDBC

Database Server

HTML, XML, Objek, Multimedia, dsb

SQL, Resultset, XML

SQL, Resultset, XML

Client

Server pengendali presentasi

Business Logic

Database

Page 2: JSP 01

● package javax.servlet.jspberisi kelas-kelas dan method utama JSP

● package javax.servlet.jsp.tagtestberisi kelas-kelas dan method untuk custom tag

Membuat JSP PertamaPerhatikan contoh now.jsp berikut :<%@page contentType="text/html"%><html><head><title>JSP Page</title><meta http-equiv = "refresh" content = "60" /><style type = "text/css"> .big { font-family: helvetica, arial, sans-serif; font-weight: bold; font-size: 2em; }</style></head><body><div class="big">Tanggal dan Jam saat ini : <%= new java.util.Date() %> </div></body></html>

Tag asli JSP pada dokumen HTML adalah

Tag Fungsi Contoh

<%-- --%> Komentar <%-- ini komentar --%>

<%= %> Ekspresi (sebagaiString)

<%= new java.util.Date()%>

JSP – Budi Susanto 2

Page 3: JSP 01

Tag Fungsi Contoh

<%! %> Deklarasi <%! Date d = new Date();%>

<% %> Fragmen Kode Program <% for (int i=0;i<10;i++) %>

<%@ %> Directive <%@ page import=”java.util.*” %>

Objek ImplisitSetiap halaman JSP berisi variabel penunjuk ke objek servlet yang disebutobjek implisit yang sudah terdefinisikan dan siap digunakan. Variabel inimemiliki ruang lingkup :

Scope 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

Berikut adalah objek implisit yang disediakan :

Nama Tipe Fungsi

Application

application javax.servlet.ServletContext Berisi atribut seluruh aplikasi

Page Scope

config javax.servlet.ServletConfig Sebagai Objek representasidari konfigurasi JSP yangtersimpan pada WebDescriptor (web.xml)

exception java.lang.Throwable Sebagai directive untukhalaman error

out javax.servlet.jsp.JspWriter Output stream untukresponse

JSP – Budi Susanto 3

Page 4: JSP 01

Nama Tipe Fungsi

response javax.servlet.ServletRequest Membuat output response

pages java.lang.Object Sebagai this untukmenunjuk ke halamannyasendiri

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 yangdisertakan pada session user

Contoh (oimpl.jsp):<%@page contentType="text/html"%><html><head><title>Objek Implisit</title></head><body><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>

Directivepage Directive

JSP – Budi Susanto 4

Page 5: JSP 01

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

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 satwaktu.

info Mendefinisikan suatu String yang dapat dipanggil dengan methodgetServletInfo()

errorPage Mendefinisikan URL yang akan dikirimi sembarang objekException atau Error

isErrorPage Jika 'true', page aktif adalah error page juga

contentType Mendefinisikan nilai tipe header MIME

include Directive untuk memasukan text dari suatu file lain. Berikut bentuk elementnya

<%@ include file=”/xxxx/cr.txt” %>Beberapa ContohA. Contoh pertama akan di coba membuat sebuah form dengan beberapaobjek form, dan dikirim ke myform.jsp dengan metode post.

formku.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>Contoh Form</title></head><body>

JSP – Budi Susanto 5

Page 6: JSP 01

<form action="/myApp/myform.jsp" method="post">Username : <input name="username" type="text" value=""><br>Password : <input name="passwd" type="password" value=""><br>Sex : <input name="sex" type="radio" value="L"><input name="sex"type="radio" value="P"><br>Umur saat ini : <select name="umur"> <option values="1216">12-16</option> <option values="1725">17-25</option>

<option values="2635">26-35</option><option values="36A"> > 35</option>

</select><br>Info lain : <textarea name="infolain" rows=3 cols=20></textarea><br>Minat : <BR><input type="checkbox" name="baca" value="baca">Membaca<BR><input type="checkbox" name="mancing" value="mancing">Memancing<BR><input type="checkbox" name="makan" value="makan">Suka Makan<BR><input type="submit"><input type="reset"></form></body></html>

myform.jsp<%@page contentType="text/html"%><%@page import="java.io.*, java.util.*"%><%String xbaca = request.getParameter("baca"); String xmancing = request.getParameter("mancing"); String xmakan = request.getParameter("makan"); %><html><head><title>Hasil Pembacaan myForm</title></head><body><H3>Hasil pembacaan form :</H3><UL><LI>Username : <B><%= request.getParameter("username") %></B></LI><LI>Password : <B><%= request.getParameter("passwd") %></B></LI><LI>Jns Kel. : <B><%= request.getParameter("sex") %></B></LI><LI>Umur : <B><%= request.getParameter("umur") %></B> th</LI><LI>Info Lainnya : <B><%= request.getParameter("infolain") %></B></LI><LI>Minat : </LI><% if (xbaca != null) { %> <UL><LI><B><%= xbaca %></B></LI></UL><%} if (xmancing != null) { %> <UL><LI><B><%= xmancing %></B></LI></UL><%} if (xmakan != null) { %> <UL><LI><B><%= xmakan %></B></LI></UL><%} %></UL></body></html>

JSP – Budi Susanto 6

Page 7: JSP 01

B. Contoh berikut ini adalah contoh JSP melakukan operasi database kemySQL, yang secara prinsip tidak berbeda dengan pemakaian JDBCdengan Servlet.

pDB.jsp<%@page contentType="text/html"%><%@page import="java.io.*, java.sql.*, java.net.*, java.util.*"%><html><head><title>Get/Put Data ke DB</title></head><body><% String nm = request.getParameter("Nama"); String alm = request.getParameter("Alamat"); try { Class.forName("org.gjt.mm.mysql.Driver"); String conStr = "jdbc:mysql://localhost/test?user=root&password=password"; java.sql.Connection conn; conn = java.sql.DriverManager.getConnection(conStr); java.sql.Statement statement = conn.createStatement(); int rows = statement.executeUpdate( "insert into test values ('"+nm+"', '"+alm+"')"); String query = "SELECT * FROM test"; ResultSet resultSet = statement.executeQuery(query); while(resultSet.next()) { out.println(resultSet.getString(1) + " " + resultSet.getString(2) + "<BR>"); } } catch (ClassNotFoundException cnfe) { System.out.println("Error loading driver: "+ cnfe); } catch (java.sql.SQLException e) { System.out.println("Error loading driver: "+ e); }%></body></html>

C. Contoh berikut ini akan dicoba untuk melakukan pemanfaatan directivepage untuk penanganan kesalahan.

JSP – Budi Susanto 7

Page 8: JSP 01

Tryerr.jsp<%@page contentType="text/html"%><%@ page errorPage="/kmjam.jsp" %><html><head><title>Kecepatan</title></head><BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><THCLASS="TITLE">Kecepatan</TABLE><%!private double toDouble(String value) { return(Double.parseDouble(value));}%><%double km = toDouble(request.getParameter("km"));double wkt = toDouble(request.getParameter("wkt"));double speed = km/wkt;%><UL><LI>Jarak: <%= km %> km.<LI>Waktu: <%= wkt %> Jam.<LI>Kecepatan: <%= speed %> km/jam.</UL></BODY></HTML>

kmjam.jsp<%@page contentType="text/html"%><%@ page isErrorPage="true" %><%@ page import="java.io.*" %><html><head><title>JSP Page</title></head><BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">Kesalahan Perhitungan Kecepatan</TABLE><P>tryerr.jsp melaporkan adanya kesalahan berikut :<I><%= exception %></I>. Hal ini terjadi pada bagian berikut :<PRE><% exception.printStackTrace(new PrintWriter(out)); %></PRE></BODY></HTML>

Silahkan Anda melakukan percobaan, dengan melakukan request ke URLmisalnya :

http://localhost:8080/myApp/tryerr.jsp?km=10&wkt=5

lalu Anda coba kembali dengan URL berikut :

http://localhost:8080/myApp/tryerr.jsp?km=10&wkt=

JSP – Budi Susanto 8

Page 9: JSP 01

Berikut contoh penanganan kesalahan selain di atas :

tryerr2.jsp<%@page contentType="text/html"%><%@page errorPage="errpg.jsp"%><html><head><title>JSP Page</title></head><body><% String s = request.getParameter("menu");if (s == null) { throw new javax.servlet.jsp.JspException("Pilihan menu tidakvalid!");} else { out.println("<B>Anda memilih menu " + s + "</B>");}%></body></html>

errpg.jsp<%@page contentType="text/html"%><%@page isErrorPage="true"%><html><head><title>JSP Page</title></head><body><H2>Ada Kesalahan!</H2>Sebuah exception <B><%= exception.toString() %></B>muncul!<BR>Exception tersebut melaporkan pesan : <BR><%= exception.getMessage() %></body></html>

Cobalah Anda memanggil tryerr2.jsp berikut

http://localhost:8080/myApp/tryerr2.jsp?menu=nasi+goreng

kemudian, cobalah memanggil tryerr2.jsp berikut :

http://localhost:8080/myApp/tryerr2.jsp

Anda akan mendapatkan halaman errpg.jsp berikut

JSP – Budi Susanto 9

Page 10: JSP 01

Tag-tag kompatibel dengan XMLTag-tag asli JSP dapat dituliskan dengan bentuk elemen XML, yangmenggunakan 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 :

JSP – Budi Susanto 10

Page 11: JSP 01

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

Contoh :

tryinc.jsp<%@page contentType="text/html"%><html><head><title>Berita baru</title></head><BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE"><jsp:include page="/title.jsp"> <jsp:param name="Judul" value="Berita Terbaru!!" /></jsp:include></TABLE><P>Inilah berita terbaru di sekitar kita:<OL><LI><jsp:include page="/news1.html" /><LI><jsp:include page="/news2.html" /></OL></BODY></HTML>

file title.jsp berisi :<H3>PT Wora-Wari Yogyakarta</H3><BR><font size=-1><%= new java.util.Date() %></font><HR width="75%"><H4><%= request.getParameter("Judul")%></H4>

file news1.html berisi :<B>Oracle masuk UKDW.</B> Dengan program OWDP, Oracle telah masuk kebeberapa kampus dalam rangka mengenalkan teknologi Oracle denganbiaya murah. UKDW sebagai salah satu universitas dengan Jurusan TIterbaik di Yogya, telah turut dalam program ini. Kunjungi <AHREF="http://www.ukdw.ac.id/owdp">OWDP Ukdw</A>

file news2.html berisi :

JSP – Budi Susanto 11

Page 12: JSP 01

<B>Cisco NAP akan masuk TI UKDW.</B> Sebagai langkah nyata untukmewujudkan the new bread of professional, FTI UKDW akan bergabung kedalam program CNAP (Cisco Network Academic Program). Kunjungi <AHREF="http://www.ukdw.ac.id/cnap">CNAP Ukdw</A>

JSP – Budi Susanto 12