• Tidak ada hasil yang ditemukan

BAB 2 Servlets - JENI Web Programming Bab 2 Basic Servlets

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB 2 Servlets - JENI Web Programming Bab 2 Basic Servlets"

Copied!
32
0
0

Teks penuh

(1)

BAB 2

Se r vle t s

2 .1 Pe n da h u lu a n

2 .1 .1

D e fin isi

Servlet adalah sebuah class dalam bahasa pem grogram an Java yang digunakan unt uk m eningkat kan kapabilit as dari ser ver sebagai host dari aplikasi yang diakses m elalui r equest -response program m ing m odel( Diadapt asi dari t ut orial J2EE) . Servlet adalah sebuah class j ava yang m eng- im plem ent int erface Servlet dan m enerim a request yang berasal dari class Java, web client , at au servlet lain yang m em bangkit kan response.

" Servlet " j uga dipanggil sebagai HTTP Servlet . Hal ini disebakan karena servlet s biasanya digunakan dengan HTTP, akan t et ap servlet bukanlah m erupakan salah sat u spesifikasi spesifik dari prot okol client - server.

Unt uk m em ulai pem buat an servlet . Anda diharapkan m engert i m engenai pem rogram an, konsep client - server, dasar- dasar HTML dan HTTP ( HyperText TransferProt ocol) . Unt uk m encipt akan sebuah servlet , Anda perlu unt uk m eng- im port st andard ext ension class dari j avax.servlet dan j avax.servlet .ht t p ke program j ava Anda. Javax.servlet berisi fram ework dasar servlet dim ana j avax.servlet .ht t p digunakan sebagai ekst ensi dar i fram ework servlet bagi servlet yang akan m enj awab HTTP request .

2.1.2

Gam baran Arsit ekt ur Servlet

Sebelum Servlet , salah sat u dari beberapa cara yang um um digunakan unt uk m enam bahkan sebuah fungsi kedalam web ser ver adalah m elalui Com m on Gat eway I nt erface ( CGI ) . CGI m enyediakan sebuah int erface ke program ekst ernal bagi sebuah server, dim ana program t ersebut akan dipanggil oleh server unt uk m enangani client request . Bagaim anapun, CGI t elah didesain khusus sehingga t iap pem anggilan dari resource CGI akan m encipt akan proses yang baru pada server; inform asi yang dibut uhkan oleh program akan diberikan kepada proses ini dengan m enggunakan st andard input dan environm ent variable. Sekali request t erpenuhi, m aka proses t ersebut akan dim at ikan, dan akan kem bali kepada resource didalam syst em . Perm asalahan yang m uncul pada skenario t ersebut adalah proses ini sangat m em bebani server karena dibut uhkan persyarat an yang cukup banyak pada sist em resource, dan j uga m em bat asi berapa banyak user yang dapat dit angani oleh aplikasi pada wakt u yang sam a.

(2)

Servlet m em ilik i desain t ert ent u yang dapat m engat asi segala per m asalahan yang m elekat pada CGI dan m em berikan sebuah solusi j ava kepada developer unt uk m em buat sebuah aplikasi berbasis w eb. Selain m encipt akan sebuah proses yang t idak t erlalu m em bebani server pada saat kedat angan set iap request dari client , dengan m enggunakan servlet hanya ada sat u proses yang akan m enangangi SELURUH request : proses t ersebut m em erlukan servlet cont ainer unt uk dij alankan. Pada saat kedat angan request yang baru, cont ainer akan m encipt akan sebuah t hread ringan unt uk m engeksekusi servlet .

Servlet j uga hanya dim asukkan sekali kedalam m em or i, baik cont ainer yang m em asukkannya kedalam m em ori pada saat server m ulai bekerj a, m aupun pada saat pert am a servlet dibut uhkan unt uk m em berikan service kepada client . Sekali servlet dim asukkan kedalam m em ori, ia akan bert ahan didalam m em ori, dan siap unt uk m enangani request yang lain dari client . Hal ini t idaklah sam a dengan CGI dim ana t iap request dari client akan dim asukkan dan dikeluarkan ke dan dari m em ori.

Pe r w u j u da n da r i Se r vle t pe r t a m a

Cont oh kode dibaw ah ini m enunj ukkan baaim ana st rukt ur dasar dari sebuah servlet yang m enangani request GET, unt uk m encet ak „ Hello World“

import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//"request" digunakan untuk membaca HTTP readers yang datang // Form data HTML (contoh data di-enter dan di-submit oleh user ) // sedangkan data yang lain dapat dimasukkan dari request client

// "response" adalah sebuah HTTP response line yang spesifik

// headers(contoh menspesifikasi content type dan men-setting cookies ).

// Ia juga memiliki sebuah method yang memberikan ijin kepada servlet untuk //membangkitkan response kepada client

PrintWriter out = response.getWriter();

out.println("<HTML> <TITLE>Hello Page</TITLE><BODY><br>"); out.println("<h1>Hello World!</h1>");

out.println("</BODY></HTML>");

//"out" untuk mengirim content kepada browser }

}

Ga m ba r 2 - 1 : Se r vle t da sa r ya ng m e n ce t a k H e llo W or ld

(3)

Bagian pert am a dari kode diat as pada gam bar 2- 1 adalah m eng- im port class di j ava.io ( bagi Print Writ er, dsb) , j avax.servlet dan j avax.servlet .ht t p. Javax.servlet dan j avax.servlet .ht t p adalah package- package yang m enyediakan int erfaces dan class unt uk m em buat sebuah servlet ( unt uk Ht t pServlet , Ht t pServlet Request dan Ht t pServlet Response) .

Dengan cara m eng- ext end Ht t pServlet , class ini akan m eng- inherit m et hod yang akan secara ot om at is akan dipanggil oleh server t ergant ung pada kondisi- kondisi t ert ent u ( akan dibicarakan kem udian) . Dengan m eng- override m et hod ini, kit a dapat m em buat servlet kit a m em iliki fungsi-fungsi yang kit a inginkan.

Pada kasus ini, m et hod yang dit urunkan dari HTTPServlet dan akan kit a override adalah m et hod doGet . Unt uk m enyederhanakan, ia adalah sebuah m et hod yang akan dipanggil oleh servlet cont ainer kapanpun pada saat Get request dipanggil pada servlet t ert ent u. I ngat lah, pada bab sebelum nya m engenai sit e navigat ion, docum ent ret rieval, dan page viewing adalah cont oh-cont oh dari GET request . Oleh karena it u, kapan saj a user ingin unt uk m elihat out put dari servlet , sebuah GET request past i dipanggil.

Apabila kit a m elihat pada list ing code, kit a akan dapat m elihat bahwa doGet m et hod akan m enerim a dua param et er yait u: Ht t pServlet Request obj ect dan Ht t pServlet Response obj ect . Darim ana obj ect ini berasal, t idak perlu diperhat ikan lagi oleh developer. Mereka akan dicipt akan dan di- m aint ain oleh servlet cont ainer dan bekerj a sederhana bagi kit a pada saat cont ainer m em anggil m et hod doGet . Pada kasus ini, m et hod doGet ( dan m et hod- m et hod lain yang akan kit a t em ukan kem udian) ham pir sam a dengan m et hod public st at ic void m ain ( St ring[ ] args) yang kit a gunakan pada program j ava berbasis com m and line. Kit a t idak akan m em buat St ring array unt uk diberikan kepada m et hod; hal it u t elah disiapk an bagi kit a oleh runt im e environm ent .

Obj ect dari Ht t pServlet Request dan Ht t pServlet Response t elah m enyiapkan fungsi- fungsi yang berguna bagi developer:

● Obj ect Ht t pServlet Request m em berikan akses bagi segala inform asi t erhadap client request , t erm asuk apa saj a bent uk param et er value yang dapat dilet akkan pada Ht t p request header, Ht t p request m et hod yang t elah m ereka gunakan, dan sebagainya.

● Obj ect Ht t pServlet Response t erdiri dari sem ua m et hod yang dibut uhkan oleh developer unt uk m em produksi sebuah response yang akan dikir im kan kem bali kepada client . Meliput i m et hod- m et hod yang harus di- set pada HTTP response header, unt uk m endeklarasikan t ipe MI ME dari response, sebaik m et hod yang digunakan unt uk m engam bil inst ance dari class Java I / O yang akan kit a gunakan secara langsung unt uk m em produksi out put .

Kem bali pada kode diat as, kit a akan m elihat bahwa selain com m ent , hanya beberapa baris saj a yang kit a t elah gunakan dalam m encipt akan sebuah fungsi yang m enam pilkan " Hello World! " kepada user. Pert am a adalah Print Writ er out = response.get Writ er( ) dan yang lainnya adalah beberapa pem anggilan dari out .print ln( ) . Unt uk saat ini, berpikirlah secara sederhana unt uk m enggunakan Print Writ er sebagai obj ect yang dapat kit a gunakan unt uk m em berikan out put t ext kepada user. Dengan pernyat aan it u didalam benak kit a, t erasa sederhana unt uk m elihat bagaim ana pem anggilan out .print ln( ) berkali- kali dapat m enam pilkan cont ent berikut ini:

(4)

Te st in g se bu a h con t oh se r vle t

Pada poin ini kit a diharapkan m am pu unt uk m enam pilkan out put dari cont oh sebuah servlet . Unt uk m em ulai abst ract det ail dar i pem bangunan sebuah servlet dan konfigurasinya, kit a akan m enggunakan t ool ot om at is yang t elah disediakan oleh I DE. I DE yang akan kit a gunakan kali ini adalah Sun St udi Ent erprise 8 yang akan t ersedia bagi Anda secara grat is apabila Anda m erupakan anggot a dari Sun Developer Net w ork. I a m em ilik i dukungan lengkap bagi servlet dan spesifikasi JSP, sebaik sebuah host yang m enangani fit ur- fit ur t am bahan.

Mulai saat ini, kit a akan m engasum sikan bahw a Ent erprise 8 t elah diinst al dengan sukses pada sist em Anda. Sebagai bant uan pada saat inst alasi, Anda dapat m eruj uk pada bagian appendix yang ada dalam m odul ini.

(5)

Hal pert am a yang harus kit a lakukan unt uk cont oh servlet kit a disini adalah kit a harus

j ut nya akan m engharuskan Anda unt uk m em berikan det ail dari proj ect . Bagi t est m encipt akan proj ect yang baru dari aplikasi w eb. Unt uk m elakukan ini, pilih New - > Proj ect . Didalam layar yang kit a lihat ber ikut ini, pilih kat egori web. Disebelah kanan, pilih New Web Applicat ion

Layar selan

servlet pert am a kit a, m arilah m em buat " First Servlet Proj ect " sebagai nam a dari proj ect kit a, dan buat lah default value dari field- field yang lain.

(6)

Set elah selesai m em buat w eb proj ect yang baru, layar akan t erlihat sepert i berik ut :

(7)

Unt uk m enam bah servlet kit a ke aplikasi, klik kanan pada Source Packages, pilih New - > Servlet . ka Servlet t idak t am pil pada m enu New cont ext , pilih j uga New- > File/ Folder. Pada layar erikut nya, pilih w eb cat egory, dan kem udian Servlet .

em udian I DE akan m enj alankan beberapa screen yang akan m enanyakan m engenai det ail Ji

b

K

servlet yang t elah dicipt akan. Pada layar pert am a, nam a servlet adalah Fir st Servlet . Didalam package gunakan nam a j edi.servlet .

(8)

Kem udian pada layar selanj ut nya, biarkanlah default value sepert i sem ua, kem udian klik t om bol nish. Hal t ersebut akan m enghasilkan sesuat u yang akan dibangkit kan sepert i pada layar berikut

i: fi in

(9)

Dari sini, kit a dapat m elihat bahwa I DE yang t elah kit a buat sebagian akan m eng- im plem ent asi cessRequest . Jika kit a akan m enekan pada kot ak dengan t anda t am bah dibagian kiri awah, kit a akan m elihat bahwa processRequest adalah sebuah m et hod sederhana yang dapat it a panggil baik dari doGet m aupun doPost . Hal ini berart i cont ent dari m et hod processRequest m em berikan bent uk dasar bagi fungsionalit as dari servlet kit a.

yang yang t elah dideskripsikan dalam esifikasi servlet . Servlet lifecycle m endeskripsikan bagaim ana servlet load, inst ant iat e,

di-- dest roy, dan yang t erakhir bagaim ana gerbage collect ion t rol oleh sebuah kont ainer yang t elah dibangun oleh servlet .

m a, servlet dapat secara efisien m elakukan sharing dat a dengan yang lain, t et api sekarang oleh m et hod pro

b k

Pert am a, singkirkan sem ua cont ent s dari m et hod processRequest . Kem udian copy past e cont ent m et hod doGet dari list ing kode ke t est servlet .

Unt uk m enj alnkan t ekan shift + f6. I DE kem udian akan m em - package, deploy, dan invoke servlet secara ot om at is bagi kit a, unt uk m enghasilkan out put .

2 .1 .3 Se r vle t

Life cycle

Sebuah servlet t elah diat ur m elalui sebuah lifecycle sp

inisialisasi, di- request service- nya, di dij alankan. Lifecycle dari servlet dikon

Lifecycle dari servlet akan m em berikan kesem pat an bagi servlet engine unt uk m engenali perm asalahan dalam hal perform ance dan CGI resource dan aspek keam anan pada low- level server API program . Sebuah servlet engine m ungkin dapat m engeksekusi sem ua servlet didalam sebuah Java virt ual m achine( JVM) . Karena pada dasarnya m ereka berada didalam JVM yang sa

Java m engakses privat e dat a dari yang lain haruslah dicegah. Servlet j uga m em buka kem ungkinan unt uk unt uk m elakukan persist ance diant ara request - request sebagai inst ance dari obj ect , sehingga dapat m enghem at m em ori lebih banyak daripada full- fledged process.

(10)

Gam bar diat as m enunj ukkan event ut am a didalam sebuah kehidupan servlet . Sangat lah pent ing nt uk dicat at bahw a dari set iap event past ilah ada sebuah m et hod pada servlet yang akan

di-voke oleh cont ainer. Marilah kit a lihat sat u dem i sat u:

ada fase ini, sebuah class servlet akan diload kedalam m em ori dan inst ance- nya akan dicipt akan leh servlet cont ainer.

t ainer pract ice disebut lazy loading. Dengan m enggunakan et hod ini, sebuah servlet class akan di- load kedalam m em ori, di- inst ant iat e, dan diinisialisasi

rt i bahwa ada sedikit overhead yang t erj adi pada at pem anggilan pert am a sebuah servlet . Apabila kondisi ini t idak diinginkan, m aka t iap servlet u

in

2 .1 .3 .1 I N STAN TI ATI ON

P o

Secara default , sebuah servlet con m

hanya set elah sebuah request t elah dibuat unt uknya. Hal ini m enj adikan w akt u st art up m enj adi lebih cepat bagi aplikasi, t et api hal ini j uga bera

sa

dapat dikonfigurasikan unt uk di- load pada st art up server at au aplikasi. Lebih banyak t ent ang hal ini, akan kit a diskusikan lagi pada descript or bagi applicat ion's deploym ent .

(11)

Sepert i yang dapat kit a lihat pada diagram , sebuah servlet dapat m elewat i fase inst ant iat ion kali per lifet im e. Hal ini berart i bahw a hubungan overhead dengan loading pendefinisian servlet ass kedalam m em ori hanya t erj adi sekali. Hal ini m enunj ukkan keunt ungan servlet dibandingkan

knologi yang lain.

au inisialisasi value. Servlet m em bagi kedalam fase t erpisah bagi akt ifit as

ada fase ini servlet digunakan t erut am a didalam sebuah aplikasi. Sepert i pada m asa st ant iat ion, servlet hanya berada pada fase ini sekali. Hanya set elah fase ini, inst ance dari

uat dapat dim ulai dipanggil sebagai servlet .

oleh cont ainer pada m asa ini adalah init ( ) m et hod. I a m erupakan sebuah

public void init(ServletConfig config)

hat , m et hod akan m engam bil sebuah param et er sebagai inst ance dari sebuah bj ect Servlet Config. Obj ect ini adalah obj ect yang bert anggung j awab t erhadap pem enuhan

at us dar m asi m engenai konfigurasi dari servlet , ia j uga

enyediakan sebuah cara bagi servlet unt uk m engakses inform asi secara luas dari aplikasi dan em fasilit asi unt uk m enggunakan obj ect dari Servlet Cont ext .

servlet act ion t idak t ert inggal an konfigurasi j uga t elah di- set up

sam pai server t elah m enghapus servlet dengan m em anggil et hod dest roy.

se cl t e

Met hod yang relevan adalah servlet konst rukt or t anpa argum ent . Akan t et api, t idak direkom endasikan unt uk m elet akkan kesuluruhan kode didalam sebuah konst rukt or. Ham pir sem ua fungsi yang developers inginkan unt uk dit am bahkan kepada konst rukt or t erm suk obj ect pada saat set - up, at

m et hod signat ure yang lengkap dan m erepresent asikan bahw a servlet sangat m udah unt uk dipanggil kem bali.

Sepert i disebut kan sebelum nya bahw a konfigut asi at au inisialisasi k ode m anapun haruslah t idak dilet akkan dalam konst rukt or servlet akan t et api sebaiknya dilet akkan dalam m et hod init . Jika seorang developer ingin m enggunakan m et hod ini, sangat lah pent ing unt uk m em anggil super.init ( config) .Unt uk m em ast ikan bahw a inisialisasi default dari

d

Set elah inisialisasi, servlet akan dit angani oleh request dari client .

Met hod ini hanya akan dipanggil k em bali pada saat server dim asukkan kedalam servlet . Server t idak dapat m e- load sebuah servlet

m

(12)

2 .1 .3 .3 SERV I CE

ase ini adalah fase dim ana sebuah servlet berada didalam lifet im e- nya. Pada fase ini, servlet apat berkali- kali dipanggil oleh cont ainer unt uk m enyediakan fungsionalit as- nya.

alah m et hod yang akan di- invole oleh servlet cont ainer pada fase ini:

bj ect dari Servlet Request dan Servlet Response diberikan kepada sebuah m et hod yang od response.

ebuah hal pent ing yang harus diingat adalah servlet cont ainer akan m em buat pem anggilan yang

request . Hal ini adalah salah sat u keunt ungan yang dim ilik i oleh va servlet . Hal ini j uga m erupakan salah sat u alasan m engapa servlet dan service m et hod- nya

public void doGet(HttpServletRequest req, HttpServletResponse) rvlet m ana yang dikeluarkan dari m em ori dit ent ukan oleh servlet

angsung dikont rol oleh developer.

akan disebut sebagai fase ang akan dipanggil oleh cont ainer sebelum ia selesai adalah m et hod

us dihandle sepert i koneksi ke dat abase dan sebagainya. F

d

Met hod dibaw ah ini ini ad

public void service(ServletRequest req, ServletResponse res)

O

m enyediakan m et hod bagi developer unt uk m eng- ext ract inform asi dari user request dan m et h unt uk m em bangkit kan

S

berulang- ulang ini kepada m et hod service dengan m enggunakan t hread yang berbeda. Oleh karena it u, past ilah hanya sat u saj a inst ance dari servlet akt if yang m engam bil t em pat di dalam m em ori unt uk m enangani banyak

j a

haruslah selalu didesain unt uk m enerim a t hread- safe.

Bagi HTTP servlet yang spesifik m isalnya servlet s ext ending Ht t pServlet ,developers seharusnya m eng- override service m et hod secara langsung. Jika t idak developer harus m eng- override m et hod berikut ini:

public void doPost(HttpServletRequest req, HttpServletResponse) public void doPut(HttpServletRequest req, HttpServletResponse) p

M sing m et hod ini cocok bagi HTTP m et hod yang spesifik( GET t epat kem udian akan dipanggil apabila servlet m enerim a request dari HT d ggilan HTTP yang dit angani oleh developer adalah GET at au servlet hanya bisa m eng- im plem ent doGet ,DoPost , dan keduanya.

2 .1 .3 .4 D ESTRUCTI ON

A u

inst ance servlet dari m em ori. Se cont ainer dan hal ini t idak dapat l

Sebuah cont ainer j uga akan m em bebaskan inst ance servlet pada saat cont ainer t ersebut di shut dow n.

Pada saat sebuah servlet t elah dihilangkan dari m em ori, hal ini dest ruct ion. Met hod y

dest roy( ) . Disini, servlet kit a seharusnya m am pu unt uk secara eksplisit m em bebaskan resource yang har

(13)

2 .1 .3 .5 GARBAGE COLLECTI ON

t uran j ava st andard m engenai garbage collect ion dari obj ect , t idak akan dij elaskan lebih lanj ut isini.

e n a n ga n i r e que st s da n r e spon se s

ut am a dari sebuah servlet adalah unt uk m enyediakan sebuah cont ent yang dinam ik bagi ser. Berdasarkan definisinya, dynam ic cont ent adalah sebuah cont ent yang berubah- ubah

sponse- nya pada kondisi yang bervariasi,sebagai cont oh kondisi request dari user, wakt u, dan

endapat kan inform asi HTTP secara spesifik sepert i cookies inform at ion, det ail dar i eader, dan sebagainya.

A d

M

Tuj uan u re

sebagainya.

Unt uk m em berikan akses kepada servlet bagi user request t ert ent u,t elah disediakan sebuah inst ance dari Servlet Request obj ect yang m enyem bunyikan det ail dari ser vlet berbasis HTTP diberikan pada subclass, HTTPServlet Request , yang m enyediakan m et hod t am bahan unt uk kem bali lagi m

h

(14)

For m D a t a da n Pa r a m e t e r

e t Pa r a m e t e r

alah sat u skenario yang paling sering dit em ukan dan m em but uhkan sebuah cont ent yang ingin aplikasi yang m e- respon kepada user dipresent asikan dalam ent uk form , sepert i cont oh berikut ini:

rt ent u kepada nam a user t ersebut .

ada skenario ini dan sepert i skenario yang lain, Java t elah m enyediakan m et hod get Param et er idalam obj ect Ht t pServlet Request . Met hod ini akan m engam bil sebuah param et er St ring( nam a

pesifik dari form ) g

S

dinam ik adalah apabila kit a b

Diberikan form diat as, yang m engam bil nam a user, dan kit a ingin unt uk m em berikan response t e

P d

dari elem ent form dim ana valuenya dapat diam bil kem bali) dan m engem balikan response sebuah St ring( sebuah value dari form elem en s

(15)

Dibaw ah adalah cont oh unt uk m endapat kan nam a user dan m enam pilkan sebuah salam derhana.

se

public GetParameterServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// dapatkan nama yang telah di-inputkan oleh user

String userName = request.getParameter("userName");

// dapatkan object dari PrintWriter dan gunakanlah untuk memberikan output berupa

// salam

PrintWriter out = response.getWriter();

out.println("<HTML><BODY><H1>");

out.println("HELLO AND WELCOME, " + userName + "!");

out.println("</H1></BODY></HTML>");

out.close();

}

}

<HTML>

<TITLE>Halloa!</TITLE>

<BODY>

<form action="/GetParameterServlet" method="post">

Enter user name : <input type="text" name="userName"/> </br>

<input type="submit" value="Greet me!"/>

</form>

</BODY>

</HTML>

(16)

Diat as adalah sebuah HTML yang digunakan unt uk m enam pilkan form yang akan digunakan unt uk Sebagai cat at an value dari param et er yang diberikan kepada

cok dengan nam a dari t ext field.

nam a JEDI pada form sebelum nya.

ge t Pa r a m e t e r Va lu e s

Ada saat - saat dim ana kit a m enginginkan unt uk m engam bil kem bali dat a form dari sebuah form pada m ult iple elem ent dengan nam a yang sam a. Pada kasus ini, gunakanlah get Param et er m et hod yang t elah disebut kan sebelum nya dan akan m engem balikan sebuah value dari elem ent pert am a dari nam a yang t elah diberikan. Unt uk m endapat kan kem bali sem ua value, kit a akan m enggunakan m et hod get Param et erValues. Sekali lagi, m et hod ini akan m engam bil dalam bent uk St ring sebagai nam a dari elem ent form , akan t et api, kali ini, akan m em punyai nilai kem balian St ring array.

m endapat kan dat a dari user. m et hod get Param et er haruslah co

Berikut ini adalah out put dari kode pada saat kit a m em berikan

(17)

Berikut ini adalah cont oh, sam pai m engeluarkan out put .

public GetParameterValuesServlet extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletExceptionm IOException{

String paramValues[] = request.getParameterValues("sports");

StringBuffer myResponse = new StringBuffer();

myResponse.append("<HTML><TITLE>Your choices</TITLE>");

myResponse.append("<BODY><H1>Your choices were : </H1>");

for (int i = 0; i < paramValues.length; i++) {

myResponse.append("<br/><li>");

myResponse.append(paramValues[i]);

}

PrintWriter out = response.getWriter();

out.println(myResponse.toString());

}

}

<html>

<title>Choice selection</title><body>

<H1>What sports activities do you perform?</h1>

<form action="GetParameterValuesServlet" method="post">

<input type="checkbox" name="sports" value="Biking"> Biking <br/>

<input type="checkbox" name="sports" value="Table Tennis"> Table Tennis <br/>

<input type="checkbox" name="sports" value="Swimming"> Swimming <br/>

<input type="checkbox" name="sports" value="Basketball"> Basketball <br/>

<input type="checkbox" name="sports" value="Others"> Others <br/>

<input type="submit">

</form></body>

</html>

(18)
(19)

ge t Pa r a m e t e r N a m e s

Ada saat - saat dim ana kit a m enginginkan servlet kit a unt uk berhat i- hat i t erhadap nam a dari sat u at au lebih param at er didalam form , t anpa harus m enuliskan hardcode m ereka kedalam servlet . Pada kasus ini, kit a akan m enggunakan m et hod get Param et erNam es. I a akan m engem balikan sebuah enum erat ion dari nam a yang berasal dari elem ent - elem ent form yang t elah digabungkan pada saat user m e- request .

M e n ga m bil k e m ba li in for m a si da r i se bua h URL r e que st

I ngat lah, dari HTTP kit a, bahw a sebuah URL request t ersusun dari bagian- bagian sepert i beriku ini:

http://[host]:[port]/[requestPath]?[queryString]

Kit a dapat m em anggil kem bali current value m asing- m asing bagian dari user request dengan m em anggil m et hod pada obj ect Ht t pServlet Request

Oleh karena it u,sebagai cont oh, dengan sebuah request URL dari

(20)

I n for m a si pa da H e a de r

e ) – ham pir sam a dengan get Header( ) , hanya j ika ia m engem balikan sem ua value pada spesifik header sebagai obj ect enum erat ion.

n sebuah obj ect Enum erat ion dari

e t D a t e H e a de r ( St r ing na m e ) – m engem balikan value dari spesifik header sebagai sebuah

long va bj ect Dat e. Jika header t idak dikonversikan

t I llegalArgum ent Except ion.

t era r onsole j uga inst ance dari obj ect Print Writ er. Sebagian

bes a : j ika Anda m em punyai inst ance dari obj ect

rin rit er, secara sederhana m em anggil pada print yang disediak an at au m et hod print I n yang isediakan out put .

ggilan kem bali, dengan ode keluaran dalam huruf bercet ak t ebal.

I nform asi pada header bisa didapat dari dalam servlet dengan m em anggil m et hod- m et hod berikut ini dari HTTPServlet Request :

ge t H e a de r ( St r in g na m e ) – m engem balikan value dari spesifik header sebagai St ring. Jika spesifik header t idak ada, m aka akan m em iliki nilai kem balian null .

ge t H e a de r s( St r in g n a m

Ge t H e a de r N a m e s( ) - m et hod ini akan m engem balika sem ua header t erm asuk HTTP request .

ge t I n t H e a de r ( St r in g n a m e ) – m engem balikan value dari spesifik header sebagai int . Jika spesifik header t idak t ersedia, m et hod ini akan m em iliki nilai kem balian - 1.

g

lue yang m erepresent asikan sebuah o i sebuah Dat e, m et hod ini akan m endapa m enj ad

2

Pada cont oh- cont oh sebelum nya, kit a Ki t elah m elakukannya dengan m e

ih j auh, kit a t elah m enggunakan sebagian besar m et hod get Writ er. Met hod ini m engem balikan ec Print Writ er yang dihubungk

in dalam perspekt if yang t epat , kit a harus m engingat bahw a obj ect Syst em .out yang secara t u kit a gunakan unt uk isi keluaran ke c

ar m ereka berkelak uan pada cara yang sam t W

P d

Kode bagi servlet pert am a kit a adalah disalin kem bali di sini unt uk pem an k

import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

out.println("<HTML> <TITLE>Hello Page</TITLE><BODY><br>"); out.println("<h1>Hello World!</h1>");

out.println("</BODY></HTML>");

} }

(21)

Met hod khusus lainnya dalam obj ect Ht t pServlet Response adalah : penerim aan. Sem ua isi yang t elah kit a generat e sehingga t elah m enj adi HTML. Kit a dapat secara

udah m engirim t ipe isi yang m

pr t dalam obj ect Print Writ er yang t elah kit a gunakan t idak cukup. Unt uk m e- generat e out pun bu an t eks, kit a m enggunakan m et hod yang lain.

Ge t Ou t pu t St r e a m – m et hod ini m enerim a inst ance dari obj ect Out put St ream yang dihubungkan dengan response kit a ke user. Menggunakan Out put St ream , kit a dapat m enggunakan obj ect dan m t hod Java I / O st andar unt uk m enghasilkan sem ua j enis out put .

Di baw ah ini m erupakan cont oh kode yang akan m engeluarkan file JPG dalam aplikasi web ke user.

public JPEGOutputServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) {

byte bufferArray[] = new byte[1024];

ServletContext ctxt = getServletContext();

response.setContentType("image/gif");

ServletOutputStream os = response.getOutputStream();

InputStream is = ctxt.getResource("/WEB-INF/images/logo.gif").openStream();

int read = is.read(bufferArray); l konfigurasi, packaging, dan pengem bangan aplikasi dalam Ent erprise I DE unt uk m eringkas det ai

w eb. Kit a akan m elihat rinciannya sekarang.

(22)

2 .1 .4 .1 Konfigu r a si Aplik a si W e b

Spesifikasi servlet m endefinisikan sebuah file XML bernam a w eb.xm l yang beraksi sebagai file konfigurasi unt uk aplikasi w eb kit a. File ini j uga dikenal sebagai deploym ent descript or.

<web-app version="2.4"

Kode di at as adalah web.xm l yang kit a gunakan pada cont oh First Servlet kit a. Kit a akan m enggunakannya sebagai t it ik awal dalam ek splorasi web.xm l, dan m enam bah di at asnya.

CATAT : web.xm l dari proyek aplikasi web Ent erprise dapat dit em ukan dengan m engem bangkan b Configurat ion File dalam view proj ect .

t a

(23)

< web- app>

Baris ini dij alankan sebagai kedua elem en root dari file konfigurasi sebaik m endeklarasikan ( lew at t ribut nya) inform asi ut am a unt uk isi serv let unt uk m enj alankan file sebagai file descript or

servlet >

m en ini m endefinisikan servlet y ang digunakan oleh aplikasi. < servlet > m em ili

disediakan oleh developer dim ana akan digunakan unt uk

et yang harus dipenuhi.

i dan nilai dari elem en yang m em berit ahu diinisialisasi pada st art up cont ainer/ aplik asi, m elewat i at uran loading norm al lazy. Nilai unt uk elem en ini adalah angka dim ana

andingkan ke servlet < load- on- st art up> lainnya.

Set iap inst ance dari elem en ini m endefinisikan pem et aan URL ke servlet . Ber ikut ini node anak

vlet unt uk dipet akan. Harus didefinisikan sebelum nya

let ini akan dipet akan. Mem punyai nilai dari / * akan a request pada aplikasi Anda secara langsung ke servlet Anda.

Pada cont o ah diberikan, pola url dari First Servlet adalah / First Servlet . I ni art inya bahwa st ke

ht t p: / / [ host ] : [ port ] / First Servlet Proj ect / First Servlet gani oleh First Servlet .

Diam bil cont oh bahwa sem ua definisi servlet harus pert am a disediakan sebelum m enam bah

finisikan rincian konfigurasi unt uk pengat uran session. I ni akan dibicarakan dalam bab selanj ut nya.

st >

Elem en ini m endefinisikan kom ponen w eb yang akan secara ot om at is di- load j ika user em asukkan request unt uk aplikasi t anpa m enspesifikasi sum ber yang ut am a. Sebagai cont oh, a

sem ua referensi yang akan dat ang ke servlet ini. 2. < servlet - class> - persyarat an nam a class dari servl 3. < load- on- st art up> ( Pilihan) – m em punyai ent r

cont ainer yang servlet harus di- inst ant iat e dan dengan

m em er int ah urut an dari loading yang dib

< servlet - m apping>

berbagai pem et aan servlet .

< session- config>

akan m enyebabkan file yang didefinisikan di sini unt uk di- load

(24)

Lebih dari sat u file yang dapat dit et apkan dalam list ini. Hanya sat u yang dapat m uncul pert am a

.1 .4 .2 Pa ck a ging a plik a si w e b

lika

ubah iinst al ke

ke cont ainer web.

2

Mari kit a lihat lagi pada st rukt ur dari aplikasi web sebagai perint ah oleh spesifikasi servlet :

Ap si kit a dapat dideploy ke server m enggunakan st rukt ur file ini, at au sebagai file JAR yang yang dinam akan file WAR. File WAR lebih padat dan port abel; m ereka dapat d

di

dalam berbagai cont ainer yang m engikut i spesifikasi Serv let .

(25)

2 .1 .4 .3 M e - ge ne r a t e file W AR da r i pr oj e ct En t e r pr ise ya ng a da

Sangat sederhana unt uk m enghasilkan file WAR yang berisi aplikasi web kit a dari proj ect yang da dalam Sun St udio Ent erprise 8. I ni sem udah klik kanan pada nam a proj ect dalam view roj ect , dan m em ilih Build Proj ect . Kem udian I DE akan m em proses ke package aplikasi Anda.

E akan m enginform asikan Anda j ika operasi build sukses, sebaik m enginform asikan Anda lokasi ari pem buat an file WAR.

a P

I D d

(26)

2 .1 .5 Pe n ge n a la n An t

Disam ping dari penggunaan I DE unt uk package aplikasi web, kit a j uga dapat m enggunakan build t ool yang dapat secara ot om at is bagi kit a dalam proses com pilat ion dan packaging.

Build t ool y ang dit erim a secara luas oleh indust ri yait u Ant . Ant adalah proj ect yang open source dari Apache Soft ware Foundat ion, dan dapat didownload dari

ht t p: / / ant .apache.org

a pada dasarnya m endefinisikan akt ifit as logis yang dapat dim uat oleh ild. Target ini disusun dari sat u at au lebih t ask yang m endefinisikan rincian bagaim ana t arget m enj alankan akt ivit asnya.

Pada dasarnya, Ant m em baca dalam file build ( secara t radisionil ber nam a build.xm l) . File build ini t erbuat dari t arget, dim an

file bu

(27)

Build file dapat m enj alankan t ask com pilat ion dan packaging t erm asuk courseware dan dapat dit em ukan dalam direk t ori sam ples/ blankWebApp.

persyarat an pada build file :

1. Build file harus dit em pat kan dalam st rukt ur direkt ori root proj ect yang direkom endasikan oleh Apache Soft ware Foundat ion unt uk pengem bangan aplikasi web.

2. Sebagai t am bahan, harus ada direkt ori lib dalam proj ect root yang akan berisi sem ua dependencies JAR dari aplikasi

3. Harus ada file yang bernam a build.propert ies dalam direk t ori yang sam a sebagai scr ipt build dan harus berisi nilai dari propert i- propert i berikut :

4. app.nam e – nam a dari aplikasi/ proj ect

5. appserver.hom e – direkt ori inst alasi dari inst ance Sun Applicat ion Server 8.1

Berikut ini st rukt ur direkt ori yang direkom endasikan unt uk pengem bangan aplikasi w eb :

St rukt ur direkt ori dibuat t erpisah dari st rukt ur direkt ori yang dim int a oleh spesifikasi servlet . em punyai st rukt ur direkt ori t erpisah dari Apache :

I si dar i dir ekt ori source lebih m udah diadm inist rasi, dipindah, at au di- backup j ika versi

rce ( t idak ada

a Berikut keunt ungan- keunt ungan m

deploym ent t idak int erm ixed.

● Kont rol source code lebih m udah diat ur pada direkt ori yang berisi hanya file sou class yang di- com pile, dsb) .

● File- file yang m em buat dist ribusi m am pu diinst al dari aplikasi lebih m udah unt uk dipilih ket ik t erpisah.

hirarki deploym ent

Sekilas hal ini m ungkin sedikit susah unt uk dim engert i. Unt uk dapat m em bant u m engert i hal ini, sem ua persyarat an unt uk com pile dan package cont oh First Servlet disediakan dalam dir ekt ori sam ples/ First Servlet .

(28)

Unt uk m elakukan packaging dari sebuah app m enggunakan st rukt ur ini, j alankan baris perint ah berikut ( dalam direkt ori yang sam a yang berisi build file)

ant dist

I ni m e- generat e file WAR dan

t arg m in yang disediakan oleh cont ainer.

ont ainer servlet biasanya berisi t ool adm inist rat if yang dapat digunakan unt uk m en- deploy AR yang i- generat e ke dalam Sun Applicat ion Server 8.1.

• La

akan m em anggil t arget dist dalam build file dim ana akan

m enem pat kannya ke dalam dir ekt ori dist . File WAR ini akan dapat di- generat e ke dalam cont ainer et servlet m enggunakan t ool ad

2 .1 .6 D e ploy m e n t k e da la m se r v e r .

C

aplikasi w eb. Berikut kit a akan m engikut i langkah yang dim int a unt uk m en- deploy file W d

ngkah pert am a, log- in ke dalam console adm inist rat if. I ni dapat diakses dengan m em asukkan URL berikut ke dalam browser Anda : ht t p: / / localhost : [ ADMI N_PORT] di

ADMI N_PORT adalah port yang dikonfigurasi selam a inst alasi unt uk m enangani perm int adm inist rat if.

Kedua, klik kiri pada t ab W e b Applica t ion pada panel kiri, kem udian klik t om bol yang dit em ukan dalam panel kanan.

m ana aan

D e ploy

(29)

• Dalam t am pilan yang selanj ut nya akan m uncul, klik pada t om bol Browse unt uk m em ilih file WAR yang di- upload. Klik pada t om bol Next pada kanan at as.

• Klik pada t om bol Finish pada t am pilan berikut nya.

• Selam at , aplikasi Anda sekarang t elah di- deploy.

(30)

Pa r a m e t e r Se r v le t da n Aplik a si

Se r v le t Config

Obj ect Servlet Config adalah obj ect yang dilewat kan ke servlet yang dit et apkan selam a fase inisialisasi. Dengan m enggunakan ini, servlet dapat m enerim a inform asi khusus ke dirinya sendiri, sepert i param et er inisialisasi. Juga, m enggunakan obj ect Servlet Config, servlet dapat m em peroleh akses ke inst ance dari obj ect Servlet Cont ext , dim ana kit a akan sedikit m em bicarakannya nant i.

Penggunaan param et er inisialisasi sangat besar, t erut am a ket ika berhubungan dengan inform asi yang m ungkin bervariasi dengan set iap deploym ent dari aplikasi. Juga, m enyediakan beberapa dat a ke servlet sebagai param et er, berlawanan dengan hard- coding yang secara langsung ke dalam sevrlet , m enyediakan deployer kem am puan unt uk m engubah sifat servlet t anpa m eng-com pile ulang kode.

Kit a dapat t am bahkan param et er inisialisasi ke servlet dengan m enspesifikasikannya ke dalam definisi serv let dalam descript or deploym ent . Di baw ah ini cont ohnya :

<param-name>debugEnabled</param-name>

<param-value>true</param-value>

</init-param>

</servlet>

...

ont ainer bahwa kit a m em ulai dan m engakhiri efinisi servlet secara bert urut - t urut . < param - nam e> m endefinisikan nam a dari param et er, dan

param - value> m endefinisikan nilainya.

nt uk m em peroleh akses ke param et er servlet , servlet harus m endapat penanganan pert am a ada obj ect Servlet Config nya, dim ana dapat dilakukan dengan m em anggil m et hod et Servlet Config( ) . Set elah it u, nilai param et er dapat dit erim a sebagai St ring dengan m em anggil

(31)

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

ServletConfig config = getServletConfig();

String isDebugEnabled = config.getInitParameter("debugEnabled");

if (isDebugEnabled.equals("true") {

...

}

Di at as adalah cont oh pot ongan kode yang m engilust rasikan prosedur.

Se r v le t Cont e x t

Obj ect Servlet Cont ext adalah obj ect yang m em berikan servlet akses ke cont ext aplikasi.

nt ext aplikasi sebagai area dim ana aplikasi berpindah. Area ini disediakan oleh cont ainer unt uk set iap aplikasi web dengan set iap cont ext aplikasi yang dipisah dari yang lainnya

plikasi m ungkin t idak m engakses cont ext dari app lain.

M arena dengan servlet ini dapat m enerim a

. Juga dapat m enyim pan dat a yang dapat kom ponen dalam aplikasi.

yak cara yang sam a param et er inisialisasi dapat disediakan unt uk servlet individu, ediakan unt uk digunakan oleh seluruh aplikasi.

Anggap co

– sebuah a

em punyai akses ke cont ext ini sangat pent ing k param et er dan dat a aplikasi yang berm acam - m acam dit erim a oleh berbagai Elem en XML yang digunakan di sini adalah < cont ext - param > . Set iap inst ance dari elem en yang endefinisikan param et er unt uk digunakan oleh keseluruhan aplikasi. < param - nam e> dan param - value> bekerj a dalam cara yang sam a sepert i < init - param > .

ATAT : Sekali lagi, ingat bahw a m engurut kan elem en dalam descript or deploym ent haruslah pat . Unt uk m enj aga file web.xm l t et ap valid, sem ua ent ri < cont ext - param > harus dit em pat kan EBELUM ent ri < servlet > apapun.

rosedur unt uk m endapat kan nilai param et er sangat m irip dengan yang digunakan unt uk endapat kan param et er servlet - specific. Merupakan inst ance dari Servlet Cont ext yang servlet arus dit angani j uga. I ni dapat didapat kan dengan m em anggil m et hod get Servlet Cont ext ( ) dari

(32)

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

ServletContext ctxt = getServletConfig().getServletContext();

String jdbcURL = ctxt.getInitParameter("databaseURL");

setURL(jdbcURL);

Rincian request dapat dit erim a dari Ht t pServlet Request , dan m et hod response- generat ing dapat diakses dari Ht t pServlet Response. Keduanya dilewat kan sebagai param et er ke doGet

servlet ke dalam cont ainer web, dapat di- load sebagai file WAR

pre-Mereka harus dit em pat kan dalam direk t ori WEB- I NF aplikasi dan harus m engikut i at uran yang past i.

pat disediakan pada aplikasi m enggunakan descript or deploym ent dan dapat lam inst ance Servlet Config at au Servlet Cont ext .

• Servlet adalah solusi Java unt uk m enghasilkan cont ent yang dinam is bagi web dan bagian dari CGI .

• Servlet dat ang dengan berbagai keunt ungan daripada CGI , t erm asuk m engurangi m em ory foot print dan lebih sedikit pengeluaran dengan set iap perm int aa

• Servlet sepenuhnya diat ur oleh cont ainernya. Kebut uhan kode bagi developer salah sat unya m engim plem ent asikan secara fungsional.

• Unt uk m em buat servlet , developer akan m em buat subclasses dari Ht t pServlet dan m enem pat kan im plem ent asi fungsionalnya dala

dan doPost . Unt uk m en- deploy

package. Proses packaging dapat dilakukan secara ot om at is dengan I DE at au m elalui penggunaan build t ool.

• Descript or deploym ent adalah bagian yang perlu dari aplikasi.

• Param et er da

dit erim a dengan m enggunakan m et hod da

Gambar

Gambar diatas menunjukkan event utama didalam sebuah kehidupan servlet. Sangatlah penting untuk dicatat bahwa dari setiap event pastilah ada sebuah method pada servlet yang akan di-invoke oleh container
Tabel berikut ini merepresentasikan hasil apabila kita memanggil method tersebut :

Referensi

Dokumen terkait

Misalnya Hotel Sahid Jakarta, discount 35% dari Published Rate, Hotel Sahid Jaya Makassar, disc 50% dari Published Rate, Hotel Sahid Raya Yogyakarta, disc 10% untuk F&amp;B, disc

Evaluasi Administrasi hanya dilakukan pada hal-hal yang tidak dinilai pada penilaian kualifikasi. Unsur-unsur yang dinilai meliputi Kelengkapan Persyaratan yang

Nur Hamidah Hasibuan : Manfaat Keberadaan Industri di Daerah...2002 USU e–Repository © 2008... Nur Hamidah Hasibuan : Manfaat Keberadaan Industri di Daerah...2002 USU e–Repository

[r]

perlawanan dengan menggunakan momentum meletusnya Gunung Krakatau..

Pada tahap awal Pokja Pengadaan Barang/Jasa pada Dinas Bina Marga Kabupaten Kuningan telah memberikan penjelasan kepada peserta lelang mengenai hal-hal yang perlu disampaikan

Penelitian ini bertujuan untuk mengetahui: 1) kinerja tutor dalam melaksanakan tugas pokok di Sanggar Kegiatan Belajar (SKB) Tahun pelajaran 2013/2014 sesuai dengan Keputusan

 Kawasan konservasi dan resapan air, pada bagian lereng atas dan tengah perbukitan dari kawasan perencanaan (Srimulyo

Sehubungan dengan keterbatasan waktu, biaya, kemampuan penulis dan banyaknya cakupan untuk menghindari kesimpangsiuran dalam penulisan agar judul dan latar belakang dapat dipahami