Anda di halaman 1dari 80

Pemrograman Jaringan Dengan Java

Edisi 1.0
Hilal H. Nuha MT.
Kata Pengantar
Alhamdulillahi robbil aalamiin. Segala Puji Bagi Allah SWT. Yang elah memberi!an !eni!maan beru"a
iman dan islam. Shala#a sera salam ea" erlim"ah !e"ada Nabi Muhammad SAW $ang melalui
"eranaraan beliau manusia !eluar dari %aman jahili$$ah.
Terima !asih sa$a u&a"!an !e"ada 'sri!u er&ina (idia 'l$ana H. $ang elah menemani dalam
"embuaan bu!u "erama ini. Ta! lu"a "ula rasa erima !asih ini sa$a sam"ai!an !e"ada re!an)re!an di
*a!ulas 'n+ormai!a 'T Tel!om, !elas -.'*)./, re!an)re!an di lab. 0oms$s.
1nu! sour&e &ode a!an sa$a share di blog "engajaran sa$a h"233!uliah)hhn.blogs"o.&om3 Tenun$a
masih ban$a! !e!urangan dalam bu!u "erama ini $ang ins$aAllah a!an sa$a "erbai!i "ada edisi
beri!un$a.
ii Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Daftar Isi
-a+ar 'si
Pemrograman 4aringan -engan 4a5a ............................................................................................................ i
6aa Penganar ............................................................................................................................................ ii
-a+ar 'si ...................................................................................................................................................... iii
Bab 1. 4-B0 .................................................................................................................................................. 1
1.1Persia"an -aabase M$S78 ................................................................................................................ 1
1./ Pengolahan daa dari -aabase ......................................................................................................... 9
Bab /. So&!e ............................................................................................................................................... :
/.1 1-P -aagram So&!e ........................................................................................................................ :
/./ T0P So&!e ......................................................................................................................................... ;
Bab .. Penggunaan 4a5a <M' ..................................................................................................................... 1/
Bab =. AP8'6AS' TE<-'ST<'B1S' -EN>AN 0?<BA -AN 4A(A ..................................................................... /0
Bab 9. Ser5le dengan 4/EE ........................................................................................................................ /@
9.1 Web Ser5er $ang Mendu!ung Ser5le .............................................................................................. /@
9./ Sru!ur Proje& Ser5le .................................................................................................................... /@
9.. Menangani HTTP ge<eAues ........................................................................................................... /:
9.= Menangani -aa "ada HTTP ge <eAues ........................................................................................ .1
9.9 Menangani -aa "ada HTTP "os <eAues ...................................................................................... .@
9.@ Mela!u!an <edire& !e Halaman 8ain .............................................................................................. =1
Bab @. 4a5aSer5er PagesB4SPC ..................................................................................................................... =:
@.1 S&ri"ing dengan 4SP dan 'm"li&i ?bje& ......................................................................................... =:
@./ Sandard A&ion "ada 4SP ................................................................................................................ 91
@./.1 A&ion in&lude ........................................................................................................................... 91
iii Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
@././ A&ion +or#ard .......................................................................................................................... 9@
@./.. A&ion useBean ......................................................................................................................... @0
@.. -ire&i5e "ada 4SP ............................................................................................................................ @9
@...1 -ire&i5e in&lude ....................................................................................................................... @9
Bab :. Web Ser5i&es .................................................................................................................................. @D
:.1 Membua Web Ser5i&es ................................................................................................................... @D
:.1.a Pembuaan 0onainer ............................................................................................................... @D
:.1.b Membua Web Ser5i&es dari 0lass 4a5a .................................................................................... @D
:.1.& Menambah!an ?"erasi "ada Web Ser5i&es .............................................................................. @;
:./ Menjalan!an dan Menguji Web Ser5i&es ......................................................................................... :1
:.. Membua 0lien 1nu! Web Ser5i&es .............................................................................................. :.
<e+erensi .................................................................................................................................................... :@
iv Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab 1. JDBC
1.1 Persiapan Database MySQL
-alam bagian ini !ia a!an erlebih dahulu membua daabase dan able. -iasumsi!an !ia elah meng)
insall EAMPP $ang di dalamn$a elah erda"a M$S78. Se&ara de+aul a"a bila ida! diubah ma!a
M$S78 mem"un$ai username roo dan "ass#ord !osong aau sring FG. 6ia bisa meliha !ondisi dalam
benu! halaman #eb dari daabase !ia dengan menga!i+!an EAMPP basi& sar "ada sar menu,
seelah iu memanggil dari bro#ser dengan 1<82 h"233lo&alhos3Ham""3indeH."h" !li! "h"M$Admin
"ada menu ools "ada sidebar. M$S78 sendiri mem"un$ai am"ilan beru"a &onsole.
1. Seelah iu "ada +ield &reae ne# daabase masu!!an nama daabase baru $aiu dbNePro aau
"ada &onsole !ia ulis Auer$2
CREATE DATABASE `dbNetPro` ;
/. 8alu !ia bua abel baru $aiu mahasis#a dengan memasu!!an nama daabase Fmahasis#aG
"ada eH+ield Name "ada &reae ne# able on daabase dbNePro dan "ada +ields !ia isi
dengan =.
1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
.. Seelah iu isi masing)masing baris dengan2
Baris 12 *ield 2 no'ndu!, T$"e2 T'NY'NT, EHra2 auoIin&remen, !li! "ada !olom "rimar$
Baris /2 *ield 2 nama, T$"e2 (A<0HA<, 8engh3(alues2 .0
Baris .2 *ield 2 nilai, T$"e2 T'NY'NT
Baris =2 *ield 2 alama, T$"e2 (A<0HA<, 8engh3(alues2 90
2 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Aau masu!!an "ada &onsole M$S782
CREATE TABLE `mahasisa` !
`no"nd#$` T"N%"NT N&T N'LL A'T&("NCRE)ENT *
`nama` +ARC,AR! -. / N&T N'LL *
`ni0ai` T"N%"NT N&T N'LL *
`a0amat` +ARC,AR! 1. / N&T N'LL *
PR")AR% 2E% ! `no"nd#$` /
/;
=. Seelah iu !li! inser "ada ab abel, isi baris dengan nama nilai dan alama sembarang, biar!an
no'ndu! !osong. Tabel ersebu bisa diisi berulang !ali. Misal !ia han$a mengisi 1 baris2
Nama2 jo!o, Nilai2 D0, dan Alama2 Suraba$a
Aau "ada &onsole masu!!an Auer$2
"NSERT "NT& `mahasisa` ! `no"nd#$` * `nama` * `ni0ai` * `a0amat` /
+AL'ES !
33* 3Jo$o3* 34.3* 3S#raba5a3
/;
-engan begiu !ia elah mengisi abel seban$a! 1 baris, isin$a bisa diliha dengan me)!li! ab bro#se2
- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Aau "ada &onsole ulis!an 2 SE8E0T J *<?M Kmahasis#aK
semua lang!ah di aas, selain "embuaan daabase bisa !ia la!u!an dengan mela!u!an Auer$ "ada
&onsole sebagai beri!u2
66 7h7)5Admin S8L D#m7
66 version 29:91670-
66 htt7;<<97h7m5admin9net
66
66 ,ost; 0o=a0host
66 >eneration Time; Nov 2?* 2.11 at 1.;24 A)
66 Server version; ?91911
66 P,P +ersion; 19.9?
66
66 Database; `dbnet7ro`
66
66 66666666666666666666666666666666666666666666666666666666
66
66 Tab0e str#=t#re @or tab0e `mahasisa`
66
CREATE TABLE `mahasisa` !
`no"nd#$` tin5int!?/ N&T N'LL a#to(in=rement*
`nama` var=har!-./ =o00ate 0atin1(genera0(=i N&T N'LL de@a#0t 33*
`ni0ai` tin5int!?/ N&T N'LL de@a#0t 3.3*
? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
`a0amat` var=har!1./ =o00ate 0atin1(genera0(=i N&T N'LL de@a#0t 33*
PR")AR% 2E% !`no"nd#$`/
/ EN>"NEA)5"SA) DEBA'LT C,ARSETA0atin1 C&LLATEA0atin1(genera0(=i
A'T&("NCRE)ENTA2 ;
66
66 D#m7ing data @or tab0e `mahasisa`
66
"NSERT "NT& `mahasisa` +AL'ES !1* 3Jo$o3* 4.* 3S#raba5a3/;
1.2 Pengolahan data dari Database
1nu! mela!u!an o"erasi dengan M$S78 dengan 4-B0 !ia buuh dri5er dari AP' M$S78 unu! ja5a,
dalam hal ini !ia a!an mengguna!an m$sAl)&onne&or)ja5a)9.1.@)bin.jar . beri!u adalah lang!ah)
lang!ah $ang di"erlu!an unu! "engolahan daa dengan 4-B02
1. lang!ah 1 bua dri5er dengan mengguna!an 0lass.+orNameBC aau membua insan&e -ri5er dan
menda+ar!ann$a !e -ri5erManager.regiser-ri5erBC.
/. Ambil &onne&ion dengan mengambil dari -ri5erManager.ge0onne&ionBC dengan "arameer
1<8 ,username, dan "ass#ord
.. Bua saemen dengan mengguna!an 0onne&ion.&reaeSaemenBCL
=. E!se!usi Auer$ dengan mengguna!an . mehod2
a. unu! mengambil daa dengan Auer$ sele& guna!an mehod Saemen.eHe&ue7uer$BC
b. mengu"dae3menambah daa dengan "ada abel u"dae3inser3delee guna!an mehod
Saemen.eHe&ue1"daeBC
&. mengubah "ro"eri abel ermasu! membua dan mengha"us abel bisa diguna!an
mehod Saemen.eHe&ueBC
im7ort =om9m5sC09Ddb=9Driver;
im7ort Dava9sC09Conne=tion;
im7ort Dava9sC09Driver)anager;
im7ort Dava9sC09Res#0tSet;
im7ort Dava9sC09S8LEE=e7tion;
im7ort Dava9sC09Statement;
7#b0i= =0ass JDBC.1 F
7#b0i= stati= @ina0 String DATABASE(NA)EAGdbNetProG;
7#b0i= stati= @ina0 String DATABASE('RLAGDdb=;m5sC0;<<0o=a0host;--.:<GHDATABASE(NA)E;
7#b0i= stati= @ina0 String DATABASE('SERNA)EAGrootG;
7#b0i= stati= @ina0 String DATABASE(PASSAGG;
7#b0i= stati= @ina0 String DR"+ER(PAC2A>EAG=om9m5sC09Ddb=9DriverG;
7#b0i= stati= @ina0 int DR"+ER(IA%A1;
7#b0i= stati= @ina0 String 8'ER%(SELECTAGse0e=t no"nd#$* ni0ai* nama @rom mahasisaG;
7#b0i= stati= @ina0 String 8'ER%("NSERTAG"NSERT "NT& `mahasisa` ! `nama`* `ni0ai`* `a0amat` / +AL'ES !3Andi3*3:.3* 3Ja$arta3/;G;
7#b0i= stati= @ina0 String 8'ER%('PDATEAG'PDATE `mahasisa` SET `ni0ai` A 31.3 I,ERE `nama` A3Andi3;G;
7#b0i= stati= @ina0 String 8'ER%(DELETEAGDELETE BR&) `mahasisa` I,ERE `nama` A3Andi3;G;
7#b0i= stati= @ina0 String 8'ER%(CREATEAGCREATE TABLE )5Prod#=tGH
G !7(id "NTE>ER*GHG7(name +ARC,AR!21/*GHGrate BL&AT*GHG#nit(msr C,AR!://G;
7#b0i= stati= @ina0 String 8'ER%(DR&PAGDR&P TABLE )5Prod#=tG;
7#b0i= stati= @ina0 String 8'ER%(ADDC&L')NAGALTER TABLE `mahasisa` ADD `hobi` +ARC,AR! 2. / N&T N'LL ABTER `a0amat` G;
1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
7#b0i= stati= @ina0 String 8'ER%(DELETEC&L')NAGALTER TABLE `mahasisa` DR&P `hobi`G;


7#b0i= stati= void main!StringJK args/ thros S8LEE=e7tion* C0assNotBo#ndEE=e7tion F

<<0ang$ah 1 b#at driver
i@ !DR"+ER(IA%AA1/F
<<=ara 1
C0ass9@orName!DR"+ER(PAC2A>E/;
L
e0se i@ !DR"+ER(IA%AA2/F
<<=ara 2
Driver driverAne =om9m5sC09Ddb=9Driver!/;
Driver)anager9registerDriver!driver/;
L

<<0ang$ah 2 ambi0 =onne=tion
Conne=tion =onne=tionADriver)anager9getConne=tion!DATABASE('RL* DATABASE('SERNA)E* DATABASE(PASS/;

<<0ang$ah - b#at statement
Statement statementA=onne=tion9=reateStatement!/;

<<0ang$ah ? e$se$#si C#er5
<<a9 #nt#$ mengambi0 data dengan C#er5 se0e=t g#na$an method Statement9eEe=#te8#er5!/
Res#0tSet res#0tSetAstatement9eEe=#te8#er5!8'ER%(SELECT/;
hi0e !res#0tSet9neEt!//F
S5stem9o#t97rint0n!G terda7at nama GHres#0tSet9getString!GnamaG//;
L

<<b9 #nt#$ meng#7date<menambah data dengan 7ada tabe0 #7date<insert<de0ete g#na$an method Statement9eEe=#te'7date!/
int roAddedAstatement9eEe=#te'7date!8'ER%("NSERT/;
S5stem9o#t97rint0n!roAddedHG baris te0ah ditambahG/;
<<#nt#$ meng#bah
int roChangedAstatement9eEe=#te'7date!8'ER%('PDATE/;
S5stem9o#t97rint0n!roChangedHG baris te0ah ber#bahG/;
<<#nt#$ mengha7#s
int roDe0etedAstatement9eEe=#te'7date!8'ER%(DELETE/;
S5stem9o#t97rint0n!roDe0etedHG baris te0ah diha7#sG/;

<<=9 #nt#$ meng#bah 7ro7erti tabe0 termas#$ memb#at dan mengha7#s tabe0 bisa dig#na$an method Statement9eEe=#te!/
boo0ean gaga0Tambah2o0omAstatement9eEe=#te!8'ER%(ADDC&L')N/;
i@ !Mgaga0Tambah2o0om/F
S5stem9o#t97rint0n!G 2o0om te0ah ditambahG/;
L e0se F
S5stem9o#t97rint0n!G 2o0om gaga0 ditambahG/;
L


boo0ean gaga0,a7#s2o0omAstatement9eEe=#te!8'ER%(DELETEC&L')N/;
i@ !Mgaga0,a7#s2o0om/F
S5stem9o#t97rint0n!G 2o0om te0ah diha7#sG/;
L e0se F
S5stem9o#t97rint0n!G 2o0om gaga0 diha7#sG/;
L

boo0ean gaga0TambahTabe0Astatement9eEe=#te!8'ER%(CREATE/;
i@ !Mgaga0TambahTabe0/F
S5stem9o#t97rint0n!G tabe0 te0ah ditambahG/;
L e0se F
S5stem9o#t97rint0n!G tabe0 gaga0 ditambahG/;
L

boo0ean gaga0,a7#sTabe0Astatement9eEe=#te!8'ER%(DR&P/;
i@ !Mgaga0TambahTabe0/F
S5stem9o#t97rint0n!G tabe0 te0ah diha7#sG/;
L e0se F
S5stem9o#t97rint0n!G tabe0 gaga0 diha7#sG/;
L
L


L
: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab 2. Socket
-alam jaringan ada / jenis "roo&ol rans"or $ang biasa di"a!ai $aiu 1-P dan T0P. 1-P bersi+a
&onne&ionless !arena ida! dibua !one!si anara sumber !e ujuan namun daa $ang di!irim dibua
menjadi sebuah daagram $ang berisi alama ujuan sehingga "roses "engiriman diserah!an "ada
daagram.
Sebali!n$a "ada T0P !ia membua so&!e aau sambungan erlebih dahulu dari sumber !e ujuan
sehingga daa di!irim melalui so&!e erlebih dahulu. 6arena iulah, T0P bersi+a &onne&ion oriened.
2.1 UDP Datagram Socket
8ang!ah "erama dalam "embuaan 1-P -aagram So&!e adalah membua &lien
UDPEchoClientTimeOut.java sebagai sumber daa.
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9"nterr#7ted"&EE=e7tion;
im7ort Dava9net9DatagramPa=$et;
im7ort Dava9net9DatagramSo=$et;
im7ort Dava9net9"netAddress;
im7ort Dava9net9So=$etEE=e7tion;
im7ort Dava9net9'n$non,ostEE=e7tion;
7#b0i= =0ass 'DPE=hoC0ientTime&#t F
7rivate stati= @ina0 int T")E&'T A -...;
7rivate stati= @ina0 int )ANTR"ES A 1;
7#b0i= stati= void main!String argsJK/ thros 'n$non,ostEE=e7tion*
So=$etEE=e7tion* "&EE=e7tion F
i@ !args90ength O 2 PP args90ength Q -/ F
thro ne "00ega0Arg#mentEE=e7tion!G7arameter OserverQ OordQ
JO7ortQKG/;
L
"netAddress serverAddress A "netAddress9getB5Name!argsJ.K/;
b5teJK b5teToSend A argsJ1K9getB5tes!/;
int servPort A !args90ength AA -/ R "nteger97arse"nt!argsJ2K/ ; S;
DatagramSo=$et so=$et A ne DatagramSo=$et!/;
so=$et9setSoTimeo#t!T")E&'T/;
DatagramPa=$et sendPa=$et A ne DatagramPa=$et!b5teToSend*
b5teToSend90ength* serverAddress* servPort/;
DatagramPa=$et re=vPa=$et A ne DatagramPa=$et!ne
b5teJb5teToSend90engthK* b5teToSend90ength/;
int tries A .;
boo0ean re=eivedRes7onse A @a0se;
do F
S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
so=$et9send!sendPa=$et/;
tr5 F
so=$et9re=eive!re=vPa=$et/;
i@ !Mre=vPa=$et9getAddress!/9eC#a0s!serverAddress// F
thro ne "&EE=e7tion!Gre=eived @rom #n$non so#r=eG/;
L
re=eivedRes7onse A tr#e;
L =at=h !"nterr#7ted"&EE=e7tion e/ F
tries HA 1;
S5stem9o#t97rint0n!G#nre=eived* G H !)ANTR"ES 6 tries/ H G
more triesG/;
L
L hi0e !!Mre=eivedRes7onse/ TT !tries O )ANTR"ES//;
i@ !re=eivedRes7onse/ F
S5stem9o#t97rint0n!GRe=eived; G H ne String!re=vPa=$et9getData!///;
L e0se F
S5stem9o#t97rint0n!GNo res7onse 66 giving #7G/;
L
so=$et9=0ose!/;
L
L
Pada "rogram di aas !ia membua erlebih dahulu -aagramPa&!e $ang !ia beri isi daa, alama
ujuan , dan "or. Seelah iu !ia membua -aagramSo&!e $ang ber+ungsi sebagai lubang !eluar !e
jaringan, nanin$a jaringanlah $ang a!an merue!an "a!e ersebu !e ujuan dan mengguna!an mehod
-aagramSo&!e.sendBC unu! mengirim !e jaringan. -an seelah iu membua -aagramSo&!e.re&ei5eBC
!ia bisa memba&a dari jaringan.
Seelah iu !ia membua ser5er UDPEchoServer.java &lass2
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9net9DatagramPa=$et;
im7ort Dava9net9DatagramSo=$et;
im7ort Dava9net9So=$etEE=e7tion;
7#b0i= =0ass 'DPE=hoServer F
7rivate stati= @ina0 int EC,&)ANA211;
7#b0i= stati= void main!String argsJK/ thros So=$etEE=e7tion*
"&EE=e7tionF
int servPortAS;
DatagramSo=$et so=$etAne DatagramSo=$et!servPort/;
DatagramPa=$et 7a=$etAne DatagramPa=$et!ne b5teJEC,&)ANK*
EC,&)AN/;
hi0e !tr#e/F
so=$et9re=eive!7a=$et/;
S5stem9o#t97rint0n!Ghand0ing 7a=$et @rom
GH7a=$et9getAddress!/9get,ostAddress!/HG @rom 7ort
GH7a=$et9getPort!//;
4 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
so=$et9send!7a=$et/;
7a=$et9setLength!EC,&)AN/;
L
L
L
Ser5er diaas han$a me)re"l$ !e &lien, sehingga ser5er a!an erus menerus memeri!sa so&!e a"a!ah
ada -aagramPa&!e $ang masu! dengan -aagramSo&!e.re&ei5eBC. Sebelum mengirim !e ser5er
melalui &lien !ia harus erlebih dahulu memanggil ser5er.
Misal!an dengan "erinah 2 ja5a 1-PE&hoSer5er
0onsole2
Seelah iu !ia bisa mengirim !e ser5er dari &lien dengan memanggil dari &ommand "rom" $ang
berbeda2 ja5a 1-PE&ho0lienTime?u lo&alhos Fhalo halo bandungG
0onsole &lien2
0onsole ser5er2
2.2 TCP Socket
Berbeda dengan dengan 1-P, T0P mem"un$ai dua &lass "ening, $aiu So&!e dan juga Ser5erSo&!e.
So&!e diguna!an unu! membua jalur dari &lien !e ser5er !arena iu T0P bersi+a 0onne&ion
?riened, dari obje& ini !ia a!an mengambil ?u"uSream dan 'n"uSream $ang diguna!an unu!
mela!u!an "engiriman daa dan "enerimaan daa. Sedang!an Ser5erSo&!e ber+ungsi unu! memeri!sa
a"a!ah ada So&!e baru dari &lien $ang ersambung aau ida! dengan mengguna!an a&&e"BC. -ari
So&!e baru ersebu !ia bisa "erla!u!an sebagai mana "ada &lien.
Beri!u a!an !ia bua sebuah !elas ser5er TCPEchoServer.java 2
U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9"n7#tStream;
im7ort Dava9io9&#t7#tStream;
im7ort Dava9net9ServerSo=$et;
im7ort Dava9net9So=$et;
im7ort Dava9net9So=$etAddress;
<VV
V
V Wa#thor 'SER
V<
7#b0i= =0ass TCPE=hoServer F
7rivate stati= @ina0 int B'BS"XEA-2;
7#b0i= stati= void main!String argsJK/ thros "&EE=e7tionF
int 7ortServAS;
i@ !args90engthQ1/ F
7ortServA"nteger97arse"nt!argsJ.K/;
L
<<e0se F
<<thro ne "00ega0Arg#mentEE=e7tion!G7arameter O7ortQG/;
<<L
ServerSo=$et servSo=$Ane ServerSo=$et!7ortServ/;
int re=v)sgSiYe;
b5teJK re=vB#@Ane b5teJB'BS"XEK;
hi0e !tr#e/F
So=$et =0ntSo=$AservSo=$9a==e7t!/;
So=$etAddress
=0ientAddressA=0ntSo=$9getRemoteSo=$etAddress!/;
S5stem9o#t97rint0n!G,and0ing C0ient at;GH=0ientAddress/;
"n7#tStream inA=0ntSo=$9get"n7#tStream!/;
&#t7#tStream o#tA=0ntSo=$9get&#t7#tStream!/;
hi0e !!re=v)sgSiYeAin9read!re=vB#@//MA61/F
o#t9rite!re=vB#@*.*re=v)sgSiYe/;
L
=0ntSo=$9=0ose!/;
L
L
L
Selain iu !ia langsung membua &lien TCPEchoClient.java 2
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9"n7#tStream;
im7ort Dava9io9&#t7#tStream;
im7ort Dava9net9So=$et;
im7ort Dava9net9So=$etEE=e7tion;
1. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
im7ort Dava9net9'n$non,ostEE=e7tion;
<VV
V
V Wa#thor 'SER
V<
7#b0i= =0ass TCPE=hoC0ient F
7#b0i= stati= void main!String argsJK/ thros 'n$non,ostEE=e7tion* "&EE=e7tionF
i@ !args90engthO2PPargs90engthQ-/F
thro ne "00ega0Arg#mentEE=e7tion!GParameters; OserverQ OordQ JO7ortQKG/;
L
String serverAargsJ.K;
b5teJK dataAargsJ1K9getB5tes!/;
int servPortA!args90engthAA-/R"nteger97arse"nt!argsJ2K/;S;
So=$et so=$etAne So=$et!server* servPort/;
S5stem9o#t97rint0n!GConne=ted to server 999 sending e=ho stringG/;
"n7#tStream inAso=$et9get"n7#tStream!/;
&#t7#tStream o#tAso=$et9get&#t7#tStream!/;
o#t9rite!data/;
int tota0B5tesR=vdA.;
int b5tesR=vd;
hi0e !tota0B5tesR=vdOdata90ength/F
i@!!b5tesR=vdAin9read!data*tota0B5tesR=vd*data90ength6tota0B5tesR=vd//AA61/F
thro ne So=$etEE=e7tion!G=one=tion =0osed 7remat#re05G/;
L
tota0B5tesR=vdHAb5tesR=vd;
L
S5stem9o#t97rint0n!Gre=eived ;GHne String!data//;
so=$et9=0ose!/;
L
L
Seelah di&om"ile, !ia bisa menjalan!an ser5er dengan "erinah2
ja5a T0PE&hoSer5er
"ada &onsole ser5er2
Seelah iu menjalan!an &lien2
ja5a T0PE&ho0lien lo&alhos Fhalo halo bandungG
"ada &onsole &lien2
dan "ada &onsole ser5er2
11 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab 3. Penggunaan Java RMI
BMengendali!an ?bje& dengan 4a5a <M'C
4a5a <M'B<emoe Mehod 'n5o&aionC meru"a!an +iur dari 4/SE $ang memung!in!an !ia unu!
menga!ses dan mengendali!an obje& $ang berada "ada hos $ang berbeda aau dengan !aa lain, !ia
menga!ses obje& $ang berada "ada 4a5a (irual Ma&hineB4(MC $ang berbeda. Hal ini berari !ia bisa
memanggil mehod $ang erda"a "ada obje& ersebu.
Bagian ini a!an membahas mengenai &onoh sederhana 4a5a <M' sehingga memudah!an "emba&a
dalam memahami !onse" <M'.
Sebagai benu! "emrograman ersebar, seida!n$a ada bebera"a bagian dari <M' $ang harus ada2
1. 'ner+a&e $ang berisi mehod $ang bisa di"anggil.
/. ?bje& $ang a!an di)share, $ang mengim"lemenasi!an 'ner+a&e di aas.
.. A"li!asi ser5er $ang a!an meng)share dan memberi namaM obje& ersebu !e regisr$.
=. *ile sub $ang a!an degenerae dari obje& $ang di)share ersebu.
9. 0lien $ang a!an mengambil obje& $ang di)share di regisr$ dengan berdasar!an namaM $ang
dimili!i obje& ersebu dan memanggil mehod $ang dimili!i oleh obje& ersebu.
Sesuai dengan bebera"a +ile di aas, ma!a !ia harus membua +ile ersebu sau "ersau.
1. 'ner+a&e $ang berisi mehod $ang bisa di"anggil.
Perama, !ia harus membua iner+a&e $ang berisi mehod $ang nanin$a a!an di"anggil.
// OperasiNilai.java
import java.rmi.Remote;
import java.rmi.RemoteException;
pulic inter!ace OperasiNilai exten"s Remote#
pulic int amilNilai$% thro&s RemoteException;
pulic int tamahNilai$int nilaiTamah% thro&s RemoteException;
pulic Strin' amilNama$% thro&s RemoteException;
(
12 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
'ner+a&e $ang a!an dibua, harus meng)indu! "ada iner+a&e <emoe. Selain iu seia" mehod $ang
dibua, harus melem"arBhro#sC eH&e"ion beru"a <emoeEH&e"ion.
8angsung &om"ile 'ner+a&e ini dengan "erinah "ada &ommand "rom"3shell2
ja5a& ?"erasiNilai.ja5a
/. Membua ?bje& $ang a!an di)share, $ang mengim"lemenasi!an 'ner+a&e di aas.
Beri!un$a adalah mengim"lemenasi!an 'ner+a&e di aas "ada obje& $ang a!an di)share.
// Nilai)mpl.java
import java.rmi.*;
import java.rmi.server.UnicastRemoteOject;
pulic class Nilai)mpl exten"s UnicastRemoteOject implements OperasiNilai
#
pulic Nilai)mpl$% thro&s RemoteException#
super$%;
(
pulic int amilNilai$% thro&s RemoteException #
return +,;
(
pulic int tamahNilai$int nilaiTamah% thro&s RemoteException #
return nilaiTamah-.,;
(
pulic Strin' amilNama$% thro&s RemoteException #
return /nama mahasis&a/;
1- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
(
(
?bje& ersebu harus mengindu! "ada UnicastRemoteOject dan mengim"lemenasi!an 'ner+a&e
sebelumn$a BOperasiNilaiC . seia" mehod dalam iner+a&e bisa dide!larasi!an sesuai !e"erluan.
Selain iu, &lass ersebu harus mem"un$ai 0onsru&or $ang melem"arBhro#sC <emoeEH&e"ion
dan memanggil &onsru&or indu!.
8angsung &om"ile 0lass ini dengan "erinah "ada &ommand "rom"3shell2
ja5a& Nilai'm"l.ja5a
.. Membua A"li!asi ser5er $ang a!an meng)share dan memberi namaM obje& ersebu !e
regisr$.
Selanjun$a adalah membua ser5er $ang menginisiasi obje& $ang a!an di)share dan
menda+ar!an obje& ersebu !e regisr$.
//NilaiServer.java
import java.net.0al!orme"UR1Exception;
import java.rmi.Namin';
import java.rmi.RemoteException;
import java.util.lo''in'.1evel;
import java.util.lo''in'.1o''er;
pulic class NilaiServer #
pulic static voi" main$Strin'23 ar's%#
tr4 #
Nilai)mpl ojectNilai5ne& Nilai)mpl$%;
Namin'.rein"$/oject6/7 ojectNilai%;
1? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
( catch $RemoteException ex% #
1o''er.'et1o''er$NilaiServer.class.'etName$%%.lo'$1evel.SE8ERE7 null7 ex%;
( catch $0al!orme"UR1Exception ex% #
1o''er.'et1o''er$NilaiServer.class.'etName$%%.lo'$1evel.SE8ERE7 null7 ex%;
(
(
(
Pada &onoh di aas, obje& Nilai'm"l diinisialisasi dan diberi nama obje&Nilai. obje&Nilai ersebu
dida+ar!an "ada rmiregisr$ dengan nama Fobje&1G dengan mengguna!an Naming.rebindBC. Selain iu
!edua hal di aas harus di)&a&h eH&e"ionn$a.
Nilai)mpl ojectNilai5ne& Nilai)mpl$%; //inisialisasi oject
Namin'.rein"$/oject6/7 ojectNilai%; //penamaan oject "en'an nama 9oject6:
-engan ini, !ebuuhan unu! ser5er sudah ham"ir er"enuhi. Selanjun$a !ia harus
meng&om"ile +ile)+ile di aas. Misal!an +ile di aas erlea! "ada +older Fser5erG di dire!ori &om"uer
anda ma!a guna!an "erinah "ada &ommand "rom" aau "ada shell2
8angsung &om"ile 'ner+a&e ini dengan "erinah "ada &ommand "rom"3shell2
ja5a& NilaiSer5er.ja5a
sehingga "ada +older ersebu erda"a @ buah +ile, $aiu . +ile ja5a di aas dan . +ile &lass hasil &om"ile.
?"erasiNilai.ja5a ?"erasiNilai.&lass
Nilai'm"l.ja5a Nilai'm"l.&lass
NilaiSer5er.ja5a NilaiSer5er.&lass
=. Membua *ile sub $ang a!an degenerae dari obje& $ang di)share ersebu.
11 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
1nu! membua +ile sub, &u!u" !ia menggenerae sub dari &lass Nilai'm"l.&lass aau &lass dari
obje& $ang a!an dishare.
rmi& Nilai'm"l
sehingga !ia a!an menda"a!an sau +ile ambahan $aiu Nilai'm"lIsub.&lass . +ile ini a!an !ia
ambil dan dilea!!an di &lien.
9. 0lien $ang a!an mengambil obje& $ang di)share di regisr$ dengan berdasar!an namaM $ang
dimili!i obje& ersebu dan memanggil mehod $ang dimili!i oleh obje& ersebu.
import java.net.0al!orme"UR1Exception;
import java.rmi.Namin';
import java.rmi.Not;oun"Exception;
import java.rmi.RemoteException;
import java.util.lo''in'.1evel;
import java.util.lo''in'.1o''er;
pulic class NilaiClient #
pulic static voi" main$Strin' ar's23%#
tr4 #
Strin' url5 /rmi<//localhost/oject6/;
Oject o65Namin'.loo=up$url%;
OperasiNilai ojNilai5$OperasiNilai% o6;
S4stem.out.println$/amil Nama< /-ojNilai.amilNama$%%;
S4stem.out.println$/amil Nilai< /-ojNilai.amilNilai$%%;
S4stem.out.println$/tamah Nilai< /-ojNilai.tamahNilai$>,%%;
( catch $Not;oun"Exception ex% #
1o''er.'et1o''er$NilaiClient.class.'etName$%%.lo'$1evel.SE8ERE7 null7 ex%;
( catch $0al!orme"UR1Exception ex% #
1: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
1o''er.'et1o''er$NilaiClient.class.'etName$%%.lo'$1evel.SE8ERE7 null7 ex%;
( catch $RemoteException ex% #
1o''er.'et1o''er$NilaiClient.class.'etName$%%.lo'$1evel.SE8ERE7 null7 ex%;
(
(
Pada bagian &lien ini !ia membuuh!an +ile iner+a&e ?"erasiNilai.&lass hasil &om"ile "ada
bagian sebelumn$a. 0lass ersebu lea!!an "ada +older &lien bersama dengan +ile
Nilai0lien.ja5a sebelum di&om"ile.
"ada bagian &lien ini juga, obje& di ambil dari regisr$ melalui nama $ang diberi!an dan
memanggil mehod $ang ada "ada obje& ersebu.
Strin' url5 /rmi<//6?@.,.,.6/oject6/;
// "ari url erupa ip a""ress atau nama host "ari oject7 "ilanjut=an "en'an nama oject.
Oject o65Namin'.loo=up$url%;
//amil oject "ari re'istr4 "en'an men''una=an Namin'.loo=up
OperasiNilai ojNilai5$OperasiNilai% o6;
//overcast oject "en'an )nter!ace 4an' "i"esain "i a&al
S4stem.out.println$/amil Nama< /-ojNilai.amilNama$%%;
//pan''il metho" 4an' ter"apat pa"a oject terseut.
S4stem.out.println$/amil Nilai< /-ojNilai.amilNilai$%%;
S4stem.out.println$/tamah Nilai< /-ojNilai.tamahNilai$>,%%;
Seelah iu &om"ile +ile ersebu2
ja5a& Nilai0lien.ja5a
diambah dengan sub "ada lang!ah =, ma!a "ada +older &lien erda"a +ile)+ile beri!u2
Nilai0lien.ja5a Nilai0lien.&lass
1S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Nilai'm"lIsub.&lass ?"erasiNilai.&lass
-engan begiu !ia bisa menjalan!an bai! ser5er mau"un &lien.
Perama, !ia jalan!an erlebih dahulu rmiregisr$ dengan "erinah beri!u.
sar rmiregisr$
Sehingga mun&ul jendela baruN
4alan!an ser5erN dengan "erinah beri!u2
ja5a NilaiSer5er
14 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3

8ang!ah era!hir, !ia "anggil mehod dari &lienN
ja5a Nilai0lien
-engan begiu !ia elah memanggil obje& dari ser5er, dan mengguna!an bebera"a mehod $ang
dimili!i obje& ersebu.
1U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab . !P"IK!SI #$RDIS#RIB%SI D$&'!& C(RB! D!& J!)!
CORBA sebagai middleware bersifat platform independent. Untuk menjaga agar CORBA bebas
vendor dan bebas penggunaan bahasa, harus ada perantara antara server CORBA sebagai contoh
dengan C dengan sebagai contoh client CORBA dengan !ava. "erantara tersebut adalah #$%.
&etode'metode (ang berhubungan dan propert( didukung oleh ob(ek dikumpulkan bersama
dalam sebuah #$%. #$% (ang telah didefinisikan di kompile menjadi bahasa pemrograman (ang
diinginkan dengan kompiler (ang tersedia. &isal, !ava)#$% kompiler terdapat pada *isigenic
*isibroker untuk ORB !ava atau !ava + ORB (ang terdapat dalam ,un-s !$. + ,$., C)#$%
kompiler terdapat dalam *isigenic *isibroker untuk ORB C.
Untuk pembuatan aplikasi terdistribusi diperlukan setidakn(a /
' "endefinisian Antarmuka 0Interface1
' &engkompile Antarmuka
' "enerapan Antarmuka untuk Aplikasi ,erver
' "enerapan Antarmuka untuk Aplikasi Client
Berikut adalah contoh dari distributed applikasi sederhana/
2. "ertama kita buat dahulu interface/
3allo.idl
module HalloApp {
interface Hallo {
string ucapkanHallo();
oneway void shutdown();
};
};
,etelah itu kita compile dengan compiler (ang sudah terdapat pada !$. kita, pada command
prompt ketik/
idlj fall Hallo!idl
setelah itu akan menghasilkan folder 3alloApp (ang berisi librar( (ang berisi /
' Hallo"#A!java
&erupakan class abstract (ang men(ediakan dasar fungsionalitas server CORBA.
' $Hallo%tu&!java
Meru"a!an &lass $ang men$edia!an +ungsionalias unu! &lien 0?<BA
' Hallo!java
&erupakan antarmuka 0interface1 versi java dari antarmuka (ang dibuat dalam file 3allo.idl.
&en(ediakan fungsionalitas dasar ob(ek CORBA.
' HalloHelper!java
&erupakan class (ang men(ediakan fungsionalitas pendukung. Class ini bertanggung jawab
untuk membaca dan menulis tipe data ke streams CORBA.
' HalloHolder!java
2. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Class 3older memberikan delegasi kepada metode dari class 3elper untuk melaksanakan tugas
membaca dan menulis.
' Hallo#perations!java
&erupakan antarmuka (ang mengandung metode ucapkan3alo01 dan shutdown. .ompiler #$%
ke java meletakkan semua operasi (ang didefinisikan dalam antarmuka #$% pada file ini.
+. .embali ke folder awal, kita buat server n(a 3allo,erver.java dengan code berikut/
import HalloApp!';
import org!omg!(os)aming!';
import org!omg!(os)aming!)aming(onte*t"ackage!';
import org!omg!(#+,A!';
import org!omg!"orta&le%erver!';
import org!omg!"orta&le%erver!"#A;
import java!util!"roperties;
class HalloImpl e*tends Hallo"#A {
private #+, or&;
pu&lic void set#+,(#+, or&$val) {
or& - or&$val;
}
.. implementasi metode ucapkanHallo()
pu&lic %tring ucapkanHallo() {
return /0nHallo ,andung 110n/;
}
.. implementasi metode shutdown()
pu&lic void shutdown() {
or&!shutdown(false);
}
}
pu&lic class Hallo%erver {
pu&lic static void main(%tring args23) {
try{
.. mem&uat dan menginisialisasi #+,
#+, or& - #+,!init(args4 null);
.. referensi ke rootpoa 5 mengaktifkan "#A6anager
"#A rootpoa - "#AHelper!narrow(or&!resolve$initial$references(/+oot"#A/));
rootpoa!the$"#A6anager()!activate();
.. &uat servant dan register7kan ke #+,
HalloImpl HalloImpl - new HalloImpl();
HalloImpl!set#+,(or&);
.. dapatkan referensi o&yek dari servant
org!omg!(#+,A!#&ject ref -
rootpoa!servant$to$reference(HalloImpl);
Hallo href - HalloHelper!narrow(ref);
.. dapatkan root naming conte*t
org!omg!(#+,A!#&ject o&j+ef -
or&!resolve$initial$references(/)ame%ervice/);
21 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
)aming(onte*t8*t nc+ef -
)aming(onte*t8*tHelper!narrow(o&j+ef);
%tring name - /Hallo/;
)ame(omponent path23 - nc+ef!to$name( name );
nc+ef!re&ind(path4 href);
%ystem!out!println(/Hallo%erver aktif dan menunggu permintaan !!!/);
.. tunggu permintaan dari client
or&!run();
}
catch (8*ception e) {
%ystem!err!println(/8++#+9 / : e);
e!print%tack;race(%ystem!out);
}
%ystem!out!println(/Hallo%erver dimatikan !!!/);
}
}
%angsung di compile dengan command prompt/
javac 3allo,erver.java 3alloApp)4.java
5. Berikutn(a kita buat 3alloClient.java/
import HalloApp!';
import org!omg!(os)aming!';
import org!omg!(os)aming!)aming(onte*t"ackage!';
import org!omg!(#+,A!';
pu&lic class Hallo(lient
{
static Hallo HalloImpl;
pu&lic static void main(%tring args23)
{
try{
.. mem&uat dan menginisalisasi #+,
#+, or& - #+,!init(args4 null);
.. am&il root naming conte*t
org!omg!(#+,A!#&ject o&j+ef -
or&!resolve$initial$references(/)ame%ervice/);
)aming(onte*t8*t nc+ef -
)aming(onte*t8*tHelper!narrow(o&j+ef);
%tring name - /Hallo/;
HalloImpl - HalloHelper!narrow(nc+ef!resolve$str(name));
%ystem!out!println(/penanganan o&yek server 9 / :
HalloImpl);
%ystem!out!println(HalloImpl!ucapkanHallo());
HalloImpl!shutdown();
} catch (8*ception e) {
%ystem!out!println(/8++#+ 9 / : e) ;
22 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
e!print%tack;race(%ystem!out);
}
}
}
Client langsung di compile pada command prompt/
javac 3alloClient.java
6. ,emua struktur sudah terbentuk sekarang kita panggil program/
a9 jalankan orbd
start or&d 7#+,Initial"ort <=>= 7#+,InitialHost localhost
command prompt akan memanggil window baru (ang merupakan server dari orbd
pada java
b9 jalankan server pada command prompt
start java Hallo%erver 7#+,Initial"ort <=>= 7#+,InitialHost localhost
akan keluar aplikasi java pada server Hallo%erver (ang sedang menunggu perintah
dari client.
2- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
=9 terakhir jalankan client pada command prompt
java Hallo(lient 7#+,Initial"ort <=>= 7#+,InitialHost localhost
2? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Akan memanggil perintah ucapkanHallo() pada server (ang akan mengeluarkan perintah (ang
akan menuliskan 7Hallo ,andung 118 pada la(ar. $an menutup window 3allo,erver dengan
perintah shutdown() karena permintaan sudah terpenuhi.
Hilal H. Nuha
21 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab *. Serv+et ,engan J2$$
.1 !eb Ser"er yang Mend#k#ng Ser"let
Web ser5er $ang mendu!ung ser5le anara lain 2
) 4a!ara Tom&a 9.H,@.H,:.H
) >lass*ish ..H
1nu! 4a!ara om&a erlebih dahulu seing ser5er2
1. 6li! !anan i&on My Computer dan "ilih properties
2. Pilih ab advanced !li! environment Variables
3. 6li! new "ada user variables
4. Masu!!an 4A(AIH?ME isi dengan +older jd! berada
5. Masu!!an lagi 5ariable baru
6. Masu!!an 0ATA8'NAIH?ME isi dengan +older dimana 4a!ara om&a ser5er berada
.2 Str#kt#r Pro$ect Ser"let
Proje& ser5le erdiri aas2
2: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Ser5leProje&
#el&ome.hm
WEB)'N*
#eb.Hml
&lasses
Ser5le0lass.&lass
.% Menangani &TTP get'e(#est
Membua !elas #el&ome "age $ang meru"a!an halaman $ang "erama !ali di"anggil. misal "ada "roje&
ser5le1 dibua sebuah indeH.js" $ang meru"a!an halaman a#al.
Ohtm0Q
OheadQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0; =harsetA'TB64GQ
Otit0eQ)enangani ,TTP getReC#estO<tit0eQ
O<headQ
Obod5Q
O@orm a=tion A GServ0etDire=tor5G method A GgetG Q
O7QO0abe0Q$0i$ tombo0 #nt#$ memanggi0 serv0et
Oin7#t t57e A Gs#bmitG va0#e A G,TTP getReC#estMG <Q
O<0abe0QO<7Q
O<@ormQ
O<bod5Q
O<htm0Q
Seelah iu membua !elas ser5le $ang a!an menangani reAues dari indeH.js" $aiu !elas
Wel&omeSer5le.ja5a .
7a=$age serv;
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9PrintIriter;
im7ort DavaE9serv0et9Serv0etEE=e7tion;
im7ort DavaE9serv0et9annotation9IebServ0et;
im7ort DavaE9serv0et9htt79,tt7Serv0et;
im7ort DavaE9serv0et9htt79,tt7Serv0etReC#est;
im7ort DavaE9serv0et9htt79,tt7Serv0etRes7onse;
<VV
V
V Wa#thor 'SER
V<
WIebServ0et!name A GIe0=omeServ0etG* #r0Patterns A FG<Ie0=omeServ0etGL/
7#b0i= =0ass Ie0=omeServ0et eEtends ,tt7Serv0et F
<VV
V Pro=esses reC#ests @or both ,TTP O=odeQ>ETO<=odeQ and
O=odeQP&STO<=odeQ methods9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
7rote=ted void 7ro=essReC#est!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
res7onse9setContentT57e!GteEt<htm0;=harsetA'TB64G/;
PrintIriter o#t A res7onse9getIriter!/;
tr5 F
<V T&D& o#t7#t 5o#r 7age here
2S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
o#t97rint0n!GOhtm0QG/;
o#t97rint0n!GOheadQG/;
o#t97rint0n!GOtit0eQServ0et Ie0=omeServ0etO<tit0eQG/;
o#t97rint0n!GO<headQG/;
o#t97rint0n!GObod5QG/;
o#t97rint0n!GOh1QServ0et Ie0=omeServ0et at G H
reC#est9getConteEtPath !/ H GO<h1QG/;
o#t97rint0n!GO<bod5QG/;
o#t97rint0n!GO<htm0QG/;
V<
<< send N,T)L 7age to =0ient
<< start N,T)L do=#ment
o#t97rint0n! GOREm0 version A ZG19.ZGRQG /;
o#t97rint@! G[s[s[sG * GOMD&CT%PE htm0 P'BL"CG*
G ZG6<<I-C<<DTD N,T)L 19. Stri=t<<ENZGG*
G ZGhtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdZGQZnG /;
o#t97rint0n! GOhtm0 Em0ns A ZGhtt7;<<9-9org<1UUU<Ehtm0ZGQG /;
<< head se=tion o@ do=#ment
o#t97rint0n! GOheadQG /;
o#t97rint0n! GOtit0eQContoh sederhana serv0etO<tit0eQG /;
o#t97rint0n! GO<headQG /;
<< bod5 se=tion o@ do=#ment
o#t97rint0n! GObod5QG /;
o#t97rint0n! GOh1QSe0amat Be0aDar Serv0etMO<h1QG /;
o#t97rint0n! GO<bod5QG /;
<< end N,T)L do=#ment
o#t97rint0n! GO<htm0QG /;
L @ina005 F
o#t9=0ose!/;
L
L
<< Oeditor6@o0d de@a#0tstateAG=o00a7sedG des=AG,tt7Serv0et methods9 C0i=$
on the H sign on the 0e@t to edit the =ode9GQ
<VV
V ,and0es the ,TTP O=odeQ>ETO<=odeQ method9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void do>et!,tt7Serv0etReC#est reC#est* ,tt7Serv0etRes7onse
res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V ,and0es the ,TTP O=odeQP&STO<=odeQ method9
24 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void doPost!,tt7Serv0etReC#est reC#est* ,tt7Serv0etRes7onse
res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V Ret#rns a short des=ri7tion o@ the serv0et9
V Wret#rn a String =ontaining serv0et des=ri7tion
V<
W&verride
7#b0i= String getServ0et"n@o!/ F
ret#rn GShort des=ri7tionG;
L<< O<editor6@o0dQ
L
Tera!hir !ia bua +ile !on+igurasi #eb.Hml 2
OREm0 versionAG19.G en=odingAG'TB64GRQ
Oeb6a77 versionAG-9.G Em0nsAGhtt7;<<Dava9s#n9=om<Em0<ns<DavaeeG
Em0ns;EsiAGhtt7;<<9-9org<2..1<N)LS=hema6instan=eG
Esi;s=hemaLo=ationAGhtt7;<<Dava9s#n9=om<Em0<ns<Davaee
htt7;<<Dava9s#n9=om<Em0<ns<Davaee<eb6a77(-(.9EsdGQ
Oserv0etQ
Oserv0et6nameQServ0etPageO<serv0et6nameQ
Oserv0et6=0assQserv9Ie0=omeServ0etO<serv0et6=0assQ
O<serv0etQ
Oserv0et6ma77ingQ
Oserv0et6nameQServ0etPageO<serv0et6nameQ
O#r067atternQ<Serv0etDire=tor5O<#r067atternQ
O<serv0et6ma77ingQ
Osession6=on@igQ
Osession6timeo#tQ
-.
O<session6timeo#tQ
O<session6=on@igQ
Oe0=ome6@i0e60istQ
Oe0=ome6@i0eQindeE9Ds7O<e0=ome6@i0eQ
O<e0=ome6@i0e60istQ
O<eb6a77Q
Sehingga sru!ur "roje& se"eri beri!u2
2U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4i!a mengguna!an om&a inggal lea!!an "roje& di aas "ada +older #eba""s lalu "anggil saru" "ada
+older bin. 4i!a erda"a lebih dari sau ser5er biasan$a "or unu! om&a erlea! "ada "or D0D1.
htt7;<<0o=a0host;4.41<serv0et1<
6li! ombol sehingga mun&ul2
-. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
ser5le1
indeH.js"
WEB)'N*
#eb.Hml
&lasses
ser5
Wel&omeSer5le.&lass
.) Menangani Data pada &TTP get 'e(#est
Pada bagian ini !ia a!an membua "roje& unu! menangani daa $ang di!irim melalui ge reAues "ada
h". Proje& ersebu a!an !ia beri nama Ser5leProje&/. Hal "erama $ang a!an !ia la!u!an adalah
membua halaman a#al indeH.js".
Ohtm0Q
OheadQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
Otit0eQ,a0aman Aa0O<tit0eQ
O<headQ
Obod5Q
O@orm a=tion A GServ0etDire=tor52G method A GgetG Q
O7QO0abe0Q
T#0is nama dan Te$an tombo0M
Obr <QOin7#t t57e A GteEtG name A G@irstnameG <Q
Oin7#t t57e A Gs#bmitG va0#e A GS#bmitG <Q
O<7QO<0abe0Q
O<@ormQ
O<bod5Q
O<htm0Q
Seelah iu !ia a!an membua +ile ser5le. Wel&omeSer5le/.ja5a.
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9PrintIriter;
im7ort DavaE9serv0et9Serv0etEE=e7tion;
im7ort DavaE9serv0et9htt79,tt7Serv0et;
-1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
im7ort DavaE9serv0et9htt79,tt7Serv0etReC#est;
im7ort DavaE9serv0et9htt79,tt7Serv0etRes7onse;
<VV
V
V Wa#thor 'SER
V<
7#b0i= =0ass Ie0=omeServ0et2 eEtends ,tt7Serv0et F
<VV
V Pro=esses reC#ests @or both ,TTP O=odeQ>ETO<=odeQ and
O=odeQP&STO<=odeQ methods9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
7rote=ted void 7ro=essReC#est!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
String @irstName A reC#est9getParameter! G@irstnameG /;
res7onse9setContentT57e!GteEt<htm0;=harsetA'TB64G/;
PrintIriter o#t A res7onse9getIriter!/;
tr5 F
<< T&D& o#t7#t 5o#r 7age here
o#t97rint0n!GOhtm0QG/;
o#t97rint0n!GOheadQG/;
o#t97rint0n!GOtit0eQSe0amat be0aDarO<tit0eQG/;
o#t97rint0n!GO<headQG/;
o#t97rint0n!GObod5QG/;
o#t97rint0n!GOh1QSe0amat be0aDar serv0et G H @irstName H
GO<h1QG/;
o#t97rint0n!GO<bod5QG/;
o#t97rint0n!GO<htm0QG/;
<<
L @ina005 F
o#t9=0ose!/;
L
L
<< Oeditor6@o0d de@a#0tstateAG=o00a7sedG des=AG,tt7Serv0et
methods9 C0i=$ on the H sign on the 0e@t to edit the =ode9GQ
<VV
V ,and0es the ,TTP O=odeQ>ETO<=odeQ method9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
-2 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
7rote=ted void do>et!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V ,and0es the ,TTP O=odeQP&STO<=odeQ method9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void doPost!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V Ret#rns a short des=ri7tion o@ the serv0et9
V Wret#rn a String =ontaining serv0et des=ri7tion
V<
W&verride
7#b0i= String getServ0et"n@o!/ F
ret#rn GShort des=ri7tionG;
L<< O<editor6@o0dQ
L
-- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Tera!hir !ia a!an membua +ile des&ri"or #eb.Hml
OREm0 versionAG19.G en=odingAG'TB64GRQ
Oeb6a77 versionAG291G Em0nsAGhtt7;<<Dava9s#n9=om<Em0<ns<DavaeeG
Em0ns;EsiAGhtt7;<<9-9org<2..1<N)LS=hema6instan=eG
Esi;s=hemaLo=ationAGhtt7;<<Dava9s#n9=om<Em0<ns<Davaee
htt7;<<Dava9s#n9=om<Em0<ns<Davaee<eb6a77(2(19EsdGQ
Oserv0etQ
Oserv0et6nameQServ0etPage2O<serv0et6nameQ
Oserv0et6=0assQIe0=omeServ0et2O<serv0et6=0assQ
O<serv0etQ
Oserv0et6ma77ingQ
Oserv0et6nameQServ0etPage2O<serv0et6nameQ
O#r067atternQ<Serv0etDire=tor52O<#r067atternQ
O<serv0et6ma77ingQ
Osession6=on@igQ
Osession6timeo#tQ
-.
O<session6timeo#tQ
O<session6=on@igQ
Oe0=ome6@i0e60istQ
Oe0=ome6@i0eQindeE9Ds7O<e0=ome6@i0eQ
O<e0=ome6@i0e60istQ
O<eb6a77Q
Sehingga sru!ur "roje& n$a a!an se"eri beri!u2
-? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Ser5leProje&/
indeH.js"
WEB)'N*
#eb.Hml
&lasses
Wel&omeSer5le/.&lass
4i!a mengguna!an om&a inggal lea!!an "roje& di aas "ada +older #eba""s lalu "anggil saru" "ada
+older bin. 4i!a erda"a lebih dari sau ser5er biasan$a "or unu! om&a erlea! "ada "or D0D1.
htt7;<<0o=a0host;4.41<Serv0etProDe=t2<
6li! ombol sehingga mun&ul2
-1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
. Menangani Data pada &TTP post 'e(#est
Pada "roje& !ali ini !ia a!an memberi!an nama "roje& PosSer5Proje&.. Se"eri "ada "roje&
sebelumn$a !ia a!an membua halaman a#al indeH.js". nama ini ida! #ajib, namun "ada "roje& $ang
berbasis nebeans biasan$a a!an memberi!an nama indeH.js" dengan em"lae erenu $ang
meru"a!an +ile js".
Ohtm0Q
OheadQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
Otit0eQ)engirim 7ostO<tit0eQ
O<headQ
Obod5Q
O@orm a=tion A GPostServDire=tor5-G method A G7ostG Q
O7QO0abe0Q
T#0is$an nama dan te$an tombo0M
Obr <QOin7#t t57e A GteEtG name A G@irstnameG <Q
Oin7#t t57e A Gs#bmitG va0#e A GPostMG <Q
O<0abe0QO<7Q
O<@ormQ
O<bod5Q
O<htm0Q
-: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Seelah iu membua +ile ser5le PosSer5Page..ja5a 2
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9PrintIriter;
im7ort DavaE9serv0et9Serv0etEE=e7tion;
im7ort DavaE9serv0et9htt79,tt7Serv0et;
im7ort DavaE9serv0et9htt79,tt7Serv0etReC#est;
im7ort DavaE9serv0et9htt79,tt7Serv0etRes7onse;
<VV
V
V Wa#thor 'SER
V<
7#b0i= =0ass PostServPage- eEtends ,tt7Serv0et F
<VV
V Pro=esses reC#ests @or both ,TTP O=odeQ>ETO<=odeQ and
O=odeQP&STO<=odeQ methods9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
7rote=ted void 7ro=essReC#est!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
res7onse9setContentT57e!GteEt<htm0;=harsetA'TB64G/;
PrintIriter o#t A res7onse9getIriter!/;

tr5 F
<< T&D& o#t7#t 5o#r 7age here
String @irstName A reC#est9getParameter! G@irstnameG /;
o#t97rint0n!GOhtm0QG/;
o#t97rint0n!GOheadQG/;
o#t97rint0n!GOtit0eQServ0et PostServPage-O<tit0eQG/;
o#t97rint0n!GO<headQG/;
o#t97rint0n!GObod5QG/;
o#t97rint0n!GOh1QSe0amat be0aDar serv0et* G H @irstNameH
GMO<h1QG/;
o#t97rint0n!GO<bod5QG/;
o#t97rint0n!GO<htm0QG/;
<<
L @ina005 F
o#t9=0ose!/;
L
L
<< Oeditor6@o0d de@a#0tstateAG=o00a7sedG des=AG,tt7Serv0et
methods9 C0i=$ on the H sign on the 0e@t to edit the =ode9GQ
<VV
V ,and0es the ,TTP O=odeQ>ETO<=odeQ method9
-S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void do>et!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V ,and0es the ,TTP O=odeQP&STO<=odeQ method9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void doPost!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V Ret#rns a short des=ri7tion o@ the serv0et9
V Wret#rn a String =ontaining serv0et des=ri7tion
V<
W&verride
7#b0i= String getServ0et"n@o!/ F
ret#rn GShort des=ri7tionG;
L<< O<editor6@o0dQ
L
-an era!hir membua +ile des&ri"or #eb.Hml2
OREm0 versionAG19.G en=odingAG'TB64GRQ
Oeb6a77 versionAG291G Em0nsAGhtt7;<<Dava9s#n9=om<Em0<ns<DavaeeG
Em0ns;EsiAGhtt7;<<9-9org<2..1<N)LS=hema6instan=eG
Esi;s=hemaLo=ationAGhtt7;<<Dava9s#n9=om<Em0<ns<Davaee
htt7;<<Dava9s#n9=om<Em0<ns<Davaee<eb6a77(2(19EsdGQ
Oserv0etQ
Oserv0et6nameQPostServPage-O<serv0et6nameQ
Oserv0et6=0assQPostServPage-O<serv0et6=0assQ
O<serv0etQ
Oserv0et6ma77ingQ
Oserv0et6nameQPostServPage-O<serv0et6nameQ
O#r067atternQ<PostServDire=tor5-O<#r067atternQ
-4 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
O<serv0et6ma77ingQ
Osession6=on@igQ
Osession6timeo#tQ
-.
O<session6timeo#tQ
O<session6=on@igQ
Oe0=ome6@i0e60istQ
Oe0=ome6@i0eQindeE9Ds7O<e0=ome6@i0eQ
O<e0=ome6@i0e60istQ
O<eb6a77Q
Sehingga sru!ur "roje& n$a a!an se"eri beri!u2
4i!a mengguna!an om&a inggal lea!!an "roje& di aas "ada +older #eba""s lalu "anggil saru" "ada
+older bin. 4i!a erda"a lebih dari sau ser5er biasan$a "or unu! om&a erlea! "ada "or D0D1.
htt7;<<0o=a0host;4.41<PostServProDe=t-<
-U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
PosSer5Proje&.
indeH.js"
WEB)'N*
#eb.Hml
&lasses
PosSer5Page..&lass
6li! ombol sehingga mun&ul2
?. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
.* Melak#kan 'edirect ke &alaman Lain
Pada bagian ini !ia a!an membua h$"erlin! "ada halaman a#al $ang a!an di redire& melalui ser5le !e
halaman lain.
Perama, !ia bua halaman a#al. indeH.js" 2
Ohtm0Q
OheadQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
Otit0eQRedire=t dengan Serv0etO<tit0eQ
O<headQ
Obod5Q
Oh1QRedire=t dengan Serv0etO<h1Q
O7Q$0i$ sa0ah sat# 0in$ 5ang a$an diredire=tO<7Q
O7Q
Oa hre@ A G<Redire=tServProDe=t?<Redire=tServDire=tor5?R
7ageA#tamaGQ
,a0aman 'tamaO<aQObr <Q
Oa hre@ A G<Redire=tServProDe=t?<Redire=tServDire=tor5?R
7ageAsa0ahGQ
Sa0ah ,a0amanO<aQObr <Q
Oa hre@ A G<Redire=tServProDe=t?<Redire=tServDire=tor5?R
7ageAtera$hirGQ
,a0aman Tera$hirO<aQ
O<7Q
O<bod5Q
O<htm0Q
Selain iu !ia bua / halaman lain $ang a!an menjadi ujuan redire&. Yaiu Halaman1ama.hml 2
OM66
To =hange this tem70ate* =hoose Too0s P Tem70ates
and o7en the tem70ate in the editor9
66Q
OMD&CT%PE htm0Q
Ohtm0Q
OheadQ
Otit0eQ,a0aman 'tamaO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
OmarC#eeQ,a0aman 'tama dan gambar A7ri=otO<marC#eeQ
Oimg sr=AGA7ri=ot9D7gG a0tAG>ambar A7ri=otGQO<imgQ

O<bod5Q
O<htm0Q
?1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
-an HalamanTera!hir.hml 2
OM66
To =hange this tem70ate* =hoose Too0s P Tem70ates
and o7en the tem70ate in the editor9
66Q
OMD&CT%PE htm0Q
Ohtm0Q
OheadQ
Otit0eQ,a0aman Tera$hirO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
Oh1Q,a0aman tera$hirO<h1Q
Oimg sr=AGBro==o0i9D7gGQO<imgQ
O<bod5Q
O<htm0Q
*ile 'mage se"eri Bro&&oli.j"g dan A"ri&o.j"g bisa digani dengan gambar aau eH biasa.
-an juga +ile ser5le <edire&Ser5Page=.ja5a 2
<V
V To =hange this tem70ate* =hoose Too0s P Tem70ates
V and o7en the tem70ate in the editor9
V<
im7ort Dava9io9"&EE=e7tion;
im7ort Dava9io9PrintIriter;
im7ort DavaE9serv0et9Serv0etEE=e7tion;
im7ort DavaE9serv0et9htt79,tt7Serv0et;
im7ort DavaE9serv0et9htt79,tt7Serv0etReC#est;
im7ort DavaE9serv0et9htt79,tt7Serv0etRes7onse;
<VV
V
V Wa#thor 'SER
V<
7#b0i= =0ass Redire=tServPage? eEtends ,tt7Serv0et F
<VV
V Pro=esses reC#ests @or both ,TTP O=odeQ>ETO<=odeQ and
O=odeQP&STO<=odeQ methods9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
?2 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
7rote=ted void 7ro=essReC#est!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
res7onse9setContentT57e!GteEt<htm0;=harsetA'TB64G/;
PrintIriter o#t A res7onse9getIriter!/;
tr5 F
<< T&D& o#t7#t 5o#r 7age here

String 7ageAreC#est9getParameter!G7ageG/;
i@ !7ageMAn#00/F
i@ !7age9eC#a0s!G#tamaG//F
res7onse9sendRedire=t!G<Redire=tServProDe=t?<PageLain<
,a0aman'tama9htm0G/;
Le0se i@ !7age9eC#a0s!Gtera$hirG//F
res7onse9sendRedire=t!G<Redire=tServProDe=t?<PageLain<,a0a
manTera$hir9htm0G/;
L
L
o#t97rint0n!GOhtm0QG/;
o#t97rint0n!GOheadQG/;
o#t97rint0n!GOtit0eQServ0et Redire=tServPage?O<tit0eQG/;
o#t97rint0n!GO<headQG/;
o#t97rint0n!GObod5QG/;
o#t97rint0n!GOh1Q,a0aman tida$ ditem#$an* Serv0et
Redire=tServPage? at G H 7age H GO<h1QG/;
o#t97rint0n!GO<bod5QG/;
o#t97rint0n!GO<htm0QG/;
<<
L @ina005 F
o#t9=0ose!/;
L
L
<< Oeditor6@o0d de@a#0tstateAG=o00a7sedG des=AG,tt7Serv0et
methods9 C0i=$ on the H sign on the 0e@t to edit the =ode9GQ
<VV
V ,and0es the ,TTP O=odeQ>ETO<=odeQ method9
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void do>et!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V ,and0es the ,TTP O=odeQP&STO<=odeQ method9
?- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
V W7aram reC#est serv0et reC#est
V W7aram res7onse serv0et res7onse
V Wthros Serv0etEE=e7tion i@ a serv0et6s7e=i@i= error o==#rs
V Wthros "&EE=e7tion i@ an "<& error o==#rs
V<
W&verride
7rote=ted void doPost!,tt7Serv0etReC#est reC#est*
,tt7Serv0etRes7onse res7onse/
thros Serv0etEE=e7tion* "&EE=e7tion F
7ro=essReC#est!reC#est* res7onse/;
L
<VV
V Ret#rns a short des=ri7tion o@ the serv0et9
V Wret#rn a String =ontaining serv0et des=ri7tion
V<
W&verride
7#b0i= String getServ0et"n@o!/ F
ret#rn GShort des=ri7tionG;
L<< O<editor6@o0dQ
L
Tera!hir !ia bua +ile des&ri"or #eb.Hml2
OREm0 versionAG19.G en=odingAG'TB64GRQ
Oeb6a77 versionAG291G Em0nsAGhtt7;<<Dava9s#n9=om<Em0<ns<DavaeeG
Em0ns;EsiAGhtt7;<<9-9org<2..1<N)LS=hema6instan=eG
Esi;s=hemaLo=ationAGhtt7;<<Dava9s#n9=om<Em0<ns<Davaee
htt7;<<Dava9s#n9=om<Em0<ns<Davaee<eb6a77(2(19EsdGQ
Oserv0etQ
Oserv0et6nameQRedire=tServPage?O<serv0et6nameQ
Oserv0et6=0assQRedire=tServPage?O<serv0et6=0assQ
O<serv0etQ
Oserv0et6ma77ingQ
Oserv0et6nameQRedire=tServPage?O<serv0et6nameQ
O#r067atternQ<Redire=tServDire=tor5?O<#r067atternQ
O<serv0et6ma77ingQ
Osession6=on@igQ
Osession6timeo#tQ
-.
O<session6timeo#tQ
O<session6=on@igQ
Oe0=ome6@i0e60istQ
Oe0=ome6@i0eQindeE9Ds7O<e0=ome6@i0eQ
O<e0=ome6@i0e60istQ
O<eb6a77Q
Sehingga Proje& ersebu mem"un$ai sru!ur sebagai beri!u2
?? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Sehingga hasiln$a anara lain2
h"233lo&alhos2D0D13<edire&Ser5Proje&=3
?1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
<edire&Ser5Proje&=
indeH.js"
WEB)'N*
#eb.Hml
&lasses
<edire&Ser5Page=.&lass
Page8ain
Halaman1ama.hml
HalamanTera!hir.hml
?: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab -. JavaServer Pages.JSP/
*.1 Scripting dengan +SP dan ,mplicit -b$ect
4SP juga mem"un$ai sru!ur "roje& $ang sama dengan Ser5le namun lebih sederhana !arena s&ri"n$a
bisa !ia lea!!an ida! harus di +older erenu dan 4SP meru"a!an benu! lain dari ser5le namun 4SP
bisa di!aa!an nanin$a a!an digenerae dari 4SP ersebu menjadi sebuah ser5le oleh #eb &onainer
!arena iu ada bebera"a 5ariable dari ser5le $ang bisa di"anggil an"a inisialisasi. 'm"li&i obje& adalah
obje& aau 5ariable $ang sudah diinisialisasi sebelumn$a oleh #eb &onainer sehingga bisa di"anggil
an"a inisialisasi. -alam 4SP im"li&i obje& ersebu anara lain2
?S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Beri!u &onoh s&ri" sederhana dengan dengan 4SP +ile 4SP1.js" $ang mengguna!an im"li&i obje&
reAues 2
OREm0 version A G19.G RQ
OMD&CT%PE htm0 P'BL"C G6<<I-C<<DTD N,T)L 19. Stri=t<<ENG
Ghtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdGQ
OM66 Big9 2S9?; e0=ome9Ds7 66Q
OM66 JSP that 7ro=esses a GgetG reC#est =ontaining data9 66Q
Ohtm0 Em0ns A Ghtt7;<<9-9org<1UUU<Ehtm0GQ
OM66 head se=tion o@ do=#ment 66Q
OheadQ
Otit0eQPro=essing GgetG reC#ests ith dataO<tit0eQ
O<headQ
OM66 bod5 se=tion o@ do=#ment 66Q
Obod5Q
O[ << begin s=ri7t0et

String name A reC#est9getParameter! G@irstNameG /;

i@ ! name MA n#00 /
F
[Q O[66 end s=ri7t0et to insert @iEed tem70ate data 66[Q
Oh1Q
,e00o O[A name [Q* Obr <Q
Ie0=ome to JavaServer PagesM
O<h1Q
O[ << =ontin#e s=ri7t0et

L << end i@
e0se F

[Q O[66 end s=ri7t0et to insert @iEed tem70ate data 66[Q
O@orm a=tion A GJSP19Ds7G method A GgetGQ
O7QT57e 5o#r @irst name and 7ress S#bmitO<7Q
?4 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
O7QOin7#t t57e A GteEtG name A G@irstNameG <Q
Oin7#t t57e A Gs#bmitG va0#e A GS#bmitG <Q
O<7Q
O<@ormQ
O[ << =ontin#e s=ri7t0et

L << end e0se

[Q O[66 end s=ri7t0et 66[Q
O<bod5Q
O<htm0Q OM66 end N,T)L do=#ment 66Q
-engan halaman a#al indeH.hml2
Ohtm0Q
OheadQ
Otit0eQ"ndeE S=ri70et JSPO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
Oa hre@AGDire=tor5Lain<JSP19Ds7GQJSP19Ds7O<aQ
O<bod5Q
O<htm0Q
-an +ile des&ri"or #eb.Hml2
OREm0 versionAG19.G en=odingAG'TB64GRQ
Oeb6a77 versionAG291G Em0nsAGhtt7;<<Dava9s#n9=om<Em0<ns<DavaeeG
Em0ns;EsiAGhtt7;<<9-9org<2..1<N)LS=hema6instan=eG
Esi;s=hemaLo=ationAGhtt7;<<Dava9s#n9=om<Em0<ns<Davaee
htt7;<<Dava9s#n9=om<Em0<ns<Davaee<eb6a77(2(19EsdGQ
Osession6=on@igQ
Osession6timeo#tQ
-.
O<session6timeo#tQ
O<session6=on@igQ
Oe0=ome6@i0e60istQ
Oe0=ome6@i0eQindeE9htm0O<e0=ome6@i0eQ
O<e0=ome6@i0e60istQ
O<eb6a77Q
Sru!ur "roje&2
?U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Panggil "roje& ersebu dengan2
h"233lo&alhos2D0D134SPProje&@3
1. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4SPProje&@
indeH.hml
WEB)'N*
#eb.Hml
-ire&or$8ain
4SP1.js"
*.2 Standard .ction pada +SP
Ada bebera"a A&ion "ada 4SP, namun "ada bu!u ini han$a in&lude, +or#ard, dan useBean.
-.2.1 !ction inc+u,e
Sru!ur "roje& $ang di"a!ai, #eb.Hml ea" !ia guna!an $ang lama, +ile image bisa digani dengan
$ang lain2
11 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
*ile indeH.hml2
OM66
To =hange this tem70ate* =hoose Too0s P Tem70ates
and o7en the tem70ate in the editor9
66Q
OMD&CT%PE htm0Q
Ohtm0Q
OheadQ
Otit0eQ"ndeE S=ri70et JSPO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
Oa hre@AGDire=tor5Lain<JSP19Ds7GQJSP19Ds7O<aQObrQ
Oa hre@AGDire=tor5Lain<in=0#de9Ds7GQin=0#de9Ds7O<aQ
O<bod5Q
O<htm0Q
Pada +ile in&lude.js" 2
OREm0 version A G19.GRQ
OMD&CT%PE htm0 P'BL"C G6<<I-C<<DTD N,T)L 19. Stri=t<<ENG
Ghtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdGQ

OM66 Big9 2S9S; in=0#de9Ds7 66Q
Ohtm0 Em0ns A Ghtt7;<<9-9org<1UUU<Ehtm0GQ
OheadQ
12 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4SPProje&@
indeH.hml
WEB)'N*
#eb.Hml
-ire&or$8ain
4SP1.js"
in&ludePage
in&lude.js"
&lo&!/.js"
o&.hml
Banner.hml
Otit0eQ'sing Ds7;in=0#deO<tit0eQ
Ost50e t57e A GteEt<=ssGQ
bod5
F
@ont6@ami05; tahoma* he0veti=a* aria0* sans6seri@;
L
tab0e* tr* td
F
@ont6siYe; 9Uem;
border; -7E groove;
7adding; 17E;
ba=$gro#nd6=o0or; \dddddd;
L
O<st50eQ
O<headQ
Obod5Q
Otab0eQ
OtrQ
Otd st50e A Gidth; 1:.7E; teEt6a0ign; =enterGQ
Oimg sr= A Gin=0#dePage<a7ri=ot9D7gG
idth A G1?.G height A GU-G
a0t A G, T Asso=iates* "n=9 LogoG <Q
O<tdQ
OtdQ
O[66 in=0#de banner9htm0 in this JSP 66[Q
ODs7;in=0#de 7age A Gin=0#dePage<banner9htm0G
@0#sh A Gtr#eG <Q
O<tdQ
O<trQ
OtrQ
Otd st50e A Gidth; 1:.7EG Q
O[66 in=0#de to=9htm0 in this JSP 66[Q
ODs7;in=0#de 7age A Gin=0#dePage<to=9htm0G @0#sh A
Gtr#eG <Q
O<tdQ
Otd st50e A Gverti=a06a0ign; to7GQ
O[66 in=0#de =0o=$29Ds7 in this JSP 66[Q
ODs7;in=0#de 7age A Gin=0#dePage<=0o=$29Ds7G
@0#sh A Gtr#eG <Q
O<tdQ
O<trQ
O<tab0eQ
O<bod5Q
O<htm0Q
*ile banner.hml 2
1- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Odiv st50e A Gidth; 14.7EGQ
O7Q
Java!T)/* C* CHH* +is#a0 Basi=!R/*
&bDe=t Te=hno0og5* and Obr <Q "nternet and
Ior0d Iide Ieb Programming TrainingTnbs7;Obr <Q
&n6Site Seminars De0ivered Ior0dide
O<7Q
O7Q
Oa hre@ A
Gmai0to;hi0a0n#haWgmai09=omGQhi0a0n#haWgmai09=omO<aQ
Obr <Q.41-21....@@Obr <Q12 C0o=$ Toer P0a=e* S#ite 2..*
Da$o* BD> .1S1?
O<7Q
O<divQ
*ile o& .hml2
OM66 Big9 2S9U; to=9htm0 66Q
OM66 =ontents to in=0#de in another do=#ment 66Q

O7QOa hre@ A Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<GQ
P#b0i=ations<Boo$Store
O<aQO<7Q

O7QOa hre@ A Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<GQ
Ihat3s Ne
O<aQO<7Q
O7QOa hre@ A Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<GQ
Don0oads<Reso#r=es
O<aQO<7Q
O7QOa hre@ A Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<GQ
BA8 !BreC#ent05 As$ed 8#estions/
O<aQO<7Q
O7QOa hre@ A Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<GQ
Iho e are
O<aQO<7Q
O7QOa hre@ A Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<GQ
,ome Page
O<aQO<7Q
O7QSend C#estions or =omments abo#t this site to
Oa hre@ A Gmai0to;hi0a0n#haWgmai09=omGQ
hi0a0n#haWgmai09=om
O<aQObr <Q
Co75right 1UU162..1 b5 , Tam7; Asso=iates* "n=9
A00 Rights Reserved9
1? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
O<7Q
-an &lo&!/.js" 2
OM66 Big9 2S91.; =0o=$29Ds7 66Q
OM66 date and time to in=0#de in another do=#ment 66Q
Otab0eQ
OtrQ
Otd st50e A Gba=$gro#nd6=o0or; b0a=$;GQ
O7 =0ass A GbigG st50e A G=o0or; =5an; @ont6siYe; -em;
@ont6eight; bo0d;GQ
O[66 s=ri7t to determine =0ient 0o=a0 and 66[Q
O[66 @ormat date a==ording05 66[Q
O[
<< get =0ient 0o=a0e
Dava9#ti09Lo=a0e 0o=a0e A reC#est9getLo=a0e!/;
<< get DateBormat @or =0ient3s Lo=a0e
Dava9teEt9DateBormat dateBormat A
Dava9teEt9DateBormat9getDateTime"nstan=e!
Dava9teEt9DateBormat9 L&N>*
Dava9teEt9DateBormat9 L&N>* 0o=a0e /;
[Q O[66 end s=ri7t 66[Q
O[66 o#t7#t date 66[Q
O[A dateBormat9@ormat! ne Dava9#ti09Date!/ / [Q
O<7Q
O<tdQ
O<trQ
O<tab0eQ
-an !ia "anggil "roje& dengan 2 h"233lo&alhos2D0D134SPProje&@3
11 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
-.2.2 !ction for0ar,
Pada bagian ini !ia ea" mengguna!an sru!ur "roje& $ang lama dengan ambahan +ile "ada bagian
sebelumn$a.
1: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
*ile $ang !ia ubah $aiu halaman a#al indeH.hml agar bisa menam"il!an lin! !e +ile ambahan2
OM66
To =hange this tem70ate* =hoose Too0s P Tem70ates
and o7en the tem70ate in the editor9
66Q
OMD&CT%PE htm0Q
Ohtm0Q
OheadQ
Otit0eQ"ndeE S=ri70et JSPO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
Oa hre@AGDire=tor5Lain<JSP19Ds7GQJSP19Ds7O<aQObrQ
Oa hre@AGDire=tor5Lain<in=0#de9Ds7GQin=0#de9Ds7O<aQObr<Q
Oa hre@AGDire=tor5Lain<@orard19Ds7GQ@orard19Ds7O<aQ
O<bod5Q
O<htm0Q
*ile ambahan $aiu +or#ard1.js"2
OREm0 version A G19.G RQ
OMD&CT%PE htm0 P'BL"C G6<<I-C<<DTD N,T)L 19. Stri=t<<ENG
Ghtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdGQ
OM66 Big9 2S911; @orard19Ds7 66Q

Ohtm0 Em0ns A Ghtt7;<<9-9org<1UUU<Ehtm0GQ
OheadQ
1S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4SPProje&@
indeH.hml
WEB)'N*
#eb.Hml
-ire&or$8ain
4SP1.js"
in&ludePage
in&lude.js"
&lo&!/.js"
o&.hml
Banner.hml
+or#ard/.js"
*or#ard1.js"
Otit0eQBorard reC#est to another JSPO<tit0eQ
O<headQ
Obod5Q
O[ << begin s=ri7t0et

String name A reC#est9getParameter! G@irstNameG /;

i@ ! name MA n#00 /
F
[Q O[66 end s=ri7t0et to insert @iEed tem70ate data 66[Q
ODs7;@orard 7age A Gin=0#dePage<@orard29Ds7GQ
ODs7;7aram name A GdateG
va0#e A GO[A ne Dava9#ti09Date!/ [QG <Q
O<Ds7;@orardQ
O[ << =ontin#e s=ri7t0et

L << end i@
e0se
F
[Q O[66 end s=ri7t0et to insert @iEed tem70ate data 66[Q
O@orm a=tion A G@orard19Ds7G method A GgetG Q
O7QT57e 5o#r @irst name and 7ress S#bmitO<7Q
O7QOin7#t t57e A GteEtG name A G@irstNameG <Q
Oin7#t t57e A Gs#bmitG va0#e A GS#bmitG <Q
O<7Q
O<@ormQ
O[ << =ontin#e s=ri7t0et

L << end e0se

[Q O[66 end s=ri7t0et 66[Q
O<bod5Q
O<htm0Q OM66 end N,T)L do=#ment 66Q
-an juga +ile +or#ard/.js" unu! menerima daa2
OREm0 version A G19.GRQ
OMD&CT%PE htm0 P'BL"C G6<<I-C<<DTD N,T)L 19. Stri=t<<ENG
Ghtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdGQ

OM66 Big9 2S912; @orard29Ds7 66Q

Ohtm0 Em0ns A Ghtt7;<<9-9org<1UUU<Ehtm0GQ
OheadQ
Otit0eQPro=essing a @orarded reC#estO<tit0eQ
Ost50e t57e A GteEt<=ssGQ
14 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
9big
F
@ont6@ami05; tahoma* he0veti=a* aria0* sans6seri@;
@ont6eight; bo0d;
@ont6siYe; 2em;
L
O<st50eQ
O<headQ
Obod5Q
O7 =0ass A GbigGQ
,e00o O[A reC#est9getParameter! G@irstNameG / [Q* Obr <Q
%o#r reC#est as re=eived Obr <Q and @orarded at
O<7Q
Otab0e st50e A Gborder; :7E o#tset;GQ
OtrQ
Otd st50e A Gba=$gro#nd6=o0or; b0a=$;GQ
O7 =0ass A GbigG st50e A G=o0or; =5an;GQ
O[A reC#est9getParameter! GdateG / [Q
O<7Q
O<tdQ
O<trQ
O<tab0eQ
O<bod5Q
O<htm0Q
-an !ia bisa "anggil "rogram2 h"233lo&alhos2D0D134SPProje&@3
1U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
-.2.3 !ction useBean
Pada bagian ini !ia a!an mengguna!an a&ion useBean dengan mengguna!an sru!ur "roje& $ang
sama namun diambah!an dan diubah bebera"a bagian2
:. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
-ire&i5e bisa mengambil suau "arameer $ang erda"a "ada ge Mehod sehingga bisa di"anggil
dengan mengguna!an "ro"er$, !arena "ada mehod han$a erda"a ge saja ma!a !ia han$a bisa
memanggil nilai dari "ro"er$ ersebu an"a bisa mengubah nilain$a.
*ile indeH.hml diedi menjadi2
OM66
To =hange this tem70ate* =hoose Too0s P Tem70ates
and o7en the tem70ate in the editor9
66Q
OMD&CT%PE htm0Q
Ohtm0Q
OheadQ
Otit0eQ"ndeE S=ri70et JSPO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
Oa hre@AGDire=tor5Lain<JSP19Ds7GQJSP19Ds7O<aQObrQ
Oa hre@AGDire=tor5Lain<in=0#de9Ds7GQin=0#de9Ds7O<aQObr<Q
Oa hre@AGDire=tor5Lain<@orard19Ds7GQ@orard19Ds7O<aQObr<Q
Oa hre@AGDire=tor5Lain<#seBean9Ds7GQ#seBean9Ds7O<aQObr<Q
O<bod5Q
O<htm0Q
Seelah iu +ile useBean.js" $ang a!an mengguna!an a&ion useBean2
OREm0 version A G19.GRQ
OMD&CT%PE htm0 P'BL"C G6<<I-C<<DTD N,T)L 19. Stri=t<<ENG
Ghtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdGQ
:1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4SPProje&@
indeH.hml
WEB)'N*
#eb.Hml
-ire&or$8ain
4SP1.js"
in&ludePage
in&lude.js"
&lo&!/.js"
o&.hml
banner.hml
+or#ard/.js"
+or#ard1.js"
&lasses
beans
<oaorBean.&lass
useBean.js"

OM66 Big9 2S911; adrotator9Ds7 66Q

ODs7;#seBean id A GrotatorG s=o7e A GsessionG
=0ass A Gbeans9RotatorBeanG

<Q

Ohtm0 Em0ns A Ghtt7;<<9-9org<1UUU<Ehtm0GQ
OheadQ
Otit0eQAdRotator EEam70eO<tit0eQ
Ost50e t57e A GteEt<=ssGQ
9big F @ont6@ami05; he0veti=a* aria0* sans6seri@;
@ont6eight; bo0d;
@ont6siYe; 2em L
O<st50eQ
O[66 #7date advertisement 66[Q
O[
rotator9neEtAd!/;
[Q
O<headQ
Obod5Q
O7 =0ass A GbigGQODs7;getPro7ert5 name A GrotatorG
7ro7ert5 A Gsenten=eG <QO<7Q
O7Q
Oa hre@ A GODs7;getPro7ert5 name A GrotatorG
7ro7ert5 A G0in$G <QGQ
Oimg sr= A GODs7;getPro7ert5 name A GrotatorG
7ro7ert5 A GimageG <QG a0t A GadvertisementG <Q
O<aQ
O<7Q
O<bod5Q
O<htm0Q
-an +ile bean <oaorBean.ja5a2
7a=$age beans;
<< Big9 2S91?; Rotator9Dava
<< A JavaBean that rotates advertisements9


7#b0i= =0ass RotatorBean
F
7rivate String imagesJK A F Gin=0#dePage<a7ri=ot9D7gG*
Gin=0#dePage<a7ri=ot9D7gG* Gin=0#dePage<a7ri=ot9D7gG*
Gin=0#dePage<a7ri=ot9D7gG* Gin=0#dePage<a7ri=ot9D7gG L;
7rivate String 0in$sJK A F
:2 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Ghtt7;<<hi0a0n#ha9b0ogs7ot9=om<G*
Ghtt7;<<ins7ira6ti7s9b0ogs7ot9=om<G*
Ghtt7;<<hi0a0=enter9m#0ti7059=om<G*
Ghtt7;<<hi0a0n#ha9ord7ress9=om<G*
Ghtt7;<<$#0iah6hhn9b0ogs7ot9=om<G
L;

7rivate String senten=esJK A F
G$#nD#ngi htt7;<<hi0a0n#ha9b0ogs7ot9=om<G*
G$#nD#ngi htt7;<<ins7ira6ti7s9b0ogs7ot9=om<G*
G$#nD#ngi htt7;<<hi0a0=enter9m#0ti7059=om<G*
G$#nD#ngi htt7;<<hi0a0n#ha9ord7ress9=om<G*
G$#nD#ngi htt7;<<$#0iah6hhn9b0ogs7ot9=om<G
L;
7rivate int se0e=ted"ndeE A .;
7#b0i= String getSenten=e!/
F
ret#rn senten=esJ se0e=ted"ndeE K;
L
<< ret#rns image @i0e name @or =#rrent ad
7#b0i= String get"mage!/
F
ret#rn imagesJ se0e=ted"ndeE K;
L << end method get"mage
<< ret#rns the 'RL @or ad3s =orres7onding Ieb site
7#b0i= String getLin$!/
F
ret#rn 0in$sJ se0e=ted"ndeE K;
L << end method getLin$
<< #7date se0e=ted"ndeE so neEt =a00s to get"mage and
<< getLin$ ret#rn a di@@erent advertisement
7#b0i= void neEtAd!/
F
se0e=ted"ndeE A ! se0e=ted"ndeE H 1 / [ images90ength;
L << end method neEtAd
L << end =0ass Rotator
Sehingga !ia bisa memanggil a"li!asi2
h"233lo&alhos2D0D134SPProje&@3
:- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
-an "ada useBean.js" 2
:? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
*.% Directi"e pada +SP
-.3.1 Directive inc+u,e
Pada bagian era!hir ini a!an di&onoh!an "embuaan halaman 4SP dengan mengguna!an dire&i5e
in&lude $ang mem"un$ai +ungsi miri" dengan a&ion in&lude. Sru!ur "roje& han$a diambahi +ile
dire&i5e'n&lude.js" dan "erubahan "ada halaman a#al unu! menambah lin! !e halaman js" $ang baru.
-engan halaman a#al indeH.hml 2
OM66
To =hange this tem70ate* =hoose Too0s P Tem70ates
and o7en the tem70ate in the editor9
66Q
OMD&CT%PE htm0Q
Ohtm0Q
OheadQ
Otit0eQ"ndeE S=ri70et JSPO<tit0eQ
Ometa htt76eC#ivAGContent6T57eG =ontentAGteEt<htm0;
=harsetA'TB64GQ
O<headQ
Obod5Q
Oa hre@AGDire=tor5Lain<JSP19Ds7GQJSP19Ds7O<aQObrQ
Oa hre@AGDire=tor5Lain<in=0#de9Ds7GQin=0#de9Ds7O<aQObr<Q
Oa hre@AGDire=tor5Lain<@orard19Ds7GQ@orard19Ds7O<aQObr<Q
Oa hre@AGDire=tor5Lain<#seBean9Ds7GQ#seBean9Ds7O<aQObr<Q
Oa
hre@AGDire=tor5Lain<in=0#deDire=tive9Ds7GQin=0#deDire=tive9Ds7O<aQ
O<bod5Q
O<htm0Q
:1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4SPProje&@
indeH.hml
WEB)'N*
#eb.Hml
-ire&or$8ain
4SP1.js"
in&ludePage
in&lude.js"
&lo&!/.js"
o&.hml
banner.hml
+or#ard/.js"
+or#ard1.js"
&lasses
beans
<oaorBean.&lass
useBean.js"
in&lude-ire&i5e.js"
-an +ile js" in&lude-ire&i5e.js" 2
OREm0 version A G19.GRQ
OMD&CT%PE htm0 P'BL"C G6<<I-C<<DTD N,T)L 19. Stri=t<<ENG
Ghtt7;<<9-9org<TR<Ehtm01<DTD<Ehtm016stri=t9dtdGQ

OM66 Big9 2S91U; in=0#deDire=tive9Ds7 66Q

Ohtm0 Em0ns A Ghtt7;<<9-9org<1UUU<Ehtm0GQ
OheadQ
Otit0eQ'sing the in=0#de dire=tiveO<tit0eQ
Ost50e t57e A GteEt<=ssGQ
bod5
F
@ont6@ami05; tahoma* he0veti=a* aria0* sans6seri@;
L
tab0e* tr* td
F
@ont6siYe; 9Uem;
border; -7E groove;
7adding; 17E;
ba=$gro#nd6=o0or; \dddddd;
L
O<st50eQ
O<headQ
Obod5Q
Otab0eQ
OtrQ
Otd st50e A Gidth; 1:.7E; teEt6a0ign; =enterGQ
Oimg sr= A Gin=0#dePage<a7ri=ot9D7gG
idth A G1?.G height A GU-G
a0t A G, T Asso=iates* "n=9 LogoG <Q
O<tdQ
OtdQ
O[66 in=0#de banner9htm0 in this JSP 66[Q
O[W in=0#de @i0e A Gin=0#dePage<banner9htm0G [Q
O<tdQ
O<trQ
OtrQ
Otd st50e A Gidth; 1:.7EGQ
O[66 in=0#de to=9htm0 in this JSP 66[Q
O[W in=0#de @i0e A Gin=0#dePage<to=9htm0G [Q
O<tdQ
Otd st50e A Gverti=a06a0ign; to7GQ
O[66 in=0#de =0o=$29Ds7 in this JSP 66[Q
O[W in=0#de @i0e A Gin=0#dePage<=0o=$29Ds7G [Q
O<tdQ
O<trQ
O<tab0eQ
O<bod5Q
O<htm0Q
:: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Sehingga !ia "anggil2
h"233lo&alhos2D0D134SPProje&@3
:S Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Bab 1. 2eb Services
Tujuan dari bab ini adalah membua Web Ser5i&es dengan Nebeans. 1nu! Ser5er sendiri !ia bisa
guna!an Tom&a @.H aau >lass *ish.
/.1 Memb#at !eb Ser"ices
1.1.a Pembuatan Container
1. "ilih *ile O Ne# Proje& B&rl P shi+ P NC. "ilih Web A""li&aion dari !aegori 4a5a Web.
/. Namai "roje& ersebu !al!ulaorWSProje&:. Pilih lo!asi Proje& dan NeH.
.. "ilih 4a5a EE ser5er dalam hal ini om&a @.H aau >lass *ish.
1.1.b Membuat 2eb Services ,ari C+ass Java
1. !li! !anan "roje& !al!ulaorWSProje&: dan "ilih Ne# O Web Ser5i&e.
/. beri nama #eb ser5i&e ersebu !al!ulaorWS dan ulis!an hhn.ne.!al!ulaor "ada "a&!age dan
biar!an +ield Create 9eb ,ervice from ,cratch tercentang.
.. !ika anda membuat dari !ava :: ; "roject, pilih 9eb ,ervice as a ,tateless ,ession Bean.
:4 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
=. !li! *inish. Windo# Proje&s menam"il!an sru!ur! dari #eb ser5i&e $ang baru dan sour&e &ode
diam"il!an "ada edior area.
1.1.c Menamba3kan (4erasi 4a,a 2eb Services
1. !li! !anan "ada #eb ser5i&e "ada "roje& sehingga mun&ul menu baru2
/. pilih Add Operation pada menu tersebut. 3al ini juga bisa anda lakukan dengan membuka
visual designer dari web service tersebut dan memilih Add Operation.
.. "ada bagian atas dialog bo< dari Add Operation, tuliskan penjumlahan pada =ame dan
tuliskan int pada Return >(pe pada drop'down list. "ada bagian bawah klik Add dan buat
parameter tipe int dan beri nama i dan tambahkan lagi parameter dengan tipe int dengan
nama j. anda akan melihat tampilan berikut.
:U Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
6. .lik ok dan pada design akan terlihat berikut.
9. -an anda a!an meliha !ode ambahan $ang degenerae2
S. Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
@. Tambah!an !ode $ang a!an mende+inisi!an beha5ior dari o"eraion "ada sour&e $ang digenerae.
<VV
V Ieb servi=e o7eration
V<
WIeb)ethod!o7erationName A G7enD#m0ahanG/
7#b0i= int 7enD#m0ahan!WIebParam!name A GiG/
int i* WIebParam!name A GDG/
int D/ F
int k=i+j;
ret#rn k;
L
/.2 Men$alankan dan Meng#$i !eb Ser"ices
1. !li! !anan "roje& dan "ilih de"lo$ sehingga #eb ser5i&e er"asang "ada ser5er.
/. !li! !anan #eb ser5i&es dan "ilih es Web Ser5i&e2
S1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
4i!a anda mengguna!an ser5er glass +ish anda bisa langsung menguji n$a.
Pada om&a bisa di"anggil2
h"233lo&alhos2D0D13!al!ulaorWSProje&:3!al!ulaorWSQTeser
4i!a mengguna!an >lass +ish ma!a am"ilann$a a!an se"eri ini sehingga anda bisa langsung men&oba
#eb ser5i&es $ang dibua, namun am"ilan di ba#ah mem"un$ai +ungsi $ang sama unu! nama $ang
berbeda.
S2 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
/.% Memb#at Client Unt#k !eb Ser"ices
!ika anda menggunakan !$. ; dengan netbeans #$: ;.?, pasti digunakan !$. ; Update @ atau
keatas.
1. "ilih Aile B =ew "roject 0Ctrl',hift'=1. pilih !ava Application dari kategori !ava. Beri
nama project kalkulator9,Client"roject@a. biarkan Class &ain dan klik Ainish.
+. .lik kanan project dan pilih =ew B 9eb ,ervice Client.
5. $alam project, klik Browse. "ilih web service (ang ingin di pakai. !ika sudah maka klik
O..
=. Biarkan setting (ang lain seperti biasa dan klik Ainish.
9indow project menampilkan client web service dengan sebuah node untuk method
penjumlahan (ang dibuat tadi.
S- Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
9. $obel'klik &ain.java sehingga bisa membuka ,ource :ditor. 3apus komentar >O$O
dan drag node penjumlahan di atas ke baris kosong pada baris kosong. ,ehingga terlihat
tampilan berikut/
Note: cara lain adalah dengan meng'klik kanan editor dan memilih #nsert Code B Call
9eb ,ervice Operation
;. $rag Cenerated ,ources ke ,ource "ackages.
S? Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
@. #si dua buah integer kemudian tambahkan kode berikut pada main01
int E1A?;
int E2A1;
int hasi0A7enD#m0ahan!E1* E2/;
S5stem9o#t97rint0n!hasi0/;
D. .lik kanan project dan pilih Run. $an hasiln(a/
$engan langkah (ang sama kita bisa membuat client berbasis ,ervlet atau !,".
S1 Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3
Referensi
http/))netbeans.org)kb)docs)websvc)client.html
Emha Tau+iA 8uh+i , MEMBAN>1N AP8'6AS' TE<-'ST<'B1S' -EN>AN 0?<BA -AN 4A(A
HM-eiel, P4-eiel, F4a5a, Ho# To ProgramG, Edisi @, Preni&e Hall, /00=
S: Pemrograman Jaringan
h"233!uliah)hhn.blogs"o.&om3

Anda mungkin juga menyukai