BAB 1
Pe n ge n a la n Pe m r ogr a m a n W EB
1 .1
M e n ga pa h a r u s de n ga n W e b?
Selam at dat ang pada pelaj aran t ent ang web program m ing. Unt uk m em ulainya , dim ulai dengan sebuah pengert ian yang baik t ent ang bagaim ana web dapat berguna unt uk perusahaan dan program m er sepert i pada pem rogram an Web.
1 .1 .1
Lin gk u n ga n Te k n ologi N e t r a l.
Pert am a- t am a,sebuah pem ik iran yang baik t ent ang aplikasi pada int ernet yait u ‘Net adalah t echnology am an lingkungan. Kom unikasi dengan berm acam aplikasi pada web yang dij alankan m elalui popular prot ocol( HTML/ HTTP) hal it u t idak dibut uhkan user unt uk m em punyai operat ion syst em yang khusus m aupun klien yang diprogram kan pada bahasa pem ogram an t ert ent u at au fram ew ork. Sem ua user ingin m enggunakan web browser, aplikasi st andart ini t erdapat pada operat ion syst em apapun.
Dikarenakan program yang dibut uhkan pada pem belaj aran ini hanyalah sebuah web browser, t idak perlu m em bagi program - program m elalui CD. User t idak perlu j uga m elalui sebuah proses inst alasi yang panj ang; yang akan m ereka perlukan adalah lokasi aplikasi di I nt ernet , dan m ereka t elah siap.
Manfaat yang lain yang dim iliki biner dari suat u program yang t erdapat pada server yang diakses t er dapat pada user com put er yait u perm asalahan yang um um yang t erkait dengan updat e program , sepert i kebut uhan pada wakt u t ert ent u m elihat kem ungkinan versi t erbar u dari suat u program , perm asalahannya adalah bagaim ana cara m endapat kan program updat ing; disisihkan secara bersam an, user t idak perlu diberit ahu at as program yang sudah t erupdat e; sem ua yang dibut uhkan unt uk m engupdat e program pada web server dan secara ot om at is sem ua user akan m enggunakannya set elah it u akan m enikm at i m anfaat dari updat e.
1 .1 .2
Ar sit e k t u r Clie n t Se r ve r
1 .1 .2 .1 Th ick da n t h in clie n t s
Aplikasi web adalah j enis aplikasi yang m enggunakan arsit ekt ur client - server. Pada j enis arsit ekt ur ini, sebuah program client t erhubung pada sebuah server unt uk inform asi yang dibut uhkan unt uk m elengkapi t ugas- t ugas yang t elah diset oleh user. Ada yang disebut
Thin client adalah client s yang hanya berisikan sedikit dari apa y ang diperlukan unt uk pengalam an user, kebanyakan hanya int erface. Sem ua logika bisnis, sem ua dat a, t erkecuali yang disediakan oleh user, berada di dalam server. Thick client s adalah client s yang sam a, kecuali pada int erface, j uga berisi beberapa, j ika t idak banyak, logika pengolahan diperlukan unt uk t ugas- t ugas user yang spesifik.
1 .1 .2 .2 Ar sit e k t u r Clie n t - Se r ve r da r i pe r spe k t if W e b
Dari definisi di at as, kit a dapat m enyim pulkan bahw a client digunakan unt uk aplikasi w eb t hin client s. Program client , pada hal ini adalah brow ser, hanya sebuah int erface yang oleh user digunakan unt uk m elaksanakan t ugas- t ugas. Yang lainnya, dari dat a yang user perlukan unt uk dioperasikan, logika yang m enent ukan aliran program dan eksekusi, berada pada server.
Dari suat u perspekt if web base disini adalah t ugas- t ugas dari server client :
W e b se r v e r
Ga m ba r 1 .1 : Ta n ggu n g Ja w a b Se r ve r
W e b clie n t
Tugas browser adalah m enyediakan user sebuah int erface dim ana akan m em int a server dan m enam pilkan respon dari server.
Ket ika user m em int a server ( sebagai cont oh, m endapat kan dokum en, at au m ungkin m engirim (subm it) sebuah form ) , browserlah yang m em form at perm int aan t ersebut ke dalam sesuat u yang server dapat m engert i. Begit u server t elah selesai m em proses perm int aan dan kem udian m engirim r espon, browser m engam bil dat a yang diperlukan dari respon yang diberikan server dan kem udian m erendernya unt uk dit am pilkan ke user.
H TM L
Bagaim ana cara browser m enget ahui apa yang harus dit am pilkan ke user? Sebagian besar sit us web t idak hanya berisi t eks sederhana, t et api disert ai grafis at au m em ilik i form yang dapat m em anggil suat u dat a. Bagaim ana m asing- m asing browser m enget ahui apa yang harus dit am pilkan?
Jawabannya adalah HTML, sebuah singkat an dari Hypertext Markup Language. HTML dapat dim engert i sebagai sebuah kum pulan perint ah- perint ah unt uk w eb brow ser t ent ang bagaim ana m enam pilkan isi ke user. I t u m erupakan st andar t erbuka yang t elah di updat e oleh W3C at au World Wide Web Consort ium.
Karena m erupakan sebuah st andar t erbuka, set iap orang m engaksesnya, berart i bahwa browsers dikem bangkan dengan st andar it u di pikiran. Lebih lanj ut berart i bahw a sem ua browsers m enget ahui apa yang dilakukan ket ika it u m em ecahkan HTML, m eskipun beberapa browsers yang lebih lam a m ungkin m em ilik i perm asalahan pada perenderan beberapa halam an yang dit ulis m enggunakan versi HTML yang lebih baru yang t elah diupdat e set elah pengem bangannya.
H TTP D e fin isi
HTTP singkat an dari “ HyperText Transfer Prot ocol“. Merupakan sebuah prot okol j aringan dengan fit ur- fit ur Web- specific yang berj alan pada bagian t erat as dari dua lapisan prot okol lain, TCP dan I P. TCP adalah sebuah prot okol yang bert anggung j awab m em ast ikan file t elah dikir im dari akhir net work t elah lengkap dikirm kan, berhasil pada t uj uannya. I P m erupakan sebuah prot okol yang m engarahkan (rout ing) file dar i sat u host ke host lain pada j alannya unt uk t uj uan. HTTP m engguanakan dua prot okol ini unt uk m em ast ikan bahwa perm int aan dan respon t elah lengkap dikir im kan diant ara m asing-m asing akhir koasing-m unikasi.
HTTP m enggunakan urut an Request / Response: Sebuah HTTP client m em buka koneksi dan m engirim sebuah pesan perm int aan pada HTTP server; server kem udian m engirim kan
Form at dari pesan perm int aan dan respon adalah sam a, dan berorient asikan bahasa inggris. Kedua j enis pesan m engandung :
• Sebuah garis inisial
• Nol at au lebih garis header
• Sebuah garis kosong( i.e sebuah CRLF oleh dirinya sendiri) , dan pesan body opt ional ( e.g. sebuah file, at au dat a query, at au keluaran query) .
H TTP Re que st s
Perm int aan- perm int aan dari client ke server berisikan inform asi t ent ang m acam - m acam dat a yang user inginkan. Salah sat u it em inform asi yang dienkapsulasi pada perm int aan HTTP adalah sebuah nam a m et hod. I ni m em berit ahu server m acam - m acam perm int aan yang dibuat , sebagaim ana sisa pesan dari client diform at . Ada dua prot okol yang m ungkin akan Anda gunakan : GET dan POST.
GET
GET adalah m et hod HTTP paling sederhana dan digunakan sebagian besar unt uk m em int a resource t ert ent u dari server, apakah berupa halam an web, file gam bar grafis, at au sebuah dokum en, dan lain- lain.
GET dapat j uga digunakan unt uk m engirim dat a di at as server, m eskipun dem ikian hal it u m em punyai bat asan- bat asan. Jum lah t ot al karakt er yang dapat dienkapsulasi ke dalam perm int aan GET adalah t erbat as, sehingga unt uk sit uasi dim ana banyak dat a perlu dikirim kan ke server, t idak sem ua pesan dapat disam paikan.
Bat asan lain m et hod perm int aan GET ket ika m engirim dat a adalah dat a yang Anda kirim m enggunakan m et hod ini dit am bahkan pada URL yang Anda kirim ke server. ( Unt uk sekarang, asum sikan URL sebagai alam at unik yang akan Anda kirim ke server sebagai penandaan lokasi yang Anda m int a) . Salah sat u perm asalahannya adalah URL dari beberapa perm int aan yang Anda inginkan dit am pilkan pada bar browser pada beberapa browser. Hal ini berart i, bahwa beberapa dat a sensit if sepert i passw ord at au inform asi kont ak (cont act inform at ion) dapat dit erlihat oleh siapapun.
Keunt ungan dari penggunaan GET dalam pengirim an dat a di at as server adalah perm int aan URL dari perm int aan GET dapat dibookm ark oleh brow ser. Hal ini berart i bahwa user dapat dengan m udah m em bookm ark perm int aannya dan m engakses set iap saat dari pada m elalui proses t iap wakt u. Hal ini j uga dapat m em bahayakan; j ika bookm ark secara fungsional bukan m erupakan sesuat u yang Anda inginkan pada user Anda, sebagai gant inya m enggunakan m et hod lain.
Di baw ah ini m erupakan URL yang dihasilkan oleh perm int aan GET :
http://jedi-master.dev.java.net/servlets/NewsItemView?newsItemID=2359&filter=true
Sem ua it em sebelum t anda t anya ( ?) m erupakan URL asli perm int aan ( dalam hal ini
http://jedi-master.dev.java.net/servlets/NewsItemView). Set elah it u, berikut nya adalah
Mari kit a lihat secara seksam a bagian t ersebut . Berikut ini param et er yang dit am bahkan pada perm int aan :
newsItemID=2359&filter=true
Pada perm int aan GET, param et ers disandikan sebagai nam a dan nilai. Anda t idak m engirim nilai dat a k e server t anpa m enget ahui secara spesifik unt uk apakah nilai t ersebut . Nam a dan nilai disandikan sebagai berikut :
name=value
Dan j uga, j ika t erdapat lebih dari sat u kum pulan param et er, akan dipisahkan m enggunakan t anda am persand ( &) . Sehingga , dalam hal ini, nam a- nam a param et er yang kit a spesifikkan ke server adalah newsI t em I D dan filt er, dengan nilai 2359 dan t rue, bert urut - t urut .
POST
Jenis lain dari m et hod perm int aan yang past i akan digunakan adalah perm int aan POST. Jenis perm int aan ini didesain sepert i browser dapat m em buat perm int aan kom pleks dari server. Mereka didesain sehingga user, m elalui browser, dapat m engirim banyak dat a ke server. Form kom pleks secara um um dicapai dengan m enggunakan perm int aan POST, sebagaim ana form sederhana yang m em elukan proses upload file ke server.
Sat u perbedaan yang nyat a ant ara m et hod GET dan POST t erlet ak pada cara m engirim kan dat a ke server. Sepert i yang dinyat akan sebelum nya, GET hanya m enam bahkan dat a ke URL yang akan m engirim . POST, di sisi lain, m engenkapsulasi at au m enyem bunyikan dat a di dalam body pesan ( m essage body) yang dikirim . Ket ika server m enerim a perm int aan dan m enent ukan bahwa it u m er upakan sebuah perm int aan POST, dapat dilihat dari body pesan dat a t ersebut .
H TTP Re spon se
HTTP m erespon dari server yang berisi headers dan body pesan, sepert i yang perm int aan HTTP lakukan. Mereka m enggunakan kum pulan header yang berbeda, m eskipun dem ikian disini k it a t idak perlu t erlalu dalam m em bahasnya secara det ail. Cukup dengan m engat akan bahwa headers berisi inform asi t ent ang prot okol HTTP yang digunakan pada server, sebagaim ana t ipe dari isi yang dienkapsulasi ke dalam body pesan. Nilai dari t ipe isi adalah MI ME- t ype. I ni akan m em berit ahu browser j ika pesan berisi HTML, gam bar, at au t ipe lainnya.
D yna m ic ove r St a t ic pa ge s
Macam - m acam cont ent / isi yang dapat dilayani oleh web server dapat berupa st at is at au
Cont oh dari cont ent st at is m eliput i kum pulan art ikel surat kabar, gam bar keluarga dari galer i fot o online, at au bahkan m ungkin salinan online dokum en ini!
Dinam ic cont ent , pada sisi lain, berubah m enurut input dari user. aplikasi apa pada server yang dapat m engakses pada t ipe cont ent ini yait u sem acam t em plat e yang m ereka dapat ket ahui yang m engacu pada bagaim ana dokum en dapat dikirim dan akan t erlihat secara um um , t em plat e ini kem udian m em buat perset uj uan pada param et er yang dikir im oleh user dan dikem balikan pada klien.
Hal it u dapat dikat akan sebagai berikut , halam an dinam is m em punyai lebih banyak flexibilit as dan kegunaan dari pada halam an st at is. Disini t erdapat beberapa pasangan skenario dim ana hanya cont ent dinam ik yang akan cocok:
• H a la m a n w e b ha n ya dida sa r k a n pa da da t a ya ng dibe r ik a n ole h u se r .
Sebagai cont oh, halam an dari hasil m esin pencari dihasilkan oleh cara ini, dan program yang m em proses pesanan unt uk lokasi e- com m erce m elakukannya dengan baik.
• D a t a se r ing be r uba h, sebuah laporan- cuaca at au halam an berit a ut am a akan
m em bangun halam an yang dinam ik, m ungkin m enam pilkan kem bali halam an yang dibangun sebelum nya j ika m asih t ergolong sebagai berit a t erbaru.
• Halam an w eb m enggunakan inform asi dari dat abase perusahaan at au sum ber yang lain.
Pent ing unt uk disadari, web server dengan sendirinya t idak m em punyai kem am puan unt uk m elayani cont ent dinam ic, web server m em but uhkan aplikasi yang dapat m ereka akses unt uk m em bangun cont ent yang dinam ic. Term asuk m em erlukan aplikasi t ersendiri unt uk m em buat cont ent dinam ic, web server selalu m em but uhkan aplikasi t ersendiri yang akan m enyim pan inform asi user yang bersangkut an ( sepert i m engum pulkan berdasarkan form at ) kedalam m edia penyim panan, Anda t idak dapat m engharapkan unt uk m em buat sebuah form , m em erint ahkan user unt uk m em asukkan dat a kedalam nya, m engirim nya ke server, dan server secara ot om at is m enget ahui apa yang akan dilakukan pada dat a t ersebut .
Kit a kini berada dalam bagian diskusi kit a dim ana kit a dapat dengan j elas m enunj uk bahwa pem buat an dari aplikasi web ini yang m erupakan pokok pem bahasan pada bab ini, j adi, bagaim ana cara yang kit a lakukan unt uk m em buat aplikasi ini?
Pada bab ini, kit a akan m em pelaj ari dasar pada t eknologi berbasis Java unt uk m em buat aplikasi w eb kit a. Lebih spesifik lagi, kit a akan m em buat penggunaan API s secara ext ensif yang disediakan pada web t ier dalam spesifikasi J2EE ( Java 2 Ent erprise Edit ion) .
1 .1 .3
Pe n ge n a la n J2 EE W e b Tie r
t ersebut . Suat u cont oh aplikasi m ult i- t ier adalah suat u aplikasi w eb : layer present asi ( client browser) , layer bussines logic ( program yang berada pada web server) , dan layer penyim panan ( dat abase yang akan m enangani dat a aplikasi t ersebut ) t erpisah dengan j elas, t et api secara keseluruhan bert uj uan unt uk m encipt akan sebuah aplikasi bagi user.
Salah sat u st rat a dalam plat form J2EE ket ika sebelum nya berupa web- t ier. St rat a ini di uraikan sebagai layer yang saling berhubungan dengan browser dalam rangka m encipt akan cont ent yang dinam is. Ada dua t eknologi pada layer ini : servlet dan JavaServerPage.
Ga m ba r 1 - 3 : W e b Tie r pa da pla t for m J2 EE ( Ga m ba r da r i J2 EE Tu t or ia l)
1 .1 .3 .1 Se r v le t s
Teknologi Servlet adalah j awaban ut am a yang t erdapat pada Java unt uk m enam bahkan fungsi ke server yang digunakan unt uk m erespon perm int aan dari m odel. Mereka m em punyai kem am puan unt uk m em baca kum pulan dat a yang dim int a oleh server dan m enghasilkan response yang dinam is yang berdasarkan pada dat a t ersebut , servlet t idak t erbat as pada kondisi HTTP; sepert i dinyat akan sebelum nya, m ereka dit erapkan unt uk scenario m anapun yang m enunt ut request dari obj ect m odel. Kondisi HTTP pada saat ini adalah yang digunakan pert am a kali, j adi Java m enyediakan versi spesifikasi HTTP yang m engim plem ent asi pada fit ur- fit ur spesifik HTTP.
1 .1 .3 .2 Ja va Se r ve r Pa ge s.
Salah sat u dari kelem ahan dalam penggunaan servlet yait u pada proses generat e sebuah respon dari klien yang berform at HTML akan dikirim kem bali. Sej ak servlet berupa class bahasa pem ogram an Java, m ereka m enghasilkan keluaran dengan cara lain pada pem ogram an Java sepert i : m encet ak karakt er St ring ket ika m engeluarkan out put , dalam hal ini HTTP- response, bagaim anapun, HTML sangat com plex dan sangat sulit unt uk m elakukan proses encode HTML m elalui penggunaan St ring lit eral. Juga,m elibat kan j asa suat u perancang gafis dan perancang halam an web unt uk m em bant u didalam bagian halam an st at is akan sulit at au m ungkin m ust ahil : kit a akan m engharapkan dia unt uk m em punyai sedikit penget ahuan t ent ang Java.
1 .1 .3 .3 Con t a ine r s
Pusat dari konsep aplikasi J2EE adalah cont ainer, sem ua kom ponen J2EE, m encakup kom ponen web ( servlet ,JSPs) bersandar pada keberadaan suat u Cont ainer; t anpa cont ainer yang sesuai, m ereka t idak akan dapat dij alankan.
Ga m ba r 1 - 4 : Con t a in e r s pa da pla t for m J2 EE ( Ga m ba r da r i J2 EE Tu t or ia l)
Barangkali cara unt uk m enj elaskan hal ini adalah unt uk berpikir t ent ang ragam pelaksanaan program Java secara norm al. Program Java, unt uk dij alankan, harus m em ilik i cara ut am a yang m enggam barkan ; m enandai st art ini pada pelaksanaan program dan m enj alankan m et hod ket ika program diexecut e dari com m and line.
Fit ur yang diberikan oleh Cont ainer
Pe n du k u ng Kom u n ik a si. Cont ainer m enangani sem ua kode yang pent ing dari
• er m enangani segalanya dalam kehidupan pada
• ng M u lt it hr e a din g. Cont ainer m engat ur t ugas dari urut an w akt u yang
• . Halam an JSP, dalam m em perkerj akan, harus m encom pile dalam
.1 .3 .4 St r u k t u r D a sa r D a r i Aplik a si W e b
er dapat m engenali aplikasi sebagai aplikasi web yang sah, harus dibent uk
am bar 1- 5 m enunj ukkan st rukt ur direkt ori yang diperlukan oleh cont ainer unt uk
ert am a, t op level Folder( salah sat u yang m engisi aplikasi Anda) t idak harus diberi nam a
edua, folder lain dapat dim uat pada st rukt ur direkt ori ini, sebagai cont oh, karena
•
servlet Anda unt uk berkom unikasi dengan web server. Tanpa cont ainer, developer m ungkin harus m enuliskan code yang akan m encipt akan suat u koneksi dari serv er ke servlet ( dan sebaliknya) dan m engat ur bagaim ana m ereka bert em u sat u sam a yang lain pada t iap sat uan w akt u.
M a na ge m e n t Life scycle . Cont ain
servlet Anda, m ulai loading class, inst at iat ion dan inisialisasi, dan m engoleksi sam pah.
Pe n du k u
baru set iap kali suat u servlet dibuat , NOTE : cont ainer t idak bert anggung j awab dari servlet m u.
Pe n du k u ng JSP
code Java, m engcom pilenya, dan m em anggil m et ode yang sesuai dalam code.
1
Supaya cont ain
st rukt ur direkt ori yang spesifik:
Ga m ba r 1 - 5 : St r u k t u r D ir e k t or i da la m Ja va W e b Applica t ion
G
m engenali aplikasi Anda, beberapa hal m engenai st rukt ur ini:
P
Dokum ent Root . Sesungguhnya pem berian nam a apapun t idak m em pengaruhi aplikasi, nam un disarankan unt uk m enam ainya sesuai dengan nam a aplikasi Anda. Penam aan sebagai Docum ent Root hanya m enggam barkan direkt ori ini bert indak sebagai root folder pada file at au dokum en pada aplikasi Anda.
K
konfigurasi. Selam a m engikut i alur st rukt ur yang dit ent ukan sepert i diat as, cont ainer m engij inan penam bahan direkt ori.
Ket iga: Kapit alisasi pada folder WEB- I NF adalah disengaj a, Lowercaps pada class dan Library adalah disengaj a j uga, t idak m engikut i at uran kapit alisasi m anapun pada folder ini akan m engakibat kan aplikasi Anda t idak dapat m elihat isi dari folder ini.
Keem pat : Sem ua cont ent at au isi dari folder WEB- I NF t idak dapat dilihat dari browser. Cont ainer secara ot om at is m engat ur berbagai hal, sepert i : pada t am pilan browser, folder t ersebut t idak ada at au t idak diket ahui. Mekanism e ini m elindungi sum berdaya vit al sepert i pada file class Java, konfigurasi aplikasi, dan lain sebagainya. Cont ent pada folder ini hanya dapat di akses oleh aplik asi Anda.