• Tidak ada hasil yang ditemukan

J.E.N.I BAB 7 Pengenalan Arsitektur MVC

N/A
N/A
Protected

Academic year: 2018

Membagikan "J.E.N.I BAB 7 Pengenalan Arsitektur MVC"

Copied!
16
0
0

Teks penuh

(1)

BAB 7

Pe n ge n a la n Ar sit e k t u r M V C

7 .1 Pe n ge n a la n Ar sit e k t u r M ode l- V ie w - Con t r olle r

Arsit ekt ur Model- View- Cont roller adalah sebuah pola yang t erbukt i m em bangun proyek secara lebih efekt if. Hal it u dilakukan dengan m em ilah kom ponen ant ara Model, View dan Cont roller pada bagian – bagian dalam proyek.

7 . 1 . 1 M ot iv a si

Aplikasi apapun, bagian dalam kode yang sering m engalam i perubahan adalah bagian user int erface. User int erface adalah bagian yang paling t erlihat oleh user dan bagaim ana ia berint eraksi dengan aplikasi, m em buat nya m enj adi t it ik fokus pengubahan berdasar kem udahan penggunaan.

Business- logic yang rum it pada user- int erface m em buat pengubahan pada user int erface m enj adi lebih kom pleks dan m udah t erj adi kesalahan. Perubahan pada sat u bagian m em ilik i pot ensi ket erkait an dengan keseluruhan aplikasi.

7 . 1 . 2 Solu si

(2)

Diagram di at as m enunj ukkan 3 kom ponen yang t erdapat dalam pola MVC dan int eraksi yang t erj adi.

7 .2 M OD EL

Pola MVC m em iliki layer yang disebut dengan Model yang m erepresent asikan dat a yang digunakan oleh aplikasi sebagaim ana proses bisnis yang diasosiasikan t erhadapnya. Dengan m em ilahnya sebagai bagian t erpisah, sepert i penam pungan dat a, persist ence, sert a proses m anipulasi, t erpisah dari bagian lain aplikasi.

Terdapat beberapa kelebihan dalam pendekat an ini. Per t am a, m em buat det ail dari dat a dan operasinya dapat dit em pat kan pada area yang dit ent ukan ( Model) dibanding t ersebar dalam keseluruhan lingkup aplikasi. Hal ini m em ber ikan keunt ungan dalam proses m aint enance aplikasi.

Kedua, dengan pem isahan t ot al ant ara dat a dengan im plem ent asi int erface, kom ponen m odel dapat digunakan kem bali oleh aplikasi lain yang m em ilik i kegunaan yang ham pir sam a.

7 .3 V I EW

(3)

Penggunaan layer View m em iliki beberapa kelebihan : Pert am a, m em udahkan pengabungan divisi desain dalam developm ent t eam . Divisi desain dapat berkonsent rasi pada st yle, look & feel, dan sebagainya, dalam aplikasi t anpa harus m em perhat ikan lebih pada det ail yang lain.

Dan j uga, m em iliki layer View y ang t erpisah m em ungkinkan ket ersediaan m ult iple int erface dalam aplikasi. Jika int i dari aplikasi t erlet ak pada bagian lain ( dalam Model) , m ult iple int erfaces dapat dibuat ( Sw ing, Web, Console) , secara keseluruhan m em iliki t am pilan yang berbeda nam un m engeksekusi kom ponen Model sesuai fungsionalit as yang diharapkan.

7 .4 CON TROLLER

Terakhir, arsit ekt ur MVC m em ilik i layer Cont roller. Layer ini m enyediakan det ail alur program dan t ransisi layer, dan j uga bert anggungj aw ab akan penam pungan event s yang dibuat oleh user dari View dan m elakukan updat e t erhadap kom ponen Model m enggunakan dat a yang dim asukkan oleh user.

Kelebihan dalam penggunaan layer Cont roller secara t erpisah : Pert am a, dengan m enggunakan kom ponen t erpisah unt uk m enam pung det ail dari t ransisi layer, kom ponen view dapat didesain t anpa harus m em perhat ikan bagian lain secara berlebih. Hal ini m em udahkan t eam pengem bang m ult iple int erface bekerj a secara t erpisah dari yang lain secara sim ult an. I nt eraksi ant ar kom ponen View t erabst raksi dalam Cont roller.

Kedua, dengan m enggunakan layer t erpisah yang m elakukan updat e t erhadap kom ponen Model, det ail t ersebut dihapus dari layer present asi. Layer present asi kem bali pada fungsi ut am anya unt uk m enam pilkan dat a k epada user. Det ail t ent ang bagaim ana dat a dari user m engubah ket et apan aplikasi disem bunyikan oleh Cont roller. Hal ini m em isahkan dengan j elas ant ara present at ion logic dengan business logic.

(4)

7 .5 Ar sit e k t u r M V C Un t u k W e b : Ar sit e k t u r M ode l 2

Arst it ekt ur MVC secara sederhana dirancang dan diadapt asi dalam penggunaan dalam Web- Applicat ion. Arsit ekt ur yang dihasilkan kem udian disebut dengan Model 2 Archit ect ure.

Aplikasi Model 2 um um nya m em ilik i :

o Servlet Cont roller yang m enyediakan akses t unggal t erhadap keseluruhan aplikasi. Cont roller ini bert anggungj aw ab m enyediakan m anaj em en t erpusat t erhadap alur aplikasi dan j uga service lain sepert i penganganan securit y dan user m anagem ent .

o Cont roller Servlet um um nya m enggunakan konfigurasi XML unt uk m enent ukan alur aplik asi dan pem rosesan perint ah. Hal it u j uga m em buat helper com ponent s yang berfungsi sebagai Com m and obj ect s. Hal ini berart i helper com ponent s t erasosiasikan dengan user act ions dan dibuat / dipanggil unt uk m enangani act ions yang t erj adi, m em anggil kom ponen Model sebagaim ana diperlukan. Hal ini berfungsi unt uk m em isahkan unt uk m em isahkan ant ara cont roller serv let dari Model.

7 .5 .1 M ode l 2 D ia gr a m

I m plem ent asi sebuah pola dapat diperm udah dengan m enggunakan t hird- part y fram ework. Fram eworks t ersebut m enyediakan det ail t erkait ( request , konfigurasi, dan sebagainya) sehingga kit a dapat berkonsent ras pada hal lain yang lebih pent ing. Fram ew orks t ersebut j uga m enyediakan fungsi - fungsi t am bahan.

(5)

7 .5 .2 STRUTS

St rut s adalah open- source fram ework yang dibuat oleh Apache Soft ware Foundat ion. Dibaw ah ini m enunj ukkan bagaim ana penanganan Model 2 Archit ect ure oleh St rut s.

(6)

7 .5 .3

CON TROLLER

7 .5 .3 .1 Act ion Se r vle t

Pusat dari im plem ent asi cont roller pada St rut s adalaha Act ion Se r v le t. Berfungsi

sebagai Front Cont roller servlet dan m enyediakan j alur t unggal unt uk m engakses aplikasi. Act ionServlet j uga m engandung logic dalam penanganan request dari client – t erlihat pada HTTP request dari client , kem udian dit eruskan m enuj u sebuah halam an Web at au m engirim kan request t ersebut obj ect penerim a yang disebut dengan Act ion s yang kem udian bert anggungj aw ab unt uk m enent ukan respon yang

akan dihasilkan.

Act ionServlet m em iliki det ail – det ail sebagai berikut , Act ion apa yang akan dipanggil unt uk m enangani request , kom ponen view m ana yang akan dipanggil selanj ut nya – dengan m em baca konfigurasi XML, yang um unya bernam a st r u t s- config.x m l. Servlet ini m enyediakan st rut s fram ew ork yang siap digunakan. Secara keseluruhan pent ing unt uk m enyert akannya pada aplikasi sebagai konfigurasi pada deploym ent aplikasi.

(7)

7 .5 .3 .2 Act ion

Sepert i yang t elah disebut kan sebelum nya, beberapa request dari client dit eruskan m enuj u Act ion yang sesuai oleh front cont roller servlet . Seluruh act ion obj ect s m endefinisikan sebuah m et hod yang disebut execut e( ) , dan m et hod inilah yang dipanggil oleh Act ionServlet unt uk m enangani request yang t erj adi.

Akt ifit as um um dalam aplikasi w eb adalah user log- in. Dit unj ukkan di bawah ini adalah im plem ent asi dari LoginAct ion class yang berfungsi unt uk m enangani request t ersebut .

import org.apache.struts.action.*

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping,

// Membuat business object yang akan menangani request UserService service = new UserService();

user = service.login(loginName, password);

// Jika user tidak ada, diteruskan pada error page if (user == null) {

return mapping.findForward("failure"); }

// Simpan pada session untuk digunakan pada proses aplikasi selanjutnya HttpSession session = request.getSession();

session.setAttribute(ApplicationConstants.USER_OBJECT, user);

// User telah log-in dengan sukses. return mapping.findForward("success"); }

}

(8)

diim plem ent asikan dalam Act ion it u sendiri. Proses yang akan dij alank an pada Act ion adalah sebagai berikut :

o Menam pung inform asi user dari Act ionForm bean t erkait

o Menerj em ahkan dat a dari form m enj adi param et er yang diperlukan oleh business obj ect yang m engim plem ent asikan fungsionalit asnya

o Menam pung hasil operasi dari business obj ect dan m enent ukan View selanj ut nya yang akan dit am pilkan pada user

o Secara opsional, m enyim pan dat a hasil dari operasi bisnis ke dalam session at au request obj ect s unt uk digunakan dalam proses aplikasi selanj ut nya

Hal lain yang perlu diperhat ikan pada saat m em buat kode inst ances dari Act ion obj ect s adalah bahwa fram ework hanya akan m enginst ansiasi sat u salinan obj ect dan m enggunakannya unt uk m em fasilit asi seluruh request . Hal ini berart i kit a harus selalu m em buat kode Act ion dalam t hread- safe, dan m em ast ikan bahwa hanya local variabel yang digunakan, bukan inst ance variabel.

Act ion inst ances berkem am puan unt uk m enginst ruksikan Act ionServlet dalam m em ilih kom ponen View m ana yang akan digunakan dalam m erespon dengan m engem balikan inst ances dari obj ek Act ion For w a r d. Act ions m em iliki akses t erhadap Act ionForward m elalui penggunaan Act ion M a ppin g yang m engenkapsulasi dat a dari pem et aan logical pat h pada set iap Act ion. Pem et aan t ersebut dibaca dari file konfigurasi oleh Act ionSer vlet , yang kem udian bert anggungj aw ab unt uk m eneruskan Act ionMapping pada Act ion yang sesuai. Sehingga m enginst ruksikan Act ionServlet unt uk m eneruskan pada logical m ap dengan hasil “ Success” , Act ion bekerj a sesuai pernyat aan berikut :

(9)

7 .5 .3 .3 Act ion For m

St rut s fram ework m enyediakan sebuah class yang disebut dengan Act ionForm . I nst ances dari class ini digunakan unt uk m em fasilit asi penam pungan dat a yang berasal dari form yang dikum pulkan dari user pada Act ion inst ances yang m enangani event s pada form t ersebut .

Tiap inst ances dari Act ionForm m erepresent asikan sebuah form at au rangkaian form s. I nst ances t ersebut m endefinisikan propert ies dar i elem en – elem en form , dan m em publik asikannya dengan m enggunakan get t ers dan set t ers yang dapat diakses secara public. Act ion yang m em erlukan dat a dari form kem udian m em anggil m et hod get t er dari inst ance Act ionForm .

St rut s m enyert akan definisi class dasar; developer bert anggungj awab penuh at as im plem ent asi buat an m ereka sendiri.

Kode dibawah m enunj ukkan Act ionForm yang digunakan pada cont oh sebelum nya :

import org.apache.struts.action.*;

public class LoginForm extends ActionForm { private String loginName;

Beberapa hal yang perlu diingat pada saat pengkodean Act ionForm :

o Mendefinisikan propert ies ( dengan asosiasi t erhadap m et hod get dan set ) unt uk t iap elem en yang akan direpresent asikan pada form

o Hindari penem pat an business logic pada Act ionForm . Act ionForm dit uj ukan unt uk m ent ransfer dat a ant ara kom ponen View dan Cont roller, dan bukan dit uj ukan unt uk business logic.

(10)

7 .5 .3 .4 st r u t s- con fig.x m l

File ini berfungsi sebagai file konfigurasi kom ponen – kom ponen yang t erdapat pada St rut s. Disini, kit a dapat m endefinisikan Act ion m ana yang akan dipanggil unt uk t iap request , form m ana yang akan digunakan pada t iap Act ion, dan m em et akan logical nam es pada act ual pat h, diant ara hal – hal lain. Berikut ini adalah pot ongan dari st rut s- config.xm l yang digunakan pada cont oh di at as :

<?xml version=”1.0”?>

<!DOCTYPE struts-config PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 1.1//EN”

“http://jakarta.apache.org/struts/dtds/struts-Elem en ini m endefinisikan file XML sebagai file konfigurasi dalam penggunaan St rut s fram ework. Terlewat dan kesalahan dalam penulisan kode, akan m enghasilkan error pada saat aplikasi dij alankan.

< st rut s- config>

Elem en dasar dalam file konfigurasi. Seluruh elem en lain adalah elem en t urunan dari elem en ini.

< form - beans>

Elem en ini m enandai awal dan akhir definisi dar i Act ionForm inst ances. Elem en < form - bean> harus diposisikan sebagai t urunan dari elem en ini.

< form - bean>

Menj elaskan inst ance dari Act ionForm yang dapat digunakan oleh aplikasi. Elem en ini m em iliki dua at ribut :

(11)

< act ion- m appings>

Elem en ini m enandai awal dan akhir definisi Act ion dan pem et aannya. Seluruh elem en < act ion> harus diposisikan sebagai t it ik t urunan dari elem en ini.

< act ion>

Menj elaskan inst ance dari Act ion obj ect yang akan digunakan oleh aplikasi. Secar a um um , elem en act ion akan m engim plem ent asikan at ribut - at ribut sebagai berikut :

o pat h – cont ext relat iv e pat h yang digunakan oleh Act ion. Request apapun pada pat h ini m enghasilkan Act ion dipanggil

o t ype – deskripsi lengkap nam a class dari Act ion class

o nam e – nam a elem en < form - bean> yang akan digunakan oleh Act ion

o scope – lingkup dim ana Act ionForm yang dapat diakses. Hal ini m engat ur dim ana Act ionServlet akan m enyim pan inst ance dari Act ionForm

< forw ard>

Elem en ini m endefinisikan pem et aan logik ant ara sebuah nam e dan pat h pada aplikasi.

Elem en ini m em iliki at ribut sebagai berikut :

o nam e – nam a dari elem en forward yang akan digunakan oleh Act ion inst ance o pat h – pat h dari kom ponen View yang akan diasosiasikan pada forward Hal – hal yang perlu dilakukan pada Cont roller layer :

Unt uk sekali pengat uran :

o Mengkonfigurasi Act ionServlet pada deploym ent aplikasi Unt uk t iap form handler yang akan dit am bahkan pada aplikasi :

o Mem buat obj ect Act ionForm yang akan m enrepresent asikan seluruh dat a yang dikum pulkan dari form

o Mem buat obj ect Act ion dim ana pada m et hod eksekusinya m enj elaskan bagaim ana form akan dit angani

o Mengkonfigurasi obj ect Act ionForm dalam st rut s- config.xm l, pada bagian < form - beans>

o Mengkonfigurasi obj ect Act ion dalam st rut s- config.xm l, pada bagian < act ion-m appings>

(12)

7 .5 .4 M OD EL

St rut s fram ework secara eksplisit t idak m enyediakan kom ponen apapun dalam elem en Model. Obj ect m ana yang akan digunakan sebagai kom ponen Model dit ent ukan sepenuhnya oleh developer, um um nya adalah JavaBeans, at au t erkadang EJB.

7 .5 .5 V I EW

St rut s dapat m enggunakan t eknologi present at ion layer apapun, w alaupun pada sebagian kasus yang present at ion layer yang digunakan adalah JSP dan HTML. Apa saj a yang disediakan oleh St rut s, adalah serangkaian dari t ag librar ies yang m engij inkan penggunaan fit ur – fit ur dari St rut s dalam pengum pulan dan validasi form secara ot om at is.

7 .5 .5 .1 st r u t s- h t m l

St rut s m enyert akan sebuah t ag- library, disebut dengan st rut s- ht m l, yang ham pir m enyerupai keseluruhan fungsionalit as st andar HTML, nam un dit am bahkan dengan beberapa fit ur t am bahan.

Tag- library ini ser ing digunakan pada saat m em buat form yang akan dipakai oleh aplikasi. Perhat ikan cont oh dibaw ah ini :

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<html>

<head><title>Login Page</title></head> <body>

<h1> Login Page </h1> <br/>

<html:form action="/login">

User Name : <html:text property="loginName"/> <br/> Password : <html:password property="password"/> <br/> <html:submit>

</html:form>

I ni adalah form yang digunakan pada cont oh sebelum nya. Perhat ikan bagaim ana elem en st andar HTML sepert i < form > , < input t ype= “ t ext “ > , < input t ype= “ password“ > , sert a < input t ype= ” subm it ” > digant ikan oleh t ag dari library st rut s- ht m l. Mari kit a bahas t ags t ersebut sat u- persat u :

(13)

Tag < ht m l: form > m enerj em ahkan sebuah HTML form . Tiap form t ag t erasosiasi dengan sebuah act ion m apping yang didefinisikan oleh at ribut a ct ion. Value dalam at ribut act ion m enspesifikasikan pat h dari act ion m apping yang sesuai.

Perhat ikan kem bali file konfigurasi pada cont oh sebelum nya :

...

<action name=”loginForm” path=”/login”

scope=”request”

type=”login.LoginAction”> ...

Dapat kit a lihat bahw a value dari at ribut pat h t erdefinisi pada file konfigurasi sesuai dengan value at ribut act ion pada t ag < ht m l: form > . Hal ini m engindikasikan bahw a dalam form ini, saat diserahkan, akan dit eruskan pada LoginAct ion unt uk dit angani. Salah sat u dari persyarat an dari t ag ht m l: form yang valid adalah t iap field yang m engandungnya harus t ercant um pada Act ionForm unt uk dipet akan pada act ion m apping.

Kem ungkinan at ribut lain :

o m et hod – dapat berupa POST at au GET. Menj elaskan m et hod HTTP yang akan digunakan pada pengirim an form

< ht m l: t ext >

Tag ini m enerj em ahkan st andar HTML t ext input field. Propert y at t ribut e m enent ukan bat asan propert y dalam Act ionForm t erkait . Sebagai cont oh, value dari propert y at t ribut e dari cont oh di at as adalah “ loginNam e” , t ext field ini t erhubung dengan propert y loginNam e pada LoginForm .

At ribut lain yang t ersedia pada t ag ini :

o size – m endefinisikan ukuran dari t ext field yang akan dit am pilkan

o m axlengt h – m enent ukan panj ang m aksim um value yang dapat dim asukkan oleh user

< ht m l: passw ord>

(14)

Pada pem bahasan sebelum nya t ent ang ht m l: t ext dan ht m l: password field, dij elaskan bahwa t ag – t ag t ersebut dibat asi oleh propert ies pada Act ionForm yang t erhubung dengan form . Hal ini m enj elaskan bahw a pada prakt eknya value yang dim asukkan oleh user dalam field ini secara ot om at is akan diat ur sesuai bat asan propert ies dalam obj ect Act ionForm . Terlebih lagi, j ika t erdapat value sebelum nya dalam Act ionForm obj ect ( form t ersebut t elah diak ses sebelum nya) , field pada form secara ot om at is pula akan t erisi dengan values dari Act ionForm obj ect .

Tag- t ag lain yang t erdapat pada st rut s- ht m l t ag library : < ht m l: hidden>

Menerj em ahkan HTML hidden pada form field. Cont oh penggunaan :

<html:hidden property="hiddenField"/>

< ht m l: radio>

Menerj em ahkan HTML radio check box. Cont oh penggunaan :

<html:radio property="radioField”/>

< ht m l: select > , < ht m l: opt ion>

ht m l: select digunakan unt uk m enerj em ahkan sebuah drop- dow n list box. Pilihan – pilihan yang t erdapat pada list box didefinisikan m enggunakan t ag ht m l: opt ion. Cont oh penggunaan :

<html:form action="/sampleFormAction">

<html:select property="selectField" size="5">

<html:option value="0 value">0 Label</html:option> <html:option value="1 value">1 Label</html:option> <html:option value="2 value">2 Label</html:option> </html:select>

</html:form>

(15)

< ht m l: checkbox> , < ht m l: area>

Digunakan unt uk m enerj em ahkan check box field dan t ext area.

Sepert i yang t erlihat pada pem bahasan sebelum nya ( Advanced JSP) , t erdapat beberapa hal yang perlu dilakukan sebelum m em akai berm acam t ag libraries dalam aplikasi.

Pert am a, let akkan file JAR im plem ent asi dari fungsionalit as t ag dalam direkt ori WEB-I NF/ lib dalam aplikasi.

Beberapa hal yang harus dilakukan t erhadap layer View : Unt uk sat u kali pengat uran :

o Konfigurasi t ag library yang akan digunakan dalam pengem bangan aplikasi o Tem pat kan file JAR y ang m em iliki im plem ent asi t ag libraries pada direkt ori

WEB- I NF/ lib dalam aplik asi Unt uk set iap form yang akan dibuat :

o Buat sebuah direkt ive t aglib pada halam an JSP unt uk m enggunakan st rut s-ht m l t ag library

o Pada pelet akan st andar < form > t ag, gunakan < ht m l: form > , t ent ukan dalam act ion at t ribut e dari pat h Act ion yang akan m enangani form

o Pada posisi pelet ak an HTML field t ags ( < input t ype= ” t ext ” > , dan sebagainya) , gunakan t ags yang t erdapat pada st rut s- ht m l t ag library yang m em iliki fungsi yang sam a ( < ht m l: t ext > , dan sebagainya) .

ƒ Past ikan bahw a seluruh input fields yang t erdapat pada form t erdefinisi sebagai propert ies pada Act ionForm obj ect yang t erhubung dengan request . Tidaklah perlu bahwa seluruh propert ies pada obj ect dit am pilkan sebagai field, nam un dipersyarat kan bahwa seluruh fields j uga t erdefinisi sebagai propert ies.

(16)

7 .6 M EM AN D AN G H AL- H AL YAN G AD A SECARA KESELURUH AN

Unt uk m em aham i bagaim ana St rut s fram ework berfungsi secara m enyeluruh, perhat ikan scenario yang t erdapat pada cont oh diat as : user logging.

Sebelum seorang user m em asuki sit us, Act ionServlet m engam bil konfigurasi file dan m enelusuri det ail yang ada. Sehingga, pada saat user m engakses form login, fram ework t elah m enget ahui Act ionForm t erkait yang akan m enyim pan det ail dan Act ion yang akan m enanganinya.

Saat halam an login dij alankan, st rut s ht m l t ags yang t elah digunakan berupaya unt uk m enerj em ahkan HTML fields. Jika Act ionForm unt uk form ini t idak ada, halam an t ersebut t idak akan dit am pilkan. Jika t erdapat fields dalam form yang m elebihi propert ies pada Act ionForm unt uk m enopangnya, halam an t ersebut j uga t idak akan dit am pilk an. Jika Act ionForm t ersebut m em ang t elah t erdefinisi sebelum nya, t ags – t ags yang ada akan dit am pilkan j ika t erdapat values sebelum nya yang t ersim pan dalam Act ionForm , dan j uga form fields akan dit am pilkan besert a dat a yang ada. Sebaliknya, form fields akan dibiarkan kosong dan user akan m em peroleh t am pilan form t anpa isian.

Pada saat form diserahkan, values pada form fields secar a ot om at is diat ur ke dalam obj ect Act ionForm oleh St rut s Fram ework. Obj ect ini kem udian dit eruskan m enuj u Act ion handler yang sesuai, selam a Act ionMapping obj ect yang m erefleksikan det ail pem et aan t ercant um pada file konfigurasi.

Referensi

Dokumen terkait