endy muhardin - struts (id)
TRANSCRIPT
Seri Pemrograman Web
MMENGGUNAKANENGGUNAKAN W WEBEB A APPLICATIONPPLICATION F FRAMEWORKRAMEWORK
StrutsStruts
© 2005 Endy Muhardin <endy at artivisi dot com>last updated 200502021
Daftar IsiI. Arsitektur Dasar Aplikasi Web...............................................................................................1II. Pengenalan Struts....................................................................................................................1
A. Keunggulan Struts..............................................................................................................1B. Framework alternatif..........................................................................................................1
III. Menggunakan Struts..............................................................................................................1A. Instalasi ...............................................................................................................................1B. Hello World...........................................................................................................................1C. Memproses HTML Form.....................................................................................................1D. Validasi Form.......................................................................................................................1E. Mengatur Layout dengan Tiles..........................................................................................1
Java TrainingStruts Web Framework
I. I. Arsitektur Dasar Aplikasi WebArsitektur Dasar Aplikasi WebDalam membangun aplikasi web, kita pasti akan dihadapkan pada tugastugas
pemrograman berikut:
● Menangkap request dari browser
● Memproses request, melakukan business logic, dan menampilkan dynamicpage yang sesuai
● Menerima input berupa HTML Form
● Melakukan validasi HTML Form
● Memproses input dari Form
● Melakukan akses database untuk mengambil data, menambah data, ataumengubah data.
Selain itu, kita juga seringkali harus membuat aplikasi web yang skinnable,seperti WinAMP, yang tampilannya bisa diganti hanya dengan satu klik tombol.
Komunitas programmer mengenal suatu istilah untuk memisahkan tugastugastersebut agar aplikasi yang dibuat menjadi mudah dimaintain. Ada tiga layerutama dalam arsitektur web MVC, yang disebut sebagai bestpractices danbanyak diadopsi oleh para arsitek aplikasi:
– Model
– View
– Controller
Layer Model merupakan business logic utama. Di dalamnya ada kode untukdata persistence dan perhitungan business logic utama. Secara singkat, layerModel ini menangani content dari aplikasi. Di layer ini diputuskan data apa yangakan diberikan pada client. Dengan menggunakan analogi Aplikasi Diskon, layerini memutuskan angka berapa yang akan keluar sebagai totalDiskon, berapaharga untuk mouse, dan sebagainya.
Layer View menangani masalahmasalah yang berkaitan dengan tampilan.Layer ini tidak peduli apa content yang ada, tugasnya hanya melakukanformatting terhadap data tersebut agar tampilannya sesuai dengan kebutuhanuser. Misalnya, untuk Aplikasi Diskon, layer ini memutuskan apakah daftar
©Endy Muhardin <endy at artivisi dot com> halaman 1
Java TrainingStruts Web Framework
belanja akan ditampilkan dalam tabel HTML, ditampilkan ke command prompt,disajikan dalam tabel Swing, atau diekspor menjadi file text. Sebagai tambahan,biasanya layer View juga bertugas untuk melakukan validasi data yangdiinputkan user.
Layer Controller mengatur user flow. Di sini dilakukan pemrosesan requestuntuk menentukan business logic mana yang akan dieksekusi. Biasanya layercontroller juga digunakan untuk mengatur ijin akses dan permission.
Dengan menggunakan MVC pattern, banyak framework yang telah dibuat.Salah satu diantaranya adalah Struts, yang akan kita pelajari pada modul ini.
II. II. Pengenalan StrutsPengenalan Struts
A. A. Fitur StrutsFitur Struts
– Utility classes untuk menangani tugas rutin pemrograman web.
– Tag library untuk membuat elemen HTML yang sering digunakan.
– Action dan ActionForm untuk menangani HTML Form.
– Tiles untuk memudahkan mengatur layout.
B. B. Framework alternatifFramework alternatif
– Turbine
– Spring
– WebWork
III. III. Menggunakan StrutsMenggunakan Struts
A. A. Instalasi Instalasi
Untuk menjalankan Struts, terlebih dahulu kita harus memiliki instalasi Tomcatyang telah berjalan dengan sukses. Setelah itu, berikut adalah langkahlangkahinstalasi Struts :
– Download Struts dari http://jakarta.apache.org
– Extract Struts
– Instal strutsblank.war dan strutsdocumentation.war ke folder
©Endy Muhardin <endy at artivisi dot com> halaman 2
Java TrainingStruts Web Framework
[TOMCAT]/webapps
– Browse ke aplikasi web yang telah terinstal.
Misalnya http://localhost:9090/strutsblank
Instalasi yang sukses akan menampilkan tampilan sebagai berikut:
Dokumentasi yang disertakan juga bisa ditampilkan melalui url:
http://localhost:9090/strutsdocumentation
©Endy Muhardin <endy at artivisi dot com> halaman 3
Java TrainingStruts Web Framework
B. B. Hello WorldHello World
Kita akan memindahkan Aplikasi Diskon yang telah dibuat agar bisa diaksesmelalui website. Untuk itu, rename [TOMCAT]/webapps/strutsblankmenjadi [TOMCAT]/webapps/diskon. Kemudian, kita akan menampilkanHelloWorld sebagai halaman default. Berikut langkahlangkahnya:
1. Stop Tomcat
2. Rename folder [TOMCAT]/webapps/strutsblank menjadi [TOMCAT]/webapps/diskon
3. Hapus file [TOMCAT]/webapps/strutsblank.war
4. Buat file welcome.jsp dengan isi sebagai berikut:
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World !!!
</body>
</html>
5. Edit [TOMCAT]/webapps/diskon/WEBINF/strutsconfig.xml padabaris yang mendefinisikan action dan actionmappings menjadi:
©Endy Muhardin <endy at artivisi dot com> halaman 4
Java TrainingStruts Web Framework
<action path="/Welcome" forward="/welcome.jsp"/>
6. Start Tomcat dan browse ke http://localhost:9090/diskon/. Jika langkahlangkah tersebut dilakukan dengan benar, akan muncul tampilan sebagaiberikut:
C. C. Arsitektur StrutsArsitektur Struts
Struts, sesuai dengan tujuan utamanya mengimplementasikan pattern ModelView Controller, didesain dengan tiga komponen utama :
– Action sebagai Controller
– JSP dan kumpulan Taglibs sebagai View
– Form Bean sebagai Model
Ketiganya dihubungkan dengan menggunakan konfigurasi di strutsconfig.xml
D. D. Aplikasi SederhanaAplikasi Sederhana
Pada contoh berikut, kita akan membuat aplikasi guestbook sederhana.Aplikasi tersebut akan menampilkan sebuah form untuk mengisi komentar.Pengunjung akan mengisi komentar dan identitasnya, untuk kemudian disimpandalam database.
Berikut adalah screenscreen yang akan ditampilkan:
1. Form Komentar (comment.jsp)
2. Tampilan terima kasih atas pengisian guestbook (thanks.jsp)
3. Form Error (error.jsp)
4. Tampilan seluruh komentar yang ada (guestbook.jsp)
Berikut adalah kode program untuk tampilan.
©Endy Muhardin <endy at artivisi dot com> halaman 5
Java TrainingStruts Web Framework
comment.jsp
<%@ taglib uri="/tags/strutsbean" prefix="bean" %>
<%@ taglib uri="/tags/strutshtml" prefix="html" %>
<%@ taglib uri="/tags/strutslogic" prefix="logic" %>
<html:html locale="true">
<head>
<title>Guestbook</title>
</head>
<body>
Silahkan isi buku tamu dan berikan komentar Anda
<br>
<html:form action="InputComment">
<table border="1">
<tbody>
<tr>
<td>Nama</td>
<td><html:text property="name"/></td>
</tr>
<tr>
<td>Email</td>
<td><html:text property="email"/></td>
</tr>
<tr>
<td rowSpan="1" colspan="2">Komentar<br>
<html:textarea property="comment"/><br>
<html:submit value="Ok"/>
</td>
</tr>
</tbody>
</table>
</html:form>
</body>
</html:html>
Untuk menampung data isian dari formform di atas, kita akan membuatJavaBeans, yaitu CommentBean, dengan kode program sebagai berikut:
©Endy Muhardin <endy at artivisi dot com> halaman 6
Java TrainingStruts Web Framework
package bukutamu.beans;
import org.apache.struts.action.ActionForm;
public class CommentBean extends ActionForm {
private String name;
private String email;
private String comment;
public CommentBean(){ }
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
// getter dan setter lainnya //
}
Data JavaBeans ini –untuk menyederhanakan masalah– akan disimpandalam sebuah List yang disimpan dalam memori. Harap diperhatikan bahwadengan pendekatan ini, data yang tersimpan akan hilang pada saat Tomcatdishutdown.
List yang akan digunakan untuk menyimpan diinisialisasi oleh GuestBookservlet.
Berikut adalah kode program untuk GuestBookServlet
©Endy Muhardin <endy at artivisi dot com> halaman 7
Java TrainingStruts Web Framework
package bukutamu.beans;
import java.util.*;
import javax.servlet.http.HttpServlet;
/*
Servlet definition di web.xml
Mapping tidak dibutuhkan, karena tidak akan diakses lewat URL
<servlet>
<servletname>GuestBookServlet</servletname>
<servletclass>bukutamu.beans.GuestBookServlet</servletclass>
<loadonstartup>2</loadonstartup>
</servlet>
*/
public class GuestBookServlet extends HttpServlet {
public void init(){
List gb = Collections.synchronizedList(new ArrayList());
getServletContext().setAttribute("guestbook", gb);
}
}
Selanjutnya, form comment.jsp disambut oleh CommentAction, turunan dariclass Action yang disediakan oleh Struts. Berikut adalah kode program dari classCommentAction.
©Endy Muhardin <endy at artivisi dot com> halaman 8
Java TrainingStruts Web Framework
package bukutamu.actions;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;
import bukutamu.beans.CommentBean;
public class CommentAction extends Action {
public ActionForward execute (ActionMapping map,
ActionForm bean,
HttpServletRequest req,
HttpServletResponse res) {
CommentBean data = (CommentBean) bean;
List guestbook = (List) req.getSession()
.getServletContext()
.getAttribute("guestbook");
guestbook.add(data);
return map.findForward("success");
}
}
Perhatikan bahwa kita tidak melakukan validasi apaapa. Semua input dariuser diasumsikan bersih dan rapi. Validasi akan dibahas pada chapterselanjutnya.
Setelah CommentAction dieksekusi, user akan diarahkan ke halamanguestbook.jsp. Halaman ini menampilkan semua komentar yang telah terkumpuldi dalam sistem. Berikut adalah kode program guestbook.jsp
©Endy Muhardin <endy at artivisi dot com> halaman 9
Java TrainingStruts Web Framework
<%@ taglib uri="/tags/strutsbean" prefix="bean" %>
<%@ taglib uri="/tags/strutshtml" prefix="html" %>
<%@ taglib uri="/tags/strutslogic" prefix="logic" %>
<html:html locale="true">
<head>
<title>Buku Tamu</title>
</head>
<body>
<h1>Daftar Komentar yang sudah kami kumpulkan</h1>
Anda ingin <a href="comment.jsp">menambahkan komentar</a> ???
<logic:iterate id="comment" type="bukutamu.beans.CommentBean" name="guestbook">
<table border=1>
<tbody>
<tr>
<td>${comment.name}</td>
<td>${comment.email}</td>
</tr>
<tr>
<td rowSpan="1" colspan="2">${comment.comment}</td>
</tr>
</tbody>
</table>
</logic:iterate>
</body>
</html:html>
Dengan demikian, selesailah satu aliran proses dengan Struts. Bagan aliranproses dapat dijelaskan dengan bagan sebagai berikut:
©Endy Muhardin <endy at artivisi dot com> halaman 10
Java TrainingStruts Web Framework
Seluruh rangkaian proses tersebut diatur oleh file konfigurasi Struts di strutsconfig.xml. Berikut konfigurasi dalam strutsconfig.xml
<?xml version="1.0" encoding="ISO88591" ?>
<!DOCTYPE strutsconfig PUBLIC
"//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/strutsconfig_1_2.dtd">
<strutsconfig>
<formbeans>
<formbean name="comment" type="bukutamu.beans.CommentBean"/>
</formbeans>
<globalexceptions>
</globalexceptions>
<globalforwards>
<forward name="welcome" path="/Welcome.do"/>
</globalforwards>
<actionmappings>
<action path="/Welcome" forward="/pages/Welcome.jsp"/>
<action
path="/InputComment"
type="bukutamu.actions.CommentAction"
name="comment"
scope="request"
validate="false"
input="/pages/comment.jsp">
<forward name="success" path="/pages/guestbook.jsp" redirect="true"/>
</action>
</actionmappings>
<messageresources parameter="MessageResources" />
</strutsconfig>
Perhatikan konfigurasi :
1. Form Bean (CommentBean)
2. Action (Comment Action)
3. Forwarding (guestbook.jsp)
©Endy Muhardin <endy at artivisi dot com> halaman 11
Java TrainingStruts Web Framework
IV. IV. Validasi InputValidasi InputDengan menggunakan Struts, validasi user input dapat dilakukan secara client
side (menggunakan JavaScript) maupun secara serverside (dengan melakukanvalidasi dengan kode program di Action). Pada tutorial berikut, kita akanmenambahkan validasi clientside pada form isi komentar kita (comment.jsp).
Langkahlangkah yang harus dilakukan adalah:
1. Mendaftarkan HTML form berikut aturan validasinya di validation.xml
2. Menambah kode untuk validasi di HTML Form (comment.jsp)
Aturan validasi yang akan diberlakukan adalah:
● Kolom nama tidak boleh kosong
● Kolom email tidak boleh kosong
● Email harus mengikuti format standar (misal: [email protected])
Berikut adalah tambahan pada validation.xml
<form name="comment">
<field property="name" depends="required">
<msg name="required" key="name.required"/>
</field>
<field property="email" depends="required,email">
<msg name="required" key="email.required"/>
<msg name="email" key="email.malformed"/>
</field>
</form>
Kode di atas diletakkan di dalam blok formset dalam validation.xml
Penjelasannya adalah sebagai berikut:
● form name : nama form, harus sama dengan deklarasi di comment.jsp
● field property : nama field yang akan divalidasi. Aturan validasi yangdiberlakukan disebutkan dalam atribut depends. Jadi, untuk form di atas, fieldname memberlakukan aturan required, sedangkan field email memberlakukanaturan required dan email.
● msg : pesan error untuk aturan name yang dilanggar. Pesan error diambil dari
©Endy Muhardin <endy at artivisi dot com> halaman 12
Java TrainingStruts Web Framework
MessageResources.properties. Jadi, bila aturan required dilanggar, akanmuncul pesan name.required
Berbagai kode JavaScript untuk aturan required dan email sudah disediakanoleh Struts. Bagi yang tertarik dapat melihat dan (bila diperlukan) mengubahisinya, dalam file validatorrules.xml. Pada Struts 1.1, kode JavaScript ditulisdalam validatorrules.xml. Mulai Struts 1.2, kode JavaScript tersebut sudahdimasukkan ke dalam paket commonsvalidator.
Sedangkan kode untuk mengaktifkan validasi pada HTML form adalah sebagaiberikut (comment.jsp) :
<html:form action="InputComment" onsubmit="return validateComment(this)">
<! kode form yang lainnya tidak berubah >
</html:form>
<html:javascript formName="comment"/>
V. V. LayoutLayoutStruts memiliki fasilitas khusus untuk menangani layout yang dinamakan Tiles.
Konsepnya adalah memisahkan bagianbagian yang digunakan berulangulangke dalam file tersendiri sehingga bisa digunakan berkalikali. Langkahlangkahuntuk mengaplikasikan Tiles adalah sebagai berikut:
1. Tentukan desain yang akan digunakan
2. Pisahkan bagianbagian yang berulang ke dalam file tersendiri
3. Buat file JSP yang mendefinisikan layout
4. Buat file JSP yang akan mengisi layout
5. Satukan semuanya dalam file konfigurasi
Berikut adalah tampilan halaman yang akan dibuat :
Dari gambar di atas, terlihat bahwa ada bagianbagian yang berulang, yaituHeader, Footer, dan Menu. Bagianbagian tersebut akan kita pisahkan menjadiheader.jsp, footer.jsp, dan menu.jsp, sebagai berikut :
©Endy Muhardin <endy at artivisi dot com> halaman 13
Java TrainingStruts Web Framework
● header.jsp
Apache Struts Tile Tutorial
● footer.jsp
<center>
Copyright © 2005 Endy Muhardin <endy at artivisi dot com>
</center>
● menu.jsp
<a href="architecture.html">Arsitektur Struts</a><br />
<a href="formbeans.html">FormBean</a> <br />
<a href="action.html">Action</a><br />
<a href="mapping.html">Mapping</a><br />
<a href="tile.html">Tiles</a><br />
<a href="validation.html">Validasi</a><br />
● content.jsp
©Endy Muhardin <endy at artivisi dot com> halaman 14
Java TrainingStruts Web Framework
Berikut adalah langkahlangkah menggunakan Tile:
<ol>
<li>Tentukan layout desain</li>
<li>Pisahkan bagianbagian yang berulang ke dalam file tersendiri</li>
<li>Buat kode JSP yang mendefinisikan Layout</li>
<li>Buat kode JSP untuk mengisi layout</li>
<li>Buat konfigurasi di definisi tile</li>
</ol>
Kemudian, buat file JSP yang mendefinisikan layout, misalnya layout.jsp :
<%@ taglib uri=”tags/strutstiles” prefix=”tiles”%>
<html>
<head>
<title><tiles:getAsString name=”title”/></title>
<link rel="stylesheet" href="sitestyle.css" type="text/css" />
</head>
<body>
<div id="Header"><tiles:insert attribute=”header”/></div>
<div id="Menu"><tiles:insert attribute=”menu”/></div>
<div id="Content"><tiles:insert attribute=”content”/></div>
<div id="Footer"><tiles:insert attribute=”footer”/></div>
</body>
</html>
Terakhir adalah file yang menyatukan semua bagian tersebut. Inilah file yangnantinya akan diakses user, misalnya kita beri nama tutorial.jsp :
<%@ taglib uri="/tags/strutstiles" prefix="tiles" %>
<tiles:insert page="/tiles/layout.jsp">
<tiles:put name="title" value="Belajar Tiles dengan Struts"/>
<tiles:put name="header" value="/tiles/header.jsp"/>
<tiles:put name="menu" value="/tiles/menu.jsp"/>
<tiles:put name="body" value="/tiles/content.jsp"/>
<tiles:put name="footer" value="/tiles/footer.jsp"/>
</tiles:insert>
VI. VI. PenutupPenutupDemikianlah tulisan singkat tentang penggunaan framework Struts untuk
membangun aplikasi web secara lebih produktif. Tetapi perlu diingat bahwa
©Endy Muhardin <endy at artivisi dot com> halaman 15
Java TrainingStruts Web Framework
setiap framework memiliki kurva belajar, sehingga sebelum produktif, seseorangharus bingung dulu. Ini merupakan hal yang wajar, sebaiknya dianggap sebagaiharga yang harus dibayar untuk pengembangan diri.
©Endy Muhardin <endy at artivisi dot com> halaman 16