630 likes | 887 Views
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.
E N D
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
Sekilas Servlet • Servletadalah suatu ekstensi terhadap web server yang memberikan fungsionalitas tambahan dan programmability • Servletsecara penuh menggunakan platform Java • Servletpada dasarnya adalah kelas Java. Setiap servletmeng-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 Servletke lingkungan web • Deployment pada Web Application Server • Execution • Memahami siklus hidup eksekusinya
Struktur ServletDasar 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
DeploymentServlet • 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 servletdan lainnya) ada dalam direktori ini
Pemetaan Servlet • Kelas Servletperlu dipetakan suatu URI yang dapat diakses (accessible, terutama melalui HTTP) • Agar nyaman, servletdapat diakses dalam pola umum (invoker servlet) • http://[domain]/[context]/servlet/[ServletClassName] • http://localhost:8988/servletintro/servlet/SimpleServlet • Pemetaan spesifik: menggunakan file konfigurasi “web.xml” • Servletdipetakan 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>
doPost() service() doGet() Siklus Hidup Eksekusi Servlet Servlet Class First Request Servlet Instance in Memory init() 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 Servletmenggunakan 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>”);
MenggunakanStringBuffer • 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) User Input Servlet URL parameter Get doGet Get HTML Form doPost Post
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()
Apa Itu JSP • Servlets – HTML dalam kode Java • JSP – Kode Javadalam HTML <HTML> <HEAD> <TITLE>Java Server Pages</TITLE> </HEAD> <BODY> <H1>JSP</H1> <%= “Java Server Pages.” %> <HR> </BODY> </HTML>
Siklus Hidup JSP JSP to Servlet Translation Servlet Compiled Servlet Loaded jspInit() called _jspService() called
Kebutuhan Terhadap JSP • Dengan servlet • Sulit menuliskan dan merawat HTML • Tidak dapat menggunakan tool standard HTML • HTML bersifat inaccessiblebagi 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”
ScriptletJSP • 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 servletyang 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 servletatau 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. • Outputdari JSP atau servletpelengkat 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? • 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 intgetAge(){ 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(); %>