Advanced Java Programming
Advanced Java Programming
7KHIROORZLQJVKRZVWKH7\SLFDO:HEVHUYHUGLIIHUHQWFOLHQWVFRQQHFWLQJYLDWKH
,QWHUQHWWRD:HEVHUYHU,QWKLVH[DPSOHWKH:HEVHUYHULVUXQQLQJRQ8QL[DQG
LVWKHYHU\SRSXODU$SDFKH:HEVHUYHU
7\SLFDO:HE :HE
&OLHQW
VHUYHU VHUYHU
0DF26
,17(51(7
/LQX[
8QL[
$SDFKH:HEVHUYHU
:LQGRZV
)LUVWVWDWLFZHESDJHVZHUHGLVSOD\HG7\SLFDOO\WKHVHZHUHSHRSOH¶VILUVW
H[SHULHQFHZLWKPDNLQJZHESDJHVVRFRQVLVWHGRI0\+RPH3DJHVLWHVDQG
FRPSDQ\PDUNHWLQJLQIRUPDWLRQ$IWHUZDUGV3HUODQG&ZHUHODQJXDJHVXVHGRQ
WKHZHEVHUYHUWRSURYLGHG\QDPLFFRQWHQW6RRQPRVWODQJXDJHVLQFOXGLQJ
9LVXDOEDVLF'HOSKL&DQG-DYDFRXOGEHXVHGWRZULWHDSSOLFDWLRQVWKDW
SURYLGHGG\QDPLFFRQWHQWXVLQJGDWDIURPWH[WILOHVRUGDWDEDVHUHTXHVWV7KHVH
ZHUHNQRZQDV&*,VHUYHUVLGHDSSOLFDWLRQV$63ZDVGHYHORSHGE\0LFURVRIWWR
DOORZ+70/GHYHORSHUVWRHDVLO\SURYLGHG\QDPLFFRQWHQWVXSSRUWHGDVVWDQGDUG
E\0LFURVRIW¶VIUHH:HE6HUYHU,QWHUQHW,QIRUPDWLRQ6HUYHU ,,6 -63LVWKH
HTXLYDOHQWIURP6XQ0LFURV\VWHPVDFRPSDULVRQRI$63DQG-63ZLOOEH
SUHVHQWHGLQWKHIROORZLQJVHFWLRQ
7KHIROORZLQJGLDJUDPVKRZVDZHEVHUYHUWKDWVXSSRUWV-63ILOHV1RWLFHWKDWWKH
ZHEVHUYHUDOVRLVFRQQHFWHGWRDGDWDEDVH
7\SLFDO:HEVHUYHU :HE
&OLHQW
VXSSRUWLQJ-63 VHUYHU
0DF26
,17(51(7
'$7$%$6(
/LQX[ -63
6HUYOHW
(QJLQH 2UDFOH
-63ILOHV 'DWDEDVH
VWRUHGKHUH 8QL[
$SDFKH:HEVHUYHU
:LQGRZV
-63VRXUFHFRGHUXQVRQWKHZHEVHUYHULQWKH-636HUYOHW(QJLQH7KH-63
6HUYOHWHQJLQHG\QDPLFDOO\JHQHUDWHVWKH+70/DQGVHQGVWKH+70/RXWSXWWRWKH
FOLHQW¶VZHEEURZVHU
:K\XVH-63"
-63LVHDV\WROHDUQDQGDOORZVGHYHORSHUVWRTXLFNO\SURGXFHZHEVLWHVDQG
DSSOLFDWLRQVLQDQRSHQDQGVWDQGDUGZD\-63LVEDVHGRQ-DYDDQREMHFW
RULHQWHGODQJXDJH-63RIIHUVDUREXVWSODWIRUPIRUZHEGHYHORSPHQW
0DLQUHDVRQVWRXVH-63
0XOWLSODWIRUP
&RPSRQHQWUHXVHE\XVLQJ-DYDEHDQVDQG(-%
$GYDQWDJHVRI-DYD
<RXFDQWDNHRQH-63ILOHDQGPRYHLWWRDQRWKHUSODWIRUPZHEVHUYHURU-63
6HUYOHWHQJLQH
0RYLQJ-63ILOHIURPRQH
SODWIRUPWRDQRWKHU
:HEVHUYHU :HEVHUYHU
0LFURVRIW,,6 $SDFKH
0RYLQJ-63ILOHV
-63 -63
6HUYOHW 6HUYOHW
(QJLQH (QJLQH
0LFURVRIW17
7KLVPHDQV\RXDUHQHYHUORFNHGLQWRRQHYHQGRURUSODWIRUP 8QL[
-636HUYOHW(QJLQH-581 -636HUYOHW(QJLQH7RPFDW
+70/DQGJUDSKLFVGLVSOD\HGRQWKHZHEEURZVHUDUHFODVVHGDVWKHSUHVHQWDWLRQ
OD\HU7KH-DYDFRGH -63 RQWKHVHUYHULVFODVVHGDVWKHLPSOHPHQWDWLRQ
%\KDYLQJDVHSDUDWLRQRISUHVHQWDWLRQDQGLPSOHPHQWDWLRQZHEGHVLJQHUVZRUN
RQO\RQWKHSUHVHQWDWLRQDQG-DYDGHYHORSHUVFRQFHQWUDWHRQLPSOHPHQWLQJWKH
DSSOLFDWLRQ
-63FRPSDUHGWR$63
-63DQG$63DUHIDLUO\VLPLODULQWKHIXQFWLRQDOLW\WKDWWKH\SURYLGH-63PD\KDYH
VOLJKWO\KLJKHUOHDUQLQJFXUYH%RWKDOORZHPEHGGHGFRGHLQDQ+70/SDJH
VHVVLRQYDULDEOHVDQGGDWDEDVHDFFHVVDQGPDQLSXODWLRQ:KHUHDV$63LVPRVWO\
IRXQGRQ0LFURVRIWSODWIRUPVLH17-63FDQRSHUDWHRQDQ\SODWIRUPWKDW
FRQIRUPVWRWKH-((VSHFLILFDWLRQ-63DOORZFRPSRQHQWUHXVHE\XVLQJ
-DYDEHDQVDQG(-%V$63SURYLGHVWKHXVHRI&20$FWLYH;FRQWUROV
-63FRPSDUHGWR6HUYOHWV
$6HUYOHWLVD-DYDFODVVWKDWSURYLGHVVSHFLDOVHUYHUVLGHVHUYLFH,WLVKDUGZRUN
WRZULWH+70/FRGHLQ6HUYOHWV,Q6HUYOHWV\RXQHHGWRKDYHORWVRISULQWOQ
VWDWHPHQWVWRJHQHUDWH+70/
-63DUFKLWHFWXUH
-63VDUHEXLOWRQWRSRI681¶VVHUYOHWWHFKQRORJ\-63VDUHHVVHQWLDODQ+70/
SDJHZLWKVSHFLDO-63WDJVHPEHGGHG7KHVH-63WDJVFDQFRQWDLQ-DYDFRGH7KH
-63ILOHH[WHQVLRQLVMVSUDWKHUWKDQKWPRUKWPO7KH-63HQJLQHSDUVHVWKHMVS
DQGFUHDWHVD-DYDVHUYOHWVRXUFHILOH,WWKHQFRPSLOHVWKHVRXUFHILOHLQWRDFODVV
ILOHWKLVLVGRQHWKHILUVWWLPHDQGWKLVZK\WKH-63LVSUREDEO\VORZHUWKHILUVW
WLPHLWLVDFFHVVHG$Q\WLPHDIWHUWKLVWKHVSHFLDOFRPSLOHGVHUYOHWLVH[HFXWHG
DQGLVWKHUHIRUHUHWXUQVIDVWHU
:HE6HUYHU
:HE%URZVHU -63
:HEEURZVHU5HTXHVW -63UHTXHVWVHQWWR:HEVHUYHU )LOH
6HQGWR-636HUYOHW(QJLQH
+70/VHQWWREURZVHU
-636HUYOHW(QJLQH
3DUVH-63ILOH
,17(51(7 *HQHUDWH6HUYOHW
VRXUFHFRGH
&RPSLOH6HUYOHW
VRXUFHFRGHLQWR
FODVV
,QVWDQWLDWH6HUYOHW
+70/ 6HUYOHWRXWSXW
6WHSVUHTXLUHGIRUD-63UHTXHVW
7KHXVHUJRHVWRDZHEVLWHPDGHXVLQJ-637KHXVHUJRHVWRD-63SDJH
HQGLQJZLWKMVS 7KHZHEEURZVHUPDNHVWKHUHTXHVWYLDWKH,QWHUQHW
7KH-63UHTXHVWJHWVVHQWWRWKH:HEVHUYHU
7KH:HEVHUYHUUHFRJQLVHVWKDWWKHILOHUHTXLUHGLVVSHFLDO MVS WKHUHIRUH
SDVVHVWKH-63ILOHWRWKH-636HUYOHW(QJLQH
,IWKH-63ILOHKDVEHHQFDOOHGWKHILUVWWLPHWKH-63ILOHLVSDUVHG
RWKHUZLVHJRWRVWHS
7KHQH[WVWHSLVWRJHQHUDWHDVSHFLDO6HUYOHWIURPWKH-63ILOH$OOWKH
+70/UHTXLUHGLVFRQYHUWHGWRSULQWOQVWDWHPHQWV
7KH6HUYOHWVRXUFHFRGHLVFRPSLOHGLQWRDFODVV
7KH6HUYOHWLVLQVWDQWLDWHGFDOOLQJWKHLQLW DQGVHUYLFH PHWKRGV
+70/IURPWKH6HUYOHWRXWSXWLVVHQWYLDWKH,QWHUQHW
+70/UHVXOWVDUHGLVSOD\HGRQWKHXVHU¶VZHEEURZVHU
&UHDWLQJ\RXUILUVW-63SDJH
KWPO!
KHDG!
WLWOH!0\ILUVW-63SDJH
WLWOH!
KHDG!
ERG\!
#SDJHODQJXDJH ´MDYD´!
7\SHWKHFRGHDERYHLQWRDWH[WILOH1DPHWKHILOHKHOORZRUOGMVS
3ODFHWKLVLQWKHFRUUHFWGLUHFWRU\RQ\RXU-63ZHEVHUYHUDQGFDOOLWYLD\RXU
EURZVHU
8VLQJ-63WDJV
7KHUHDUHILYHPDLQWDJV
'HFODUDWLRQWDJ
([SUHVVLRQWDJ
'LUHFWLYH7DJ
6FULSWOHWWDJ
$FWLRQWDJ
'HFODUDWLRQWDJ !
7KLVWDJDOORZVWKHGHYHORSHUWRGHFODUHYDULDEOHVRUPHWKRGV
%HIRUHWKHGHFODUDWLRQ\RXPXVWKDYH
$WWKHHQGRIWKHGHFODUDWLRQWKHGHYHORSHUPXVWKDYH!
&RGHSODFHGLQWKLVWDJPXVWHQGLQDVHPLFRORQ
'HFODUDWLRQVGRQRWJHQHUDWH RXWSXWVRDUHXVHGZLWK-63H[SUHVVLRQVRU
VFULSWOHWV
)RU([DPSOH
SULYDWHLQWFRXQWHU
SULYDWH6WULQJJHW$FFRXQW LQWDFFRXQW1R
!
([SUHVVLRQWDJ !
7KLVWDJDOORZVWKHGHYHORSHUWRHPEHGDQ\-DYDH[SUHVVLRQDQGLVVKRUWIRU
RXWSULQWOQ
)RUH[DPSOHWRVKRZWKHFXUUHQWGDWHDQGWLPH
7KHUHDUHWKUHHPDLQW\SHVRIGLUHFWLYHV
SDJH± SURFHVVLQJLQIRUPDWLRQIRUWKLVSDJH
,QFOXGH± ILOHVWREHLQFOXGHG
7DJOLEUDU\± WDJOLEUDU\WREHXVHGLQWKLVSDJH
'LUHFWLYHVGRQRWSURGXFHDQ\YLVLEOHRXWSXWZKHQWKHSDJHLVUHTXHVWHGEXW
FKDQJHWKHZD\WKH-63(QJLQHSURFHVVHVWKHSDJH
)RUH[DPSOH\RXFDQPDNHVHVVLRQGDWDXQDYDLODEOHWRDSDJHE\VHWWLQJDSDJH
GLUHFWLYH VHVVLRQ WRIDOVH
3DJHGLUHFWLYH
7KLVGLUHFWLYHKDVRSWLRQDODWWULEXWHVWKDWSURYLGHWKH-63(QJLQHZLWKVSHFLDO
SURFHVVLQJLQIRUPDWLRQ7KHIROORZLQJWDEOHOLVWVWKHGLIIHUHQWDWWULEXWHVZLWKD
EULHIGHVFULSWLRQ
7KHIROORZLQJSDFNDJHVDUH
LPSOLFLWO\LPSRUWHG
MDYDODQJ
MDYD[VHUYOHW
MDYD[VHUYOHWMVS
MDYD[VHUYOHWKWWS
VHVVLRQ 'RHVWKHSDJHPDNHXVHRI 'HIDXOWLVVHWWRWUXH
VHVVLRQV%\GHIDXOWDOO-63SDJHV
KDYHVHVVLRQGDWDDYDLODEOH
7KHUHDUHSHUIRUPDQFHEHQHILWV
WRVZLWFKLQJVHVVLRQWRIDOVH
EXIIHU &RQWUROVWKHXVHRIEXIIHUHG #SDJHEXIIHU ³QRQH´!
RXWSXWIRUD-63SDJH'HIDXOWLV
NE
DXWR)OXVK )OXVKRXWSXWEXIIHUZKHQIXOO #SDJHDXWR)OXVK ³WUXH´!
LV7KUHDG6DIH &DQWKHJHQHUDWHG6HUYOHWGHDO
ZLWKPXOWLSOH UHTXHVWV",IWUXHD
QHZWKUHDGLVVWDUWHGVRUHTXHVWV
DUHKDQGOHGVLPXOWDQHRXVO\
LQIR 'HYHORSHUXVHVLQIRDWWULEXWHWR
DGGLQIRUPDWLRQGRFXPHQWIRUD
<%@ page info =
SDJH7\SLFDOO\XVHGWRDGG
"CS@SIUCS Department.
DXWKRUYHUVLRQFRS\ULJKWDQG
Programming Distributed Apps. " %>
GDWHLQIR
HUURU3DJH 'LIIHUHQWSDJHWRGHDOZLWK #SDJHHUURU3DJH
´
HUURUV0XVWEH85/WRHUURU ³HUURUHUURUMVS´!
SDJH
,V(UURU3DJH 7KLVIODJLVVHWWRWUXHWRPDNHD
-63SDJHDVSHFLDO(UURU3DJH
7KLVSDJHKDVDFFHVVWRWKH
LPSOLFLWREMHFWH[FHSWLRQ VHH
ODWHU
FRQWHQW7\SH 6HWWKHPLPHW\SHDQGFKDUDFWHU
VHWRIWKH-63
,QFOXGHGLUHFWLYH
$OORZVD-63GHYHORSHUWRLQFOXGHFRQWHQWVRIDILOHLQVLGHDQRWKHU7\SLFDOO\
LQFOXGHILOHVDUHXVHGIRUQDYLJDWLRQWDEOHVKHDGHUVDQGIRRWHUVWKDWDUHFRPPRQ
WRPXOWLSOHSDJHV
7ZRH[DPSOHVRIXVLQJLQFOXGHILOHV
7KLVLQFOXGHVWKHKWPOIURPSULYDF\KWPOIRXQGLQWKHLQFOXGHGLUHFWRU\LQWRWKH
FXUUHQWMVSSDJH
#LQFOXGHILOH ³LQFOXGHSULYDF\KWPO!
#LQFOXGHILOH ³QDYLJDWLRQMVS!
7DJ/LEGLUHFWLYH
$WDJOLELVDFROOHFWLRQRIFXVWRPWDJVWKDWFDQEHXVHGE\WKHSDJH
&XVWRPWDJVZHUHLQWURGXFHGLQ-63DQGDOORZ-63GHYHORSHUVWRKLGHFRPSOH[
VHUYHUVLGHFRGHIURPZHEGHVLJQHUV
6FULSWOHWWDJ «!
%HWZHHQDQG!WDJVDQ\YDOLG-DYDFRGHLVFDOOHGD6FULSWOHW7KLVFRGHFDQ
DFFHVVDQ\YDULDEOHRUEHDQGHFODUHG
)RUH[DPSOHWRSULQWDYDULDEOH
!
$FWLRQWDJ
7KHUHDUHWKUHHPDLQUROHVRIDFWLRQWDJV
HQDEOHWKHXVHRIVHUYHUVLGH-DYDEHDQV
WUDQVIHUFRQWUROEHWZHHQSDJHV
EURZVHULQGHSHQGHQWVXSSRUWIRUDSSOHWV
-DYDEHDQV
$-DYDEHDQLVDVSHFLDOW\SHRIFODVVWKDWKDVDQXPEHURIPHWKRGV7KH-63SDJH
FDQFDOOWKHVHPHWKRGVVRFDQOHDYHPRVWRIWKHFRGHLQWKHVH-DYDEHDQV)RU
H[DPSOHLI\RXZDQWHGWRPDNHDIHHGEDFNIRUPWKDWDXWRPDWLFDOO\VHQWRXWDQ
HPDLO%\KDYLQJD-63SDJHZLWKDIRUPZKHQWKHYLVLWRUSUHVVHVWKHVXEPLW
EXWWRQWKLVVHQGVWKHGHWDLOVWRD-DYDEHDQWKDWVHQGVRXWWKHHPDLO7KLVZD\
WKHUHZRXOGEHQRFRGHLQWKH-63SDJHGHDOLQJZLWKVHQGLQJHPDLOV -DYD0DLO
$3, DQG\RXU-DYDEHDQFRXOGEHXVHGLQDQRWKHUSDJH SURPRWLQJUHXVH
7RXVHD-DYDEHDQLQD-63SDJHXVHWKHIROORZLQJV\QWD[
7KHIROORZLQJLVDOLVWRI-DYDEHDQVFRSHV
SDJH± YDOLGXQWLOSDJHFRPSOHWHV
UHTXHVW± EHDQLQVWDQFHODVWVIRUWKHFOLHQWUHTXHVW
VHVVLRQ± EHDQODVWVIRUWKHFOLHQWVHVVLRQ
DSSOLFDWLRQ± EHDQLQVWDQFHFUHDWHGDQGODVWVXQWLODSSOLFDWLRQHQGV
'\QDPLF-63,QFOXGH
<RXKDYHVHHQKRZDILOHFDQEHLQFOXGHGLQWRD-63XVLQJDQ ,QFOXGH'LUHFWLYH
#LQFOXGHILOH ³LQFOXGHSULYDF\KWPO!
7KLVLVXVHIXOIRULQFOXGLQJFRPPRQSDJHVWKDWDUHVKDUHGDQGLVLQFOXGHGDW
FRPSLOHWLPH
7RLQFOXGHDSDJHDWUXQWLPH\RXVKRXOGXVHG\QDPLF-63LQFOXGHV
)RUWKHVHFRQGH[DPSOHZHZLOOPDNHXVHRIWKHGLIIHUHQWWDJVZHKDYHOHDUQW
7KLVH[DPSOHZLOOGHFODUHWZRYDULDEOHVRQHVWULQJXVHGWRVWRUHGWKHQDPHRID
ZHEVLWHDQGDQLQWHJHUFDOOHGFRXQWHUWKDWGLVSOD\VWKHQXPEHURIWLPHVWKHSDJH
KDVEHHQDFFHVVHG7KHUHLVDOVRDSULYDWHPHWKRGGHFODUHGWRLQFUHPHQWWKH
FRXQWHU7KHZHEVLWHQDPHDQGFRXQWHUYDOXHDUHGLVSOD\HG
+70/!
+($'!
7,7/(!-63([DPSOH7,7/(!
+($'!
%2'<!-63([DPSOH
%5!
String sitename = "Programming Distributed Applications";
LQWFRXQWHU
private void incrementCounter()
^
FRXQWHU
`
!
:HEVLWHRIWKHGD\LV
VLWHQDPH!
%5!
SDJHDFFHVVHG
FRXQWHU!
%2'<!
+70/!
,PSOLFLW2EMHFWV
6RIDUZHNQRZWKDWWKHGHYHORSHUFDQFUHDWH-DYDEHDQVDQGLQWHUDFWZLWK-DYD
REMHFWV7KHUHDUHVHYHUDOREMHFWVWKDWDUHDXWRPDWLFDOO\DYDLODEOHLQ-63FDOOHG
LPSOLFLWREMHFWV
7KHLPSOLFLWREMHFWVDUH
9DULDEOH 2IW\SH
UHTXHVW MDYD[VHUYOHWKWWSKWWSVHUYOHWUHTXHVW
UHVSRQVH MDYD[VHUYOHWKWWSKWWSVHUYOHWUHVSRQVH
RXW MDYD[VHUYOHWMVSMVSZULWHU
VHVVLRQ MDYD[VHUYOHWKWWSKWWSVHVVLRQ
SDJHFRQWHQW MDYD[VHUYOHWMVSSDJHFRQWH[W
DSSOLFDWLRQ MDYD[VHUYOHWKWWSVHUYOHWFRQWH[W
FRQILJ MDYD[VHUYOHWKWWSVHUYOHWFRQILJ
SDJH MDYDODQJREMHFW
H[FHSWLRQ MDYDODQJWKURZDEOH
SDJHREMHFW
5HSUHVHQWVWKH-63SDJHDQGLVXVHGWRFDOODQ\PHWKRGVGHILQHGE\WKHVHUYOHW
FODVV
FRQILJREMHFW
6WRUHVWKH6HUYOHWFRQILJXUDWLRQGDWD
UHTXHVWREMHFW
$FFHVVWRLQIRUPDWLRQDVVRFLDWHGZLWKDUHTXHVW7KLVREMHFWLVQRUPDOO\XVHGLQ
ORRNLQJXSSDUDPHWHUYDOXHVDQGFRRNLHV
7KLVFRGHVQLSSHWLVVWRULQJWKHSDUDPHWHU³GHY´LQWKH VWULQJGHY6WU7KHUHVXOWLV
GLVSOD\HGXQGHUQHDWK
7KHVHVVLRQREMHFWLVFRYHUHGLQGHWDLOLQWKHQH[WVHFWLRQ
6HVVLRQ7UDFNLQJLQ-63 6HVVLRQ2EMHFW
6D\IRUH[DPSOH\RXZRXOGOLNHWRLPSOHPHQWDVKRSSLQJFDUWXVLQJ-637KHUH
DUHVHYHUDORSWLRQV\RXFRXOGFRQVLGHU
x &RRNLHV ± DVPDOOWH[WILOHVWRUHGRQWKHFOLHQW¶VPDFKLQH&RRNLHVFDQEH
GLVDEOHGLQWKHEURZVHUVHWWLQJVVRDUHQRWDOZD\VDYDLODEOH
x 85/UHZULWLQJ ± VWRUHVHVVLRQLQIRUPDWLRQLQWKH85/:RUNVZKHQ
FRRNLHVDUHQRWVXSSRUWHGEXWFDQPDNHERRNPDUNLQJRIZHESDJHVD
SUREOHPEHFDXVHWKH\KDYHVHVVLRQVSHFLILFLQIRUPDWLRQDWWKHHQGRID
85/
x +LGGHQIRUPILHOGV ± +70/KLGGHQHGLWER[HVVXFKDV,1387
7<3( ´+,''(1´1$0( ´86(51$0(´9$/8( ´«³!(YHU\SDJHKDVWR
EHG\QDPLFDOO\SURGXFHGZLWKWKHYDOXHVLQWKHKLGGHQILHOG
x 6HVVLRQREMHFWV ± -63,PSOLFLWREMHFW
$VHVVLRQREMHFWXVHVDNH\YDOXHFRPELQDWLRQWRVWRUHLQIRUPDWLRQ
7RUHWULHYHLQIRUPDWLRQIURPDVHVVLRQ
VHVVLRQJHW9DOXH ³YLVLWFRXQWHU´
7KHUHWXUQW\SHRIWKHPHWKRG JHW9DOXHLV2EMHFWVR\RXZLOOQHHGWRW\SHFDVWWR
JHWWKHUHTXLUHGYDOXH,IWKHUHLVQRWDVHVVLRQNH\ZLWKWKDWQDPHDQXOOLV
UHWXUQHG
7RVHWDVHVVLRQNH\ZLWKDYDOXH
VHVVLRQSXW9DOXH ³YLVLWFRXQWHU´WRWDOYLVLWV
7KHWKLUG-63H[DPSOHLQ WKLVWXWRULDOGHPRQVWUDWHVWKHXVHRIWKHVHVVLRQREMHFW
-63&RPPHQWV -63FRPPHQW!
-63FRPPHQWVDUHVLPLODUWR+70/FRPPHQWV +70/&RPPHQW!H[FHSW
-63FRPPHQWVDUHQHYHUVHQWWRWKHXVHU¶VEURZVHU+70/FRPPHQWVDUHYLVLEOH
LQWKHSDJHVRXUFH
KWPO!
KHDG!
WLWOH!
+70/DQG-63&RPPHQWV
WLWOH!
KHDG!
ERG\!
K!
FRPPHQWV
K!
ERG\!
KWPO!
JSP - EXCEPTION HANDLING
http://www.tutorialspoint.com/jsp/jsp_exception_handling.htm Copyright © tutorialspoint.com
When you are writing JSP code, a programmer may leave a coding errors which can occur at any
part of the code. You can have following type of errors in your JSP code:
Runtime exceptions: A runtime exception is an exception that occurs that probably could
have been avoided by the programmer. As opposed to checked exceptions, runtime
exceptions are ignored at the time of compliation.
Errors: These are not exceptions at all, but problems that arise beyond the control of the
user or the programmer. Errors are typically ignored in your code because you can rarely do
anything about an error. For example, if a stack overflow occurs, an error will arise. They are
also ignored at the time of compilation.
This tutorial will give you few simple and elegant ways to handle run time exception/error occuring
in your JSP code.
Returns a detailed message about the exception that has occurred. This message is
initialized in the Throwable constructor.
Returns the name of the class concatenated with the result of getMessage
Prints the result of toString along with the stack trace to System.err, the error output
stream.
Returns an array containing each element on the stack trace. The element at index 0
represents the top of the call stack, and the last element in the array represents the
method at the bottom of the call stack.
Fills the stack trace of this Throwable object with the current stack trace, adding to any
previous information in the stack trace.
JSP gives you an option to specify Error Page for each JSP. Whenever the page throws an exception,
the JSP container automatically invokes the error page.
Following is an example to specifiy an error page for a main.jsp. To set up an error page, use the
<%@ page errorPage="xxx" %> directive.
<html>
<head>
<title>Error Handling Example</title>
</head>
<body>
<%
// Throw an exception to invoke the error page
int x = 1;
if (x == 1)
{
throw new RuntimeException("Error condition!!!");
}
%>
</body>
</html>
Now you would have to write one Error Handling JSP ShowError.jsp, which is given below. Notice
that the error-handling page includes the directive <%@ page isErrorPage="true" %>. This
directive causes the JSP compiler to generate the exception instance variable.
Opps...
Sorry, an error occurred.
OPPS...
URI: /main.jsp
Stack trace:
org.apache.jsp.main_jsp._jspService(main_jsp.java:65)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
...................
Using Try...Catch Block:
If you want to handle errors with in the same page and want to take some action instead of firing
an error page, you can make use of try....catch block.
Following is a simple example which shows how to use try...catch block. Let us put following code in
main.jsp:
<html>
<head>
<title>Try...Catch Example</title>
</head>
<body>
<%
try{
int i = 1;
i = i / 0;
out.println("The answer is " + i);
}
catch (Exception e){
out.println("An exception occurred: " + e.getMessage());
}
%>
</body>
</html>
Tomcat Application
Server
JDBC
Requests Responses
Database
Fig: 3-tier Architecture
• For Database Connectivity we write the following code in jsp
page.
Open Connectivity Code:
<%@page language=“java” import=“java.sql.*”%>
<%
// Load driver class file of Oracle
class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection con=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","system","password");
// Load driver class file of MySql
class.forName(“com.mysql.jdbc.Driver”);
Connection con=DriverManager.getConnection(
" jdbc:mysql://localhost:3306/TestDb",“root",“root");
%>
Statement Code:
<%
// Create the statement
Statement stmt=conn.CreateStatement();
String query=“SELECT * from students”
stmt.executeQuery(query);
%>
Close connectivity Code:
<%
// Close the Statement
stmt.close();
// Close the connection
conn.close();
%>
Example: Registration.html
<html >
<head> <title>Registration</title> </head>
<body>
<form action="reg.jsp" method="post">
Email :<input type="text" name="email" /><br/>
First name :<input type="text" name="fname" /><br/>
Last name :<input type="text" name="lname" /><br/>
User name :<input type="text" name="userid" /><br/>
password :<input type="password" name="pwd" /><br/>
<input type="submit" />
</form>
</body>
</html>
reg.jsp
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%
String user=request.getParameter("userid");
String pwd=request.getParameter("pwd");
String fname=request.getParameter("fname");
String lname=request.getParameter("lname");
String email=request.getParameter("email");
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:xe","system","system");
Statement st= con.createStatement();
String query="insert into users values
('"+user+"','"+pwd+"','"+fname+"','"+lname+"','"+email+"')“;
st.executeUpdate(query);
st.close();
con.close();
out.println("registration successfull");
%>
Output: