View
69
Download
5
Category
Preview:
DESCRIPTION
Web Engineering 2010 Pertemuan ke-10. Teknologi Aplikasi Web III (Servlet, JSP, Javabeans) Husni husni@if.trunojoyo.ac.id Husni.trunojoyo.ac.id Komputasi.wordpress.com. Outline. Servlet JSP Java Beans Rangkuman. ServletS. Sekilas Servlet. - PowerPoint PPT Presentation
Citation preview
Web Engineering 2010
Pertemuan ke-10
Teknologi Aplikasi Web III(Servlet, JSP, Javabeans)
Husnihusni@if.trunojoyo.ac.id
Husni.trunojoyo.ac.idKomputasi.wordpress.com
Outline
• Servlet• JSP• Java Beans• Rangkuman
SERVLETS
Sekilas Servlet
• Servlet adalah suatu ekstensi terhadap web server yang memberikan fungsionalitas tambahan dan programmability
• Servlet secara penuh menggunakan platform Java
• Servlet pada dasarnya adalah kelas Java. Setiap servlet meng-extends kelas “javax.servlet.http.HttpServlet”
• Kelas-kelas terkait dibungkus dalam paket “javax.servlet” dan “javax.servlet.http”
Aplikasi Web Servlet Java
• Siklus hidup pengembangan Servlet– Development
• Mendefinisikan kelas-kelas servlet, metode dan properti di dalamnya
– Deployment• Pemetaan Servlet ke lingkungan web• Deployment pada Web Application Server
– Execution• Memahami siklus hidup eksekusinya
Struktur Servlet Dasar
public class HelloWorld extends HttpServlet {public void doGet(HttpServletRequest request,
HttpServletResponse response ) throws ServletException, java.io.IOException{ … }
public void doPost(HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{ … }
}
Konstruktor dan Metode “Main”
• Instance servlet instances dibuat (dijalankan) oleh servlet container secara otomatis saat diminta – bukan oleh kelas atau metode pengguna– Tidak perlu mendefinisikan konstruktor
• Titik masuk bukanlag metode “main”, tetapi dua metode– Gunakan “doGet” atau “doPost” untuk
mengerjakan tugas-tugas
Deployment Servlet
• Direktori web content root (public_html)– Titik awal dari aplikasi web keseluruhan– Semua file dan sub-direktori di sini:
html, images, documents …
• /public_html/WEB-INF/– Direktori ini memuat file konfigurasi dan
kelas- ter-compile– Tidak secara langsung dapat diakses dari
web
• /public_html/WEB-INF/classes/– Semua kelas ter-compile (kelas servlet dan
lainnya) ada dalam direktori ini
Pemetaan Servlet
• Kelas Servlet perlu dipetakan suatu URI yang dapat diakses (accessible , terutama melalui HTTP)
• Agar nyaman, servlet dapat diakses dalam pola umum (invoker servlet)– http://[domain]/[context]/servlet/[ServletClassName]
– http://localhost:8988/servletintro/servlet/SimpleServlet
• Pemetaan spesifik: menggunakan file konfigurasi “web.xml”– Servlet dipetakan secara khusus ke suatu URL yang
didefinisikan pengguna
Konfigurasi “web.xml”
• Menggunakan file “web.xml” untuk
pemetaan lebih spesifik– File-file dalam direktori
“WEB-INF”
• Contoh– Kelas Servlet
• HelloWorld.class
– Konteks aplikasi:• http://localhost:8080/servletintro/
– Pemetaaan kelas Invoker• http://localhost:8080/servletintro/servlet/HelloWorld
– Pemetaan spesifik• http://localhost:8080/servletintro/hello
– Contoh pemetaan lain, lihat “web.xml”
<servlet> <servlet-name>HelloW</servlet-name> <servlet-class>HelloWorld</servlet-class></servlet>
<servlet-mapping> <servlet-name>HelloW</servlet-name> <url-pattern>hello</url-pattern></servlet-mapping>
Siklus Hidup Eksekusi Servlet
Servlet Class
Servlet Instance in Memory
init()
service()
doPost()
doGet()
First Request
Subsequent Requests (can
be from different users and sessions)
Pesan Response & Request
• Server dan client web berkomunikasi melalui pesan HTTP (protokol)– Pesan request: client server– Pesan response: server client
• Pesan HTTP terdiri dari header dan body– HTTP header: informasi yang mendeskripsikan
pesan dan konsteks dari pesan– HTTP body: isi yang biasanya ditampilkan
Pemrosesan Request
• Tipe metode request utama– GET
• Data pengguna dikirim sebagai bagian dari URL request
• Tidak ada body pesan request• Tindakan pemicuan: bar alamat (pada browser), link,
form, …
– POST• Data pengguna dikirim dalam body pesan request• Tindakan pemicuan: form, …
Metode doGet()
• Kelas Servlet menggunakan metode “doGet()” untuk memroses request URL umum (servlet)
public void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException,IOException {( generating response message … )
}
Pemrosesan Response
• Response body– Pembangkitan HTML atau content lain untuk
ditampilkan
• Response header– Pengubahan data header dari pesan
response untuk mempengaruhi perilakunya
Pembangkitan Response Content
• Menggunakan “response” (javax.servlet.http.HttpServletResponse) dan “java.io.PrintWriter” untuk menghasilkan HTML ke stream output
java.io.PrintWriter out = response.getWriter();out.println(“<html>”);…out.println(“</html>”);
Menggunakan StringBuffer
• Saat ada perubahan sering terhadap string, penggunakan StringBuffer (java.lang.StringBuffer) lebih efisien
StringBuffer html = new StringBuffer();html.append(“<html>”);html.append(“<head>"); ……String s= html.toString();
• Ini sangat berguna ketika membangkitkan string-string halaman HTML
Penformatan Paragraf HTML
• Menformat kode sumber HTML, atau tampilkan akhir dalam browser?
• Gunakan karakter escape (/n, /t, ...) untuk menformat sumber kode HTML
• Gunakan tag-tag HTML untuk men-format luaran akhir dalam browser– <p>, <br>, …
Pembangkitan HTML Dinamis
• Gunakan kemampuan pemrograman Java untuk membangkitkan HTML secara dinamis– Content dinamis: date/time, user name, ....– Elemen (tag) HTML dinamis– Atribut elemen dinamis– … (kreatiflah!)
Mendapatkan Data Pengguuna
• Dua cara– Parameter URL (Get)
• http:// …/somefile?p1=value1&p2=value2
– Form HTML (Get atau Post)
Servlet
HTML Form
URL parameter
doGet
doPostPost
GetGet
User Input
URL Dengan Parameter• Data pengguna dapat dikirim dengan request “get”
– http:// …/somefile?p1=value1&p2=value2
• Aplikasi– Halaman Template bagi detail item data
• http://www.newegg.com/Product/Product.asp?Item=N82E16827152058• http://www2.cis.gsu.edu/cis/people/display.asp?pk=3
– Pemilihan content halaman• http://forum.java.sun.com/category.jspa?categoryID=20• http://javaweb.jackzheng.net/cis3270su06/index.jsp?page=schedule
– Masukan pengguna• http://www.google.com/search?q=java
– Kondisi/konfigurasi• http://finance.yahoo.com/q/bc?s=MSFT&t=5d&l=on&z=l&q=l• http://msdn.e-academy.com/elms/Storefront/Home.aspx?campus=gsu_cis
– Tampilan/format halaman, content halaman, pesan error, …
Penanganan Parameter “Get”
• Dalam “get” HTTP , data pengguna dikirim dengan URL
– http://…/GetData?p1=value1&p2=value2
• Menggunakan obyek request (diberikan oleh metode doGet) untuk me-retrieve data ini.
– String p1=request.getParameter(“p1”);– String p2=request.getParameter(“p2”);– String p[ ]=request.getParameterValues(“p1”);
• Catatan: nama parameter bersifat case sensitive
Konversi Bilangan
• Semua nilai parameter bertipe String– String p1=request.getParameter(“p1”);
• Bagaimana jika perlu numerik?– Integer.parseInt()– Double.parseDouble()
• Eksepsi konversi harus ditangani
Parameter Tak-reguler
• Nilai hilang (string kosong dikembalikan)– …/GetData?data=
• Parameter hilang (parameter tak terdefinisi, null)– …/GetData? // tak ada parameter– …/GetData?data // ”data” masih tak terdefinisi– …/GetData?Data=red // case sensitive
• Blank (kosong)– …/GetData?data=hello world
• Parameter ganda (redundant)– …/GetData?data=blue&data=red // Gunakan getParameterValues()
JAVA SERVER PAGES
Apa Itu JSP
• Servlets – HTML dalam kode Java• JSP – Kode Java dalam HTML
<HTML><HEAD>
<TITLE>Java Server Pages</TITLE></HEAD><BODY>
<H1>JSP</H1><%= “Java Server Pages.” %><HR>
</BODY></HTML>
Siklus Hidup JSP
JSP to ServletTranslation
JSP to ServletTranslation
ServletCompiledServlet
Compiled
ServletLoadedServletLoaded
jspInit()called
jspInit()called
_jspService()called
_jspService()called
Kebutuhan Terhadap JSP
• Dengan servlet– Sulit menuliskan dan merawat HTML– Tidak dapat menggunakan tool standard
HTML– HTML bersifat inaccessible bagi pengembang
non-java
Keuntungan JSP
• Lebih mudah menuliskan dan merawat HTML
• Dapat menggunakan tool HTML standar
• Dapat mudah membagi tim pengembangan
Keuntungan
• Keuntungan dari Java
• API Berkembang
• Mudah dipelajari
• Komunikasi pengembangan besar
• Dukungan server dan standardisasi
Lokasi Halaman JSP
• Tak seperti servlet, halaman JSP dapat diletakkan dimanapun file HTML diletakkan, tidak harus di direktori tertentu.
Elemen Sripting JSP
• Elemen scripting JSP memungkinkan kita menyisipkan kode Java ke dalam file JSP.
• Ada 3 jenis elemen– Ekspresi <%= Java Expression %>– Scriptlet <% Java Code %>– Deklarasi <%! Field/Method %>
Ekspresi JSP
• Ekspresi JSP digunakan untuk menyisipkan kode Java secara langsung ke dalam output.
Sintaks:
<%= Expression %>
Contoh:
Current Time: <%= new java.util.Date() %>
Output:
Current Time: Tue Aug 22 21:05:47 IST 2006
• Ekspresi dievaluasi, dikonversi ke string dan disisipkan ke dalam halaman.
Variabel Predefined
• Agar ekspresi sederhana, JSP menyediakan sejumlah variabel predefined (obyek impllisit).
– request – HttpServletRequest– response – HttpServletResponse– session – HttpSession– out – Writer (versi ber-buffer dari tipe JspWriter)– application – ServletContext– config – ServletConfig– pageContext – memberikan titik akses tunggal ke atribut
halaman– page – sinonim bagi “this”
Scriptlet JSP
• Penanganan sesuatu yanglebih sekedar meng-output-kan nilai dari ekspresi sederhana.
• Memungkinkan programmer menyisipkan kode tertentu ke dalam metode servlets _jspService.
Sintaks:<% Java Code %>
Contoh:<%
String str = request.getParameter(“name”);out.print(“Name : ”+str);
%>
Deklarasi JSP
• Deklarasi JSP memungkinkan programmer mendefiisikan metode atau field yang dapat disisipkan ke dalam main body dari servlet yang dibangkitkan (diluar metode _jspService())
Sintaks:<%! Field/Method definition %>
Contoh:<%!
private String getMessage(){return “This is a simple message!!”;}
%><%= getMessage() %>
Sintaks XML
• Sintaks mirip XML bagi ekspresi, scriptlet dan deklarasi JSP– <jsp:expression>…</jsp:expression>– <jsp:scriptlet>…</jsp:scriptlet>– <jsp:declaration>…</jsp:declaration>
• Didukung oleh JSP versi 1.2 ke atas
• Bersifat case sensitive, sebaiknya lowercase
Direktif JSP
• Direktif JSP mempengaruhi struktur keseluruhan dari servlet yang dihasilkan dari halaman JSP.
• Direktif JSP berbentuk:– <%@ directive attribute=“value” … … %>
• Ada tiga jenis:– page, include & taglib
Direktif Page JSP
• Direktif Page mengontrol struktur dari servlet dengan mengimpor kelas-kelas, meng-custom superclass, mengubah tipe content, dll.
• Direktif Page JSP mempunyai atribut :– import, contentType, pageEncoding, session,
isELIgnored, buffer, autoFlush, info, errorPage, isThreadSafe, language & extends
Atribut Direktif Page JSP
• import=“java.util.*, java.sql.*”• contentType=“text/html; charset=ISO-8859-1”• pageEncoding=“Shift_JIS”• session=“true/false”• isELIgnored=“false/true”• buffer=“size in kb”• autoFlush=“true/false”• info=“Some info message.”• errorPage=“error.jsp”• isErrorPage=“false/true”• isThreadSafe=“true/false”• language=“java”• extends=“package.class”
Menyertakan File
• Ada tiga cara menyertakan file eksternal ke dalam dokumen JSP.– <jsp:include …>…– <%@ include …>– <jsp:plugin …>…
Aksi jsp:include
• Ini menyertakan output dari halaman sekunder pada waktu halaman utama direquest.
• Output dari sub-halaman harus berupa HTML yang dibangkitkan oleh servlet atau JSP.
<jsp:include page=“/inc/header.jsp” flush=“true” />
<jsp:include page=“/inc/header.jsp” flush=“true”><jsp:param name=“paramName” value=“xyz”>
</jsp:include>
Direktif Include
• Direktif ini digunakan untuk menyertakan suatu file ke dalam JSP utama pada waktu translasi ke dalam servlet.
• Kode dari file yang disertakan ditambahkan ke dokumen JSP.<%@ include page=“/inc/header.jsp” %>
Meneruskan Request
• Aksi ini digunakan untuk mendapatkan output file JSP secara lengkap dari JSP lain atau servlet.
• Output dari JSP atau servlet pelengkat dikirimkan ke client, bukan bagian dari JSP terkini.
<jsp:forward page=“xyz.jsp” />
Aksi jsp:plugin
• Digunakan untuk menempelkan applet Java ke dalam output yang dibangkitkan.
• Applet Java jarang digunakan di web saat ini.
<jsp:plugin type=“applet”code=“MyApplet.class”width=“400” height=“300”>
</jsp:plugin>
JAVA BEANS
Java Beans?
• Apa itu Beans?
• Beans adalah obyek Java standar.– Harus ada konstruktur nol argumen.– Sebaiknya tidak ada field public.– Nilai-nilai diakses melalui pemanggilan metode,
getXxx, setXxx & isXxx.
Java Bean (Contoh)
public class Person {private int age;private String name;… … …public void setAge(int age){
this.age = age;}public void setName(String name){
this.name = name;}public int getAge(){
return this.age;}public String getName(){
return this.name;}
… … …}
Java Beans & JSP
• Ada tiga konstruksi utama untuk menggunakan Java Beans dalam JSP.
– <jsp:useBean ……… />– <jsp:getProperty ……… />– <jsp:setProperty ……… />
jsp:useBean
• Digunakan untuk memuat beans yang akan digunakan dalam dokumen JSP.
Sintaks:<jsp:useBean id=“name” class=“package.Class” />
Contoh:<jsp:useBean id=“person” class=“iiitmk.Person” />
Sama dengan:<% iiitmk.Person person = new iiitmk.Person(); %>
Mendapatkan Properti bean
• Digunakan untuk membaca properti dari beans.
Sintaks:<jsp:getProperty id=“name” property=“propName” />
Contoh:<jsp:getProperty id=“person” property=“name” />
Sama dengan:<%= person.getName() %>
Menseting Properti bean
• Digunakan untuk mengatur nilai dari properti beans.
Sintak:<jsp:setProperty id=“name” property=“propName” value=“propValue” />
Contoh:<jsp:setProperty id=“person” property=“name” value=“Popeye The Sailor” />
Sama dengan:<% person.setName(“Popeye The Sailor”); %>
Parameter Property & Request
• Nilai dari properti bean dapat diset secara langsung dari nilai parameter request yang berkaitan.
Sintaks:<jsp:setProperty id=“name” property=“propName” param=“propName” />
Contoh:<jsp:setProperty id=“person” property=“name” param=“name” /><jsp:setProperty id=“person” property=“*” />
Bagi-pakai Beans (lingkup)
• Lingkup dari suatu bean mendefinisikan dimana bean tersebut disimpan dan bagaimana dapat diakses. Secara default, accessiblenya adalah variabel lokal. Tempat lain penyimpanan bean adalah request, session dan aplikasi (application).
Sintaks:<jsp:useBean … … … scope=“…” />
Lingkup:page, request, session & application
Lingkup Page
• Lingkup default dari suatu bean. Bean diikat ke variabel lokal dalam metode _jspService dan juga diletakkan dalam variabel predefined pageContext, dapat dikases dengan pemanggilan metode getAttribute().
Sintaks:<jsp:useBean … … … scope=“page” />
<jsp:useBean … … … />
Lingkup Request
• Bean juga ditempatkan di dalam obyek the HttpServletRequest (request) selama masa request aktif.
• Dapat diakses dengan metode getAttribute().
Sintaks:<jsp:useBean … … … scope=“request” />
Lingkup Session
• Bean juga diletakkan di dalam obyek HttpSession (session).
• Dapat diakses dengan metode getAttribute().
Sintaks:<jsp:useBean … … … scope=“session” />
Lingkup Application
• Bean juga diletakkan di dalam obyek ServletContext (application). Context dari servlet dishare oleh semua servlet dan JSP dalam aplikasi web.
• Dapat diakses dengan metode getAttribute().
Sintaks:<jsp:useBean … … … scope=“application” />
Rangkuman
• Servlet dan JSP digunakan untuk membangun aplikasi web (server side scripting)
• Servlet: HTML dalam kode Java• JSP: Kode Java dalam HTML• Javabeans merupakan obyek standar
yang terstruktur untuk memudahkan pengembangan aplikasi berbasis Java
Referensi
• Bacaan Utama– Java Servlet Tutorial
• http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html
– Java Server Pages Tutorial• http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPInt
ro.html
– Java Beans Tutorial• http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/
JSPBeans.html
Tools
• Apache Tomcat– http://tomcat.apache.org/
• Eclipse– http://www.eclipse.org/
• Eclipse Web Tools– http://www.eclipse.org/webtools/
Pertanyaan?
Recommended