7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 1/129
1
Hand-on
Exercises
การเขยนโปรแกรมเวบJava Servlet / JSP
โดยใช
Eclipse and TomCat
Assoc.Prof.Dr.Thanachart NmnondaSoft!are Par" Thailand
andAsst Prof.Thanisa #ra!aisa$a!an
#in% &on%"t's (nstitte of Technolo%$ )ad"ra*an%
April +,
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 2/129
2
สารบัญ!ercise 1 การสรางโปรเจค "e# A$$lication และไฟล %T&'..........................................................................(
1.สราง A$$lication Server .................................................................................................................(2.สรางโปรเจค "e# A$$lication............................................................................................................. ().พัฒนาโปรแกรม add*ustomer.html ...................................................................................................... (1.1 สราง A$$lication Server............................................................................................................... (1.2 การสราง "e# A$$lication Pro+ect..................................................................................................,1.) การพัฒนาโปรแกรม add*ustomer.html................................................................................................ -1. การทดสอบโปรแกรม...........................................................................................................................12
!ercise 2 การเขยนโปรแกรม Java Servlet เพ !ออ"านค"าพาราม#เ$อร..........................................................................12.1 การพัฒนาโปรแกรม *ustomerServlet.+ava......................................................................................... 1
2.1.1 การอ"านค"าพาราม#เ$อรจาก add*ustomer.html ...............................................................................12.1.2 การแสดงรายละเอยดของค"า$"าง%.......................................................................................................1(
2.2 ขั &น$อนการพัฒนาโปรแกรม *ustomerServlet.+ava ................................................................................1,2.) การทดสอบโปรแกรม...........................................................................................................................1-2. การปรับปร'งโปรแกรมเพ !อ()เรยกไฟล add*ustomer.html เม !อเร# !ม$น และ ()แสดง*ล+า,าไทย-.ก$อง............................2
!ercise ) โปรแกรมเ/บส0)รับการท0โพล.........................................................................................................2)).1 โปรแกรม vote.html....................................................................................................................... 2)).2 การพัฒนาโปรแกรม 0oteServlet.+ava................................................................................................. 2)
).2.1 ก0)นด$/ัแปร counter และ lan ............................................................................................... 2).2.2 อ"านค"าพาราม#เ$อร$"าง%ท !ส"งมาจาก vote.html และท0การประม/ล*ล............................................................2).2.) การแสดง*ลการโ)/$...................................................................................................................2
).) ขั &น$อนการพัฒนาโปรเจค 0oter ............................................................................................................2(). การปรับปร'งโปรแกรม 0oteServlet.+ava...............................................................................................)
)..1 ก0)นด$/ัแปร voters................................................................................................................))..2 การอ"าน)มายเลขไอพของ*. (1.......................................................................................................... )
!ercise การเ1 !อม$"อกับ &yS' Data#ase.............................................................................................)2.1 การจัดการ Ta#le เป2ดโปรแกรม &yS' "or3#ench....................................................................................................... )2.2 การสราง$าราง #oo3s....................................................................................................................... )).) การ(1ค0สั !ง S' (น &yS' "or34ench........................................................................................)(
!ercise ( การพัฒนาโปรแกรมเ/บ เพ !อ$#ด$"อกับ3านขอม.ล........................................................................................)5(.1 การ *onfi A$ache Tomcat ()สามาร-(1งาน JD4* Driver...............................................................)5(.2 การสราง "e# A$$lication Pro+ect................................................................................................ )-
(.) การพัฒนาโปรแกรม add4oo3.html.....................................................................................................)-(. การพัฒนาโปรแกรม than3you.html.................................................................................................... (.( การพัฒนาโปรแกรม Add4oo3Servlet.+ava.........................................................................................
(.(.1 การอ"านค"าพาราม#เ$อรจาก add4oo3.html ......................................................................................(.(.2 การเ1 !อม$"อกับ3านขอม.ล...............................................................................................................1(.(.) เพ# !มราย1 !อ)นังสอ()ม"ลง(น3านขอม.ล ................................................................................................ )(.(. การเรยกเ/บเพจ than3you.html ................................................................................................ )
(., ขั &น$อนการพัฒนาโปรแกรม Add4oo3Servlet.+ava ................................................................................(.5 ทดสอบโปรแกรม...............................................................................................................................,
!ercise , โปรแกรมเ/บเพ !อสา4#$ขอบเข$ของออปเจค............................................................................................ -,.1 การพัฒนาโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ 7e8uest .....................................................................-
,.1.1 ขั &น$อนการพัฒนาโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ 7e8uest .....................................................(,.1.2 ขั &น$อนการทดสอบโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ 7e8uest.................................................... (1
,.2 การพัฒนาโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ Session ......................................................................(2,.2.1 ขั &น$อนการพัฒนาโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ Session .....................................................(
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 3/129
)
,.2.2 ขั &น$อนการทดสอบโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ Session ....................................................(,.) การพัฒนาโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ A$$lication................................................................((
,.).1 ขั &น$อนการพัฒนาโปรแกรมเพ !อสา4#$ขอบเข$ของ A$$lication................................................................. (5,.).2 ขั &น$อนการทดสอบโปรแกรมเพ !อสา4#$ขอบเข$ของ 6#+ect แบบ A$$lication.............................................. (5
!ercise 5 การพัฒนา "e#4ase D4 โดยคลาสประเ+ท "e# 'istener............................................................... (-5.1 การพัฒนาโปรแกรม 9nit.+ava.............................................................................................................. (-5.2 การปรับปร'งโปรแกรม Add4oo3Servlet.+ava ......................................................................................,15.) ทดสอบโปรแกรม...............................................................................................................................,)
!ercise - การพัฒนาโปรแกรม Servlet :ilter ...............................................................................................,-.1 การพัฒนาโปรแกรม Servlet :ilter.......................................................................................................,-.2 การเขยน)นา 'oin......................................................................................................................... ,(-.) การเขยน Servlet :ilter.................................................................................................................. ,5-. การเขยนโปรแกรม ShowServlet ........................................................................................................5-.( ขั &น$อนการทดสอบโปรแกรม ..................................................................................................................52
!ercise ; การเขยนโปรแกรม JSP เพ !อแสดง*ลลพั4.............................................................................................5)
;.1 การพัฒนาโปรแกรม hello.+s$............................................................................................................. 5);.2 การพัฒนาโปรแกรม view4oo3.+s$.....................................................................................................5
;.2.1 การก0)นด Ta 'i#rary.......................................................................................................... 5;.2.2 การก0)นด Datasource........................................................................................................... 5;.2.) การ(1ค0สั !ง c<forach เพ !อแสดง*ล .............................................................................................. 5(
!ercise 1 การพัฒนาโปรแกรมเ/บ 6nline 4oo3 Store.................................................................................551.1 การพัฒนาโปรแกรม select4oo3s.+s$.................................................................................................551.2 การพัฒนาโปรแกรม 4oo3.+ava......................................................................................................... -11.) การพัฒนาโปรแกรม *art.+ava........................................................................................................... -1. การพัฒนาโปรแกรม ProcessSelection.+ava.......................................................................................-(
1.( การพัฒนาโปรแกรม 9nit.+ava ........................................................................................................... -51., การพัฒนาโปรแกรม view*art.+s$..................................................................................................... --1.5 ขั &น$อนการทดสอบโปรแกรม ................................................................................................................-;
!ercise 11 การสราง *ustom Tas ส0)รับโปรแกรม JSP............................................................................... ;11.1 การพัฒนาโปรแกรม hello.+s$............................................................................................................ ;11.2 การพัฒนาโปรแกรม helloTa.+s$...................................................................................................... ;2
11.2.1 สรางไฟล Java *lassTa %andler.........................................................................................;)11.2.2 สราง Ta 'i#rary Descri$tor............................................................................................. ;(11.2.) เขยนโปรแกรม helloTa.+s$.................................................................................................... ;5
11.) การพัฒนาโปรแกรม helloJST'.+s$................................................................................................... ;-11. การพัฒนาโปรแกรม helloTa:ile.+s$................................................................................................;;
11..1 สราง Ta :ile.....................................................................................................................;;11..2 เขยนโปรแกรม helloTa:ile.+s$............................................................................................11
!ercise 12 การพัฒนาโปรแกรมเ/บโดย(1 Strut :ramewor3 ..........................................................................1212.1 การสรางโปรเจค StrutsD4A$$ (นร.ปแบบ Struts :ramewor3s...........................................................1)12.2 การพัฒนาโปรแกรม add4oo3.+s$................................................................................................... 112.) การพัฒนาโปรแกรม 4oo3:orm4ean.+ava และ Add4oo3Action......................................................1,
12. การพัฒนาโปรแกรม Add4oo3Action.+ava......................................................................................1;12.( การพัฒนาโปรแกรม 9nit.+ava และ Than3you.html =0iew>................................................................11112., การพัฒนาไฟล struts?confi.!ml =*ontroller>.............................................................................. 11112.5 การทดสอบโปรแกรม.......................................................................................................................112
!ercise 1) การพัฒนาโปรแกรมเ/บโดย(1 JS: :ramewor3.............................................................................11
1).1 สรางโปรเจค JS:D4A$$............................................................................................................. 111).2 การพัฒนาโปรแกรม JS: &anaed 4ean.........................................................................................11,1).) สราง)นาจอรับ 9n$ut โดยสราง add4oo3.+s$ และ พัฒนาส"/น$ร/จสอบ@0alidation ขอม.ล.............................11-
1). สราง than3you.htmlB error.html.............................................................................................. 11;
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 4/129
1).( การก0)นด Pae Naviation...................................................................................................... 11;1)., การทดสอบโปรแกรม.......................................................................................................................122
!ercise 1 การ Authentication โดย(1 Tomcat .....................................................................................12)1.1 สราง "e# A$$lication Pro+ect................................................................................................ 12)
1.2 เพ# !ม Cser ของ Tomcat "e# Server...........................................................................................12)1.) การ *onfi ไฟล we#.!ml ของ "e# A$$lication ท !$องการ(1 Tomcat user .....................................121. การทดสอบโปรแกรมแบบ 4asic Authenticate...................................................................................12,1.( การปรับปร'งโปรแกรมเพ !อ() (1 'oin :orm........................................................................................ 1251., การทดสอบโปรแกรม แบบ :orm Authenticate.................................................................................. 12-1.5 การปรับปร'งโปรแกรม เพ !อ(1 Authenticate โดยอ"านจาก Data#ase &yS'.............................................. 12-1.- การทดสอบโปรแกรม แบบ Data#ase Authenticate............................................................................ 12;
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 5/129
(
Exercise 1 การสรางโปรเจค Web Application และไฟล HTML
แบบฝกหัดน จะเปนการสรางโปรเจค "e# A$$lication และพฒันาหนาเวบเพจเพ !ห"# !$ป%น&'#ล&ง
ล#กคา โด(พัฒนาดว()า*า %T&' +, งจะ-.หนาเปนส/วน0นพ12&งโปรแกร'เพ !ห"# !$ป%น&'#ล"/าน "e#
4rowser
ขั นตอนในการพัฒนาโปรแกรม 1. สราง A$$lication Server
2. สรางโปรเจค "e# A$$lication
). พัฒนาโปรแกร' add*ustomer.html
1.1 สราง Application Server
สรางเพ !ห cli$se ร# ว/าจะน. code - com$ile แลว 3ป De$loy ลง A$$lication Server - เปน Tomcat
เลก- TA4 Servers คล0ก&วา)า(!น "indow แลวเลก New Server ? เลก$ A$ache Tomcat
v,. Server และ 4rowse 3ป(งั folder Tomcat - 20ด2ั ง3ว
รปท 1.1 การ Config Eclipse เพอใหร จัก TOMCAT Application Server
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 6/129
,
1.2 การสราง Web Application Project
สรางโปรแกร' "e#?4ase A$$lication โด(การสราง Pro+ect !ห'/ '&ั น2นดงัน 1. เลกเ'น# :ile New Pro+ect
เลกร#ป :older $ "e# และเลก Dynamic "e# Pro+ect ดังร#ป- 1.2
รปท 1.1 การสรางโปรเจค Web Application
2. !หก.หนด Pro+ect Name E "e#A$$
ส/วนการเกบ :ile cli$se จะ!$ Directory - 4า'เ' ครั งเป5ด&, น'าเปน Default
แ2/ 4า2งการระบ1 กสา'าร4คล0กเคร งห'า(ก @Cnchec3 แลว-.การระบ1 Directory !ห'/ 3ด
จากนั นกด ป1 6' Ne!t ดงัร#ป- 1.2
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 7/129
5
รปท 1.2 การกหนดชอ Project
). แสดง :older - เกบ source code และ 6ut$ut folder @- เกบ *lass file
ค =directory - !ส/ก/นรัน cli$se>FsrcF และ =directory - !ส/ก/นรัน cli$se>F#uildFclassesF
ดงัร#ป- 1.) จากนั นกด ป1 6' Ne!t
รปท 1.3 แสดงทเกบ source coe และ Output irector!
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 8/129
-
. แสดง *onte!t root และ *ontent directory ดงัร#ป- 1. กด :inish
รปท 1." แสดงชอ Conte#t root และ Content irector!
1.) การพัฒนาโปร แกร' a dd*ustomer.html
โปรแกร' add*ustomer.html เปนเวบเพจ- !$แสดง7ร8'ส.หรับป%น&'#ลล#กคาแลว น.3ปบัน-,กลง9าน&'#ล customers โด('ร#ปแบบหนาจ %T&' - 2งสราง ดังร#ป- 1.(
@ส/วน&งโปรแกร'จะสราง!นแบบฝกหดั4ดั3ป
รปท 1.$
หนาเวบเพจ aCusto%er.&t%l
&ั น2นการพัฒนาโปรแกร' add*ustomer.html
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 9/129
;
1. เลกหนา2/าง Pro+ect แลวคล0 :ก&วา- โหนด "e#A$$ เลก New %T&' :ile ดงัร#ป 1.5
รปท 1.' การ ne( )ile *TM+
2. ก.หนด %T&' :ile Name< เปน add*ustomer แลวกด :inish ดงัร#ป 1.-
รปท 1., การสรางและตั งชอ )ile *TM+
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 10/129
1
). เ&(น source code -.3ด 2 ร#ปแบบคร#ปแบบ- 1 เ&(น2า' 'istin - 1.1
'istin - 1.1 โปรแกร' add*ustomer.html <html><head><title> Add Customer</title></head>
<body><H1> Add a new customer profile</H1> <form action="addCustomer.do" method="POST"> Customer ID : <input name="id" /> <br> ame: <input name="name" /> <br> !ddress: <tetarea name="addr" ro#s="$" co%s="&'"></tetarea> <br>
(obi%e: <input name="mobi%e" si)e="*" /> <br>+a: <input name="fa" si)e="*" /> <br>
,-mai%: <input name="emai%" si)e="&" /> <br><br> <input tpe="submit" 0a%ue="!dd" /> </form> </body>
</html>
ร#ปแบบ- 2 !หเ&(นหนาจ3ดง/า(&, นสา'าร4- จะลาก 9con ประเ)- %T&' :orms
- (# / !นหนา2/าง Palette 'า!ส/- หนาจ Desin 3ด โด(3'/2งเ&(น %T&' ดงัน ? ป5ดหนาจ %T&' เด0'? เลกหนา2/าง Pro+ect แลวคล0 :ก&วา- :ile add*ustomer.html
? เลก 6$en "ith และเลก- "e# Pae ditor ดงัร#ป 1.;
รปท 1.- การเลอกเป! *TM+ กั" Eitor ทเป#น esign vie(
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 11/129
11
? คล0กเลกพ น- ว/างส/วนบน&งหนาจ เลก Show และ Palette
รปท 1./ การเร$กใช *TM+ )or%s 0con ใน Palette Tools
? จะ3ด Ta# $ Palette (# /- หนาจดานล/าง คล0ก- %T&' . จะ' 9cons !หเลก สา'าร4- จะ Dra G Dro$ &, น3ปวางดานบนส1ด @ล.ดบั- ) ดังร#ป 1.11
และปรับค/า Attri#ute &ง 6#+ect นั น;โด( เลก- Ta# Pro$erties@Ta#4ัด3ป-าง&วา 3ด
รปท 1.1 การ rag an rop )or%s 0con %ปทหนา esign
1.4 การทดสอบโปรแกรม
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 12/129
12
1. De$loy "e# Pro+ect ส# / "e# A$$lication Server
โด(3ป- Ta# Server แลว *lic3 &วา- $ Tomcat v,. เลก Add and 7emove
รปท 1.11 การ rag an rop )or%s 0con %ปทหนา esign
จากนั นเลก "e#A$$ แลว กดป1 6' Add เพ เพ0 'เ&า3ป- "e# A$$lication Server และกด :inish
รปท 1.12 การ eplo! Project ส & Web Application Server
2. 7un โปรแกร' "e#A$$ โด(คล0 :ก&วา- add*ustomer.html 7un As 7un on Server
รปท 1.13 การรัน )ile ทตองการ Test
). จะ' !หเลกว/าจะ!หรัน file น - Server 3หน @กร<เราน ' Server เด(ว กด :inish
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 13/129
1)
รปท 1.1" การเลอก Web Application Server ทจะใชรัน
. จะ3ด"ลลัพ=8ดงั ร#ป- 1.1(
รปท 1.1$ ผลลพ!"ท#ดจากการรน )ile aCusto%er.&t%l
ห'า(เห21 สังเก2- -า( hostname จะห'า(เล&พร82 +, งกค $ort - Tomcat Server !หบร0การ(# / โด( Default จะเปน -- (กเวนว/าจะก.หนดห'า(เล& น
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 14/129
1
Exercise 2 การเขยนโปรแกรม Java Servlet เพ ออานคาพาราม!เ"อร
เน อหาทตอง'( ก)าก&อน การสรางโปรเจค "e# A$$lication และสราง37ล8 %T&'
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' Java Servlet เพ แสดงรา(ละเ(ด&งค/าพารา'0เ2ร8- "# !$ป%นเ&า'าก-างโปรแกร' "e# 4rowser และแสดง"ลการกก-าง "e# 4rowser
2.1 การพัฒนาโปรแกรม Csto!erServlet.java
โปรแกร' *ustomerServlet.+ava เปนโปรแกร'- 4#กเร(ก!$ โด( add*ustomer.html เ' "# !$กดป1 6' Add
โปรแกร'น จะ-.หนา- น.ค/าพารา'0เ2ร82/าง; - "# !$ป%น'าแสดง"ล โด('&ั น2นการ-.งานดงัน
1. /านค/าพารา'0เ2ร82/าง; - ส/ง'าจาก add*ustomer.html
2. แสดงรา(ละเ(ด&งค/า2/าง;
2.1.1 การอานคาพารามเตอรจาก a""Csto!er.#t!l
เวบเพจ add*ustomer.html จะส/ง&'#ล&งรา($ หนังส!ห'/"/าน'า-างพารา'0เ2ร82/าง; ดังน ● id รหัส&งล#กคา● name $ ล#กคา● addr - (# /ล#กคา● mo#ile ห'า(เล&โ-ร>พั-8'4● fa! ห'า(เล& fa!
● email &งล#กคา
พารา'0เ2ร82/าง; เหล/าน จะ4#กส/ง"/านโปรโ2คล %tt$ และ!นโปรแกร'เราสา'าร4- จะ/านค/าพารา?
'0เ2ร8เหล/าน 3ดจากปเจค re8uest โด(เร(ก!$เ'=ด etParameter@ +, งโปรแกร'ส/วนน จะ'ค.สั ง2/าง; ดังน String id = requestget!arameter"#id#$%
String name = requestget!arameter"#name#$%String addr = requestget!arameter"#addr#$%String mobile = requestget!arameter"#mobile#$%String fa& = requestget!arameter"#fa&#$%String email = requestget!arameter"#email#$%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 15/129
1(
2.1.2 การแสดงรายละเอยดของคาตาง
โปรแกร' Servlet จะสา'าร4แสดง"ลก-าง "e# 4rowser 3ด โด(การเ&(นโคด %T&'
)า(!นค.สั ง out.$rintln@ โด('ค.สั ง!นเ'=ด $rocess7e8uest@ ดังน
protected 'oid process(equest"HttpSer'let(equest request)HttpSer'let(esponse response$ throws *+,&ception-
!rint.riter out = responseget.riter"$%
responsesetContentype"#te&t/html%charset=023#$%
outprintln"#<html>#$%outprintln"#<head>#$%
outprintln"#<title>Customer *nformation</title>#$%outprintln"#</head>#$%outprintln"#<body>#$%
Strin1 id = re2uest.1etParameter3"id"45Strin1 name = re2uest.1etParameter3"name"45Strin1 addr = re2uest.1etParameter3"addr"45Strin1 mobi%e = re2uest.1etParameter3"mobi%e"45Strin1 fa = re2uest.1etParameter3"fa"45Strin1 emai% = re2uest.1etParameter3"emai%"45
outprintln"#<h1> Customer *nformation </h1>#$%outprintln"#<b>*45 </b># 6 id 6 #<7(>#$%outprintln"#<b>8ame5 </b># 6 name 6 #<7(>#$%outprintln"#<b>Address5 </b># 6 addr 6 #<7(>#$%
outprintln"#<b>9obile5 </b># 6 mobile 6 #<7(>#$%outprintln"#<b>a&5 </b># 6 fa& 6 #<7(>#$%outprintln"#<b>,2mail5 </b># 6 email 6 #<7(>#$%
outprintln"#</body>#$%outprintln"#</html>#$%
outclose"$%:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 16/129
1,
2.2 ขั !นตอนการพัฒนาโปรแกรม Csto!erServlet.java เราสา'าร4- จะพัฒนาโปรแกร' *ustomerServlet.+ava 2า'&ั น2นดงัน
1. เลกหนา2/าง Pro+ects แลวคล0 :ก&วา- โหนด "e#A$$ New Servlet ดงัร#ป- 2.1
รปท 2.1 การสราง%*ล+ประเ,ท Servlet
2. ก.หนด$ *lass Name E *ustomerServlet และ Pac3ae E servlet ดงัร#ป- 2.2 และกด Ne!t
รปท 2.2 การกหนดชอ Pacage และ ชอ )ile Servlet
). ก.หนดค/า C7' Pattern@หร C7' &a$$ins เปน /add*ustomer.do
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 17/129
15
โด(คล0กเลก$ *ustomerServletB กดป1 6' dit
แลวเปล (น C7' &a$$in เปน add*ustomer.do และกด :inish ดังร#ป- 2.)
รปท 2.3 การกหนด 4+ Pattern
. จากนั นเพ0 ' ðod - file *ustomerServlet.+ava
ส.หรับรับ action - Su#mit 'าจาก %tt$?7e8uest @%T&' :orm -ั ง$น0ด P6ST และ HT
โด(2ั ง$ ðod ว/า $rocess7e8uest@
protected 0oid process(equest"HttpSer'let(equestrequest)HttpSer'let(esponse response$thro#s *+,&ception -
55 () im$lement source code $าม )ั/ขอ 67876
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 18/129
1-
(. 9m$lement *ode เพ0 '!น ðod doHet@BdoPost@
เพ ส/ง2/ %tt$?7e8uest !ห ðod $rocess7e8uest@
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$throws Ser'let,&ception) *+,&ception -
process6e2uest3re2uest7 response45 //เพ ม Code เขาไปท น :
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$throws Ser'let,&ception) *+,&ception -
process6e2uest3re2uest7 response45 //เพ ม Code เขาไปท น :
2.$ การทดสอบโปรแกรม
1. 7un โปรแกร' "e#A$$ โด(คล0 :ก&วา- add*ustomer.html
เลก 7un As 7un on Server กดป1 6' :inish
รปท 2." การรันท!สอ" aCusto%er Servlet
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 19/129
1;
2. -ดลงป%น&'#ล ดงัร#ป 2.(
รปท 2.$ กรอกขอมลท!สอ" Servlet -&านหนา aCusto%er.&t%l
). โปรแกรมจะแสดง*ล ดงัร.ปท ! 2.,
รปท 2.' ผลลพ!"จากการเร$กโปรแกร% Custo%erServlet
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 20/129
2
2.4 การปรับปร"งโปรแกรมเพ# $อ%&เรยก'(ล a""Csto!er.#t!l เม# $อเร $มตน และ %&แสดง)ล*า+า'ทย,-กตอง
เราสา'าร4- จะปรับปร1งโปรเจคน เพ !หเร(ก37ล8 add*ustomer.html โด(3'/2งระบ1$ file !น C7'
เ$/นเร(ก htt$<//localhost<--/"e#A$$ แลว!หรัน "e#$ae add*ustomer.html ั2โน'2ั0
-.3ด โด(การก.หนดพารา'0เ2ร8 "elcome :iles !หเปน37ล8ดงักล/าว โด('&ั น2นดงัน
1. !นหนา2/าง Pro+ects &(า(โหนด "e#A$$ De$loyment Descri$tor "elcome Pae
2. Dou#le clic3 - "elcome Paes แลวเพ0 '$ &งหนา Pae add*ustomer.html ลง3ป- บรร-ักแรก หลัง Ta
I"elcome?file?list ดงัร#ป- 2.5 แลว save
รปท 2., แก#& (eb.#%l 'หaCusto%er.&t%l เป(นหนาแรก&อง Project
). -.การ-ดสบคคล0 :ก&วา- Pro+ect "e#A$$ 7un As 7un on Server
รปท 2.- ท!สอ"รันหนา aCusto%er.&t%l เพอเร$กใชCusto%erServlet.java
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 21/129
21
รปท 2./ ท!สอ"รันหนา aCusto%er.&t%l เพอเร$กใชCusto%erServlet.java
จะเหนว/า เรา3'/ 3ดระบ1$ add*ustomer.html ลง3ป แ2/เ' เร(ก /"e#A$$B A$$lication Serverจะ-ราบ-นั-ว/า2งน. :ile 3หน&, น'ารัน เพ !หเปน Pae แรก @Tomcat /านจาก we#.!ml นั นเง
. กร<4า *onfiuration 4#กเปล (นค/า หร' class !ห'/เก0ด&, น Tomcat จะ'การ2บสนงดงัน .1 การเ2น- Status - Ta# Server
รปท 2.1 Apac&e To%cat เตอนให 4estart Server
.2 เ' สั งรัน A$$lication ดงั& ) จะ' Dialo #o! 4า' เพ !ห*onfirm ว/าจะ 7estart A$$ Server หร3'/ 4า2งการ!ห source code - แก 3ป '"ล-นั- !หเลก 7estart Server แลวกดป1 6' 6K
รปท 2.11 Apac&e To%cat ขอ Confir% การ 4estart Server
เ' 3ด-.& .1 หร .2 &!ด&หน, งแลว !หด#- ส4านะ&ง Tomcat จะพบว/าเปน Synchronied
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 22/129
22
กจะ-.!ห source code - 4#กแก 3&3ปนั น 4#ก!$งาน
รปท 2.12 Apac&e To%cat ข.ะพรอมใชงาน
นกจากน 4าเรา-ดลงป%น&'#ล)า*า3-( ลง3ป!นจะพบว/าโปรแกร' "e# 4rowser บาง2วัจะแสดง"ลลพั=8)า*า3-(3'/4#ก2ง เราสา'าร4แก 3&3ด โด(การก.หนด!หการเ&ารหัส&งพารา'0เ2ร8- ส/ง'าเปนCT:?- โด(เพ0 'ค.สั งเ&า3ป- ðod $rocess7e8uest โด(2/จากบรร-ดั&ง Print"riter out L. ดงัน
!rint.riter out = responseget.riter"$%
response.setContentTpe3"tet/htm%5charset=utf-8"45
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 23/129
2)
Exercise $ โปรแกรมเ#บส$%รับการ&$โพล
เน อหาทตอง'( ก)าก&อน การเ&(นโปรแกร' Java Servlet เพ /านค/าพารา'0เ2ร8
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' Java Servlet เพ -. Poll โด(!ห"# !$สา'าร4- จะโหว2เลก)า*าค'พ0วเ2ร8- $บ3ด แลวโปรแกร'จะแสดง"ลการโหว2-าง "e# 4rowser
$.1 โปรแกรม vote.#t!l
โปรแกร' vote.html เปนหนาเวบ- !ห"# !$สา'าร4- จะ-.การโหว2เลก)า*าค'พ0วเ2ร8 3ด โด(เ' "# !$กดป1 6' 0ote โปรแกร'เวบกจะ3ป-.การเร(ก C7' - $ $rocess0ote โปรแกร'น 'หนาเวบดงัร#ป- ).1
รปท 3.1 การแสดงผล&องโปรแกร% vote.&t%l
$.2 การพัฒนาโปรแกรม %oteServlet.java
โปรแกร' 0oteServlet.+ava เปนโปรแกร'- 4#กเร(ก!$ โด( vote.html เ' "# !$กดป1 6' 0ote โปรแกร'น จะ-.หนา- เพ น.ค/า- "# !$ โหว2'าประ'วล"ล โด('การ-.งานค
1. ก.หนด2วัแปร counter และ lan
2. /านค/าพารา'0เ2ร82/าง;- ส/ง'าจาก vote.html และ-.การประ'วล"ล). แสดง"ลการโหว2
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 24/129
2
).2.1 ก.หนด2วัแปร counter และ lan
2ัวแปร count เปนะเร(8เพ - จะเกบจ.นวน"ลโหว2&ง)า*าค'พ0วเ2ร8แ2/ละ)า*า และ2ัวแปร lan
เปนะเร(8&ง Strin เพ - จะเกบรา($ )า*าค'พ0วเ2ร8 2ัวแปร-ั งสงเปน2วัแปร&งปเจค- จะประกา>นกเ'=ด @9nstance 0aria#le โด('ค.สั งประกา>ดงัน
String lang =-#a'a#) #C?#) #C#) #!ascal#:%
int count = new int@%
).2.2 /านค/าพารา'0เ2ร82/าง;- ส/ง'าจาก vote.html และ-.การประ'วล"ล
เวบเพจ vote.html จะส/ง&'#ล&งการโหว2 3ปกับพารา'0เ2ร8- $ lan โด(จะ'ค/าเปนห'า(เล 1?
!น- น จะ'ค.สั ง re8uest.etParameter เพ จะ/านค/า- โหว2'า จากนั นจะ-.การแปลงค/า+, งเปน Strin !หเปนค/าจ.นวนเ2'โด(!$ "ra$$er class จากนั นจะเปนการเพ0 'จ.นวนโหว2!น2วัแปร count 2า'ค/า inde! - สดคลงกบั)า*า- โหว2'า โด('ค.สั ง2/าง; ดังน
String 'ote = requestget!arameter"#lang#$%
int 'ote8um = *ntegerparse*nt"'ote$ 1%
count'ote8um66%
).2.) การแสดง"ลการโหว2
ค.สั งแสดง"ลการโหว2จะเปนค.สั งเพ แสดงค/า&ง2วัแปร count โด('ค.สั งดงัน
for "int i = B% i < countlength% i66$ -
outprintln"langi 6# = # 6 counti 6 #<7(>#$%
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 25/129
2(
$.$ ขั !นตอนการพัฒนาโปรเจ.ค %oter
เราสา'าร4- จะพัฒนาแบบฝกหัดน - $ โปรเจค 0oter 2า'&ั น2นดงัน
1. สราง New Pro+ect $น0ด Dynamic "e# A$$lication $ 0oter ดังร#ป- ).2
รปท 3.2 การสรางโปรเจ/0 Web Application ชอ 5oter
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 26/129
2,
2. ก.หนด %T&' :ile Name E vote แลวกด :inish
รปท 3.3 การสราง *TM+ Page ชอ vote.&t%l
). !นหนา2/าง ditor เ&(น Source code &ง vote.html ดัง 'istin - ).1
'istin ท ! ).1 โปรแกรม vote.html
<html> <head><title>.eb oting</title></head> <body>
<form action="process9ote" method="POST">
Se%ect a computer %an1ua1e <6> <input tpe="radio" name="%an1" 0a%ue=";" /> a0a <br> <input tpe="radio" name="%an1" 0a%ue="&" /> C <br> <input tpe="radio" name="%an1" 0a%ue="" /> C <br> <input tpe="radio" name="%an1" 0a%ue="$" /> Pasca% <br> <input tpe="submit" 0a%ue="9ote" />
</form> </body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 27/129
25
. เลกหนา2/าง Pro+ects แลวคล0 :ก&วา- โหนด 0oter เลกค.สั ง New Servlet
ก.หนด Pac3ae เปน controller และ *lass Name E 0oteServlet.+ava
แลวกด Ne!t ก.หนด C7' &a$$in E /$rocess0ote แลวกด :inish
รปท 3." การสราง 6ava Servlet ชอ 5oteServlet.java และก1หน! 4+ Pattern 74+ Mapping8
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 28/129
2-
!นหนา2/าง ditor เ&(น Source code &ง 0oteServlet.+ava ดงั 'istin - ).2
'istin - ).2 โปรแกร' 0oteServlet.+ava
pacDage controller%
import Ea'aio*+,&ception% import Ea'aio!rint.riter%
import Ea'a&ser'letSer'let,&ception% import Ea'a&ser'lethttpHttpSer'let% import Ea'a&ser'lethttpHttpSer'let(equest% import Ea'a&ser'lethttpHttpSer'let(esponse%
public class oteSer'let e&tends HttpSer'let -
pri0ate static fina% %on1 serialVersionUID = ;?5Strin1 @A%an1 =B"a0a"7 "C"7 "C"7 "Pasca%"5int @Acount = ne# int@$A5
protected 0oid process6e2uest3ttpSer0%et6e2uest re2uest7ttpSer0%et6esponse response4 thro#s Ser0%et,ception7 IO,ception B
PrintEriter out = response.1etEriter345 response.setContentTpe3"tet/htm%5charset=FT+-8"45
Strin1 0ote = re2uest.1etParameter3"%an1"45 int 0oteum = Inte1er. parseInt30ote4 - ;5 count@0oteumAGG5 out.print%n3"<htm%>"45 out.print%n3"<head>"45 out.print%n3"<tit%e>Ser0%et 9oteSer0%et</tit%e>"45 out.print%n3"</head>"45 out.print%n3"<bod>"45 out.print%n3"<h;>Ser0%et 9oteSer0%et at " Gre2uest.1etContetPath34 G "</h;>"45 for 3int i = '5 i < count.%en1th5 iGG4 B out.print%n3%an1@iA G" = " G count@iA G "<6>"45
out.print%n3"</bod>"45 out.print%n3"</htm%>"45
out.c%ose345 :
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$% ::
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 29/129
2;
(. -.การ De$loy "e# Pro+ect - A$ache Tomcat
3ป- Ta# Server ดานล/าง คล0 :ก&วา - Tomcat v,. Server แลวเลก Add and 7emove
รปท 3.$ การ eplo! Project %ปท Apac&e To%cat แ"" Manual
,. กด Save แลว-.การ run โปรเจคเพ -ดสบโปรแกร'โด(เร(ก C7' - htt$<//localhost<--/0oter/vote.html โด(จะ3ด"ลลพั=8ดงั2วั(/าง!นร#ป- ).,
รปท 3.' )วอ$*างผลลพ!"&องโปรเจค 5oter
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 30/129
)
$.4 การปรับปร"งโปรแกรม %oteServlet.java
!ห Set "elcome Pae เ' เร(ก htt$<//localhost<--/0oter/ !ห 3ป- vote.html -นั- @2ัว(/าง หนา- 2
เพ ควา'สะดวก 3'/2งระบ1$ html $ae &<ะเร(ก!$งาน& ัน2นน จะเปนการปรับปร1งโปรแกร' 0oteServlet.+ava เพ ป%งกนัการโหว2+ .-ั งน จะ3'/น1?า2!ห "# !$
- !$ห'า(เล&3พเด(วกนัโหว2+ .3ด โด(จะเกบห'า(เล&3พ- -.การโหว2แลว!นปเจค$น0ด HashSet การพัฒนาโปรแกร'น 'ค.ส ังเพ0 'เ20'- ส.คั?ดังน
1. ก.หนด2วัแปร 'oters2. /านห'า(เล&3พ&ง"# โหว2และเพ0 'คะแนนการโหว2 หากห'า(เล&3พน 3'/เค(โหว2
)..1 ก.หนด2วัแปร voters
2ัวแปร voters เปน2วัแปร$น0ด %ashSet @ Set 3'/เกบ&'#ล+ . 3'/จ.ล.ดบั&'#ลว/าเ&าก/นหรหลังและ3'/เร(งล.ดบั เกบห'า(เล&3พ&ง"# โหว2 โด(จะประกา>เปน2วัแปร ปเจค- 'ค.สั งประกา>ดงัน
HashSet 'oters = new HashSet"$%
)..2 การ/านห'า(เล&3พ&ง"# !$
การ/านห'า(เล&3พ&ง"# !$-.3ด โด(เร(ก!$ ค.สั ง et7emoteAddr@ !นปเจค re8uest เ' -ราบ
ห'า(เล&3พ เราสา'าร4- จะ2รวจสบ3ดว/าห'า(เล&น เค(โหว2แลวหร3'/ โด(การ2รวจสบว/าปเจค voters'ค/าห'า(เล&3พน หร3'/ โด(!$ค.สั ง contain@ หาก(งั3'/เค(โหว2ก !หเพ0 'ค/า2วันับและเพ0 'ห'า(เล&3พน !นปเจค voters โด('ค.สั งดังน
String ip = requestget(emoteAddr"$%if"'otercontains"requestget(emoteAddr"$$$-
outprint"#his *! Address has been 'oted#$%:e%se- count'ote8um66% 'oteradd"requestget(emoteAddr"$$%:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 31/129
)1
ส.หรับโปรแกร' 0oteServlet.+ava - ปรับปร1ง!ห'/จะ' source code ดัง 'istin - ).)
'istin - ).) โปรแกร' 0oteServlet.+ava เพ ป%งกันการโหว2+ .
pacDage controller%
import Ea'aio*+,&ception%import Ea'aio!rint.riter%import Ea'autilHashSet%
import Ea'a&ser'letSer'let,&ception%import Ea'a&ser'lethttpHttpSer'let%import Ea'a&ser'lethttpHttpSer'let(equest%import Ea'a&ser'lethttpHttpSer'let(esponse%
public class oteSer'let e&tends HttpSer'let -
pri'ate static final long serialVersionUID = 1F%
ashSet<Strin1> 0oter = ne# ashSet<Strin1>345Strin1@A %an1 = B "a0a"7 "C"7 "C"7 "Pasca%" 5int@A count = ne# int@$A5
protected 'oid process(equest"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
PrintEriter out = response.1etEriter345response.setContentTpe3"tet/htm%5charset=FT+-8"45
Strin1 0ote = re2uest.1etParameter3"%an1"45int 0oteum = Inte1er. parseInt30ote4 - ;5
if 30oter.contains3re2uest.1et6emote!ddr3444 Bout.print3"<font co%or=red>This IP !ddress has been 0oted</font>"45
e%se B0oter.add3re2uest.1et6emote!ddr3445count@0oteumAGG5
out.print%n3"<htm%>"45out.print%n3"<head>"45out.print%n3"<tit%e>Ser0%et 9oteSer0%et</tit%e>"45out.print%n3"</head>"45out.print%n3"<bod>"45out.print%n3"<h;>Ser0%et 9oteSer0%et at " G re2uest.1etContetPath34
G "</h;>"45for 3int i = '5 i < count.%en1th5 iGG4 B
out.print%n3%an1@iA G " = " G count@iA G "<6>"45out.print%n3"</bod>"45
out.print%n3"</htm%>"45out.c%ose345
:
protected 'oid do;et"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%:
protected 'oid do!ost"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%:
public String getSer'let*nfo"$ -return #Short description#%:
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 32/129
)2
Exercise 4 การเ' อม"อกับ M&S'L (atabase
เน อหาทตอง'( ก)าก&อน ?
แบบ9:ก)ัดน &เป;นการเร# !ม$น(1งาน Data#ase Tool เพ !อเ1 !อม$"อกับ Ta#le test (น3านขอม.ล &yS'
ส0)รับเป;น$ั/1"/ย()ท0งานไดเร/ข< &น เ1"นปก$#-าจะ create ta#le ก$องเขยน S' แ$" Tool น &ม HC9 มา1"/ยท0()ลดขอ*#ดพลาด และ สะด/ก(นการท0งานมากข< &น
4.1 การจัดการ /0123เป5ดโปรแกร' @ABCD EFGHIJKLM
รปท 234 การเร$กใชงาน 567869: ;<=>? @76ABCDEF
1. Dou#le *lic3 *onnection Name (ส" Password ท !ก0)นดไ/ (น$อน$#ด$ั &งโปรแกรม &yS' =< !งจะมค"าเป;นroot ดังร.ปท ! .2
รปท ".2 การแสดงการเชอ%)*อ Connection เพอเ&า#ปจดการ atabase
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 33/129
))
4.2 การสรางตาราง boo)s (นท !น &จะก0)นด()สราง Ta#le ท !1 !อ #oo3s โดย()อย. "+าย($ Schema ท !1 !อ test โดย Ta#le น &ก0)นด()ม
*olumn $"าง% ดัง$ารางท ! .1
$ารางท ! .1 Ta#le #oo3s ชอ Column ชน ด ขนาด Primary Key Index
isbn varchar 20 Y Y
title varchar 70 - -
author varchar 50 - -
price float - - -
เราจะ(1 โปรแกรม &yS' "or34ench (นการท !จะสราง Ta#le น & โดยมขั &น$อน$"าง% ดังน &1. Dou#le คล# >ก Add Ta#le... (ส"1 !อ ta#le และ 1 !อ field แล/กดป' ?ม A$$ly ดัง$ารางท ! .1
รปท ".3 การเลอกคสงสราง)าราง
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 34/129
)
2. )รอ(1ค0สั !ง S' Statement ก ได โดยน0ไป(ส"ท !)นา$"าง uery1 แล/ กด icon สายฟ@าสเ)ลองเพ !อรันC(,A, A7F, 7++GS "*S78 A(CHA("B$ 8+ 80FF )*F, A(CHA("IB$ 80FF )A0H+( A(CHA("JB$ 80FF )
!(*C, F+A 80FF )!(*9A(K G,K "*S78$ $%
). เป2ด Ta#les #oo3s จะเ)น *olumn $"าง% ดังร.ปท ! .
รปท "." ผลลพ!"จากการสราง)าราง
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 35/129
)(
4.$ การ%4ค5สั $ง S'L %น M&S'L Wor)*enc#
+าย)ลงัจากท !มการสราง Ta#le ท !1 !อ #oo3s เราสามาร-(1ค0ส ั!ง S' เพ !อท !จะ$#ด$"อกับ3านขอม.ล (นท !น &จะแสดงการเพ# !มขอม.ลลง(น Ta#le โดยมข ั&น$อน$"าง%ดงัน &
1. Dou#le *lic3 ท ! Ta#le #oo3s ดานข/า จะได S' ditor ()ป@อนค0สั !ง S' เป;น*8S,( *8+ booDs AF0,S "L1ML) LAAL) LhanisaL) JBBBB$%*8S,( *8+ booDs AF0,S "L@JNL) LS+AL) Lhanachart L) MBBBBB$ %
แลว กด NLFK สา(7%าสเหลง ดังร#ป OPQ หรกด RSGTUBMVWSUXKSJG เพ รันค.ส ัง BCD - ังห'ด
รปท ".$ การ E#ecute คสงเพ+ %&อ%ล'น)าราง
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 36/129
),
2. เราสามาร-ท !จะด.ขอม.ลท !ป@อนเขาไปได โดยเลอก ta# 6verview จาก Ta#le ท !1 !อ #oo3s เลอก Select 7ows M 'imit1 ดงัร.ปท ! .,
รปท ".' การเร$กด&อ%ล'น)าราง
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 37/129
)5
Exercise + การพั(นาโปรแกรมเ#บ เพ อ"!)"อกับ*านขอม+ล
เน อหาทตอง'( ก)าก&อน การ!$งาน Tool - 20ด2/กบั &yS' Data#ase
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' "e# A$$lication โด(!$ Java Servlet เพ เ$ '2/กบั9าน&'#ล !น- น !$9าน&'#ล &yS' +, ง' Data#ase $ test และสราง Ta#le - $ #oo3s 3วแลวจาก - !ercise @หนา )
การ-.งาน&งโปรแกร' เปนการเพ0 '&'#ลลง!น Ta#le ดงักล/าว โด(ก.หนด!ห"# !$ป%นรา(ละเ(ด&'#ล"/านเวบเพจ- $ add4oo3.html +, งเ' "# !$กดป1 6' Add โปรแกร'กจะ3ปเร(กโปรแกร' Servlet - $ Add4oo3Servlet +, งจะ'ค.สั ง!น/านค/า $arameter - "# !$ป%นเ&า'าและ-.การบนั-,ก&'#ลลง!น Ta#le #oo3s +, ง
!$$1ดค.สั ง S' "/าน JD4* AP9
ขั นตอนในการพัฒนาโปรแกรม 1. *onfi A$ache Tomcat !หสา'าร4!$งาน JD4* Driver
2. สรางโปรเจค "e#4aseD4
). พัฒนา "e# $ae add4oo3.html
. พัฒนา "e# $ae Than3you.html
(. พัฒนาโปรแกร' Add4oo3Servlet.+ava
+.1 การ Con,i- Apac#e To!cat %&สามาร,%4งาน J(*C (river !น- น จะ!$ Driver - $ MySQL Connector/J +, งเปน JD4* Driver - !$20ด2/กบั &yS'
:ile - จ.เปน ค !&sl/connector/java/+.1.1+/bin.jar โด(!ห *o$y 3ปวาง- directory / li# &ง A$ache Tomcat
Default (# /- *<FProram :ilesFA$ache Software :oundationFTomcat ,.Fli#F
รปท $.1 ต1แหน&งของ )ile 69C river ใน )oler lib ของ Apac&e To%cat
สา'าร4 Download &yS' *onnector/J 3ด- htt$<//mys8l.cs.$u.edu.tw/Downloads/*onnector?J/mys8l?connector?+ava?(.1.1(.i$
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 38/129
)-
+.2 การสราง Web Application Project
เลกเ'น# :ile New Pro+ect เลก Dynamic "e# A$$lication
ก.หนด$ Pro+ect Name E Web*ase(* @2ัว(/างการสราง Pro+ect "e# A$$lication หนา 2
+.$ การพัฒนาโปรแกรม a""*oo).#t!l โปรแกร' add4oo3.html เปนเวบเพจ- !$แสดง7ร8'ส.หรับป%น&'#ลหนังส!ห'/เ&า!น9าน&'#ล
#oo3s +, ง'ลกั*<ะดงัร#ป- (.2 โปรแกร' add4oo3.html
รปท $.2 หนาเG/"เพจ a9oo.&t%l
& ัน2นการพฒันาดงัน 1. คล0 :ก&วา- โหนด "e#4aseD4 จากนั นเลกค.สั ง New %T&' :ile @2วั(/าง หนา 2(
ก.หนด :ile Name< เปน add4oo3 แลวกด :inish
2. เ&(น source code &ง37ล8 add4oo3.html 2า' 'istin - (.1
หร ลาก icon ประเ)- %T&' :orms - (# / !นหนา2/าง Palette เพ สา'าร4!หเ&(นโปรแกร'3ดง/า(&, น@2ัว(/าง หนา ; โด(-.2า' ร#ปแบบ- 2 ดังร#ป- (.)
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 39/129
);
รปท $.3 การ'ชงาน Palette สหรบการสรางหนาจอ *TM+
'istin - (.1 โปรแกร' add4oo3.html
<html> <head> <meta http2equi'=#Content2ype# content=#te&t/html% charset=023#> <title>Add a new booD</title> </head> <body><h1>Add a new booD</h1><!> <form action="addooH.do" method ="POST"> IS : <input tpe="tet" name="isbn" 0a%ue="" si)e=";"/> <6 > Tit%e : <input tpe="tet" name="tit%e" 0a%ue="" si)e="'"/> <6 >
!uthor : <input tpe="tet" name="author" 0a%ue="" si)e="'"/> <6 >
Price : <input tpe="tet" name="price" 0a%ue="" si)e=";'"/> <6 > <input tpe="submit" 0a%ue="!dd" /> </form > </body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 40/129
+.4 การพัฒนาโปรแกรม t#an)&o.#t!l
โปรแกร' Than3you.html เปนเวบเพจ- !$แสดง!หเหนว/า&'#ล3ด4#กเพ0 'เ&า3ป!น9าน&'#ลแลว โด('
source code ดงั 'istin - (.2 +, ง& ัน2นการพฒันาโปรแกร'น จะเปนเ$/นเด(วกบัการพัฒนาโปรแกร'add4oo3.html
'istin - (.2 โปรแกร' than3you.html
<html> <head> <title>hanD you</title> </head> <body> <;>ThanH ou for insertin1 data </;> </body></html>
+.+ การพัฒนาโปรแกรม A""*oo)Servlet.java
โปรแกร' Add4oo3Servlet.+ava เปนโปรแกร'- 4#กเร(ก!$ โด( add4oo3.html เ' "# !$กดป1 6' Add
โปรแกร'น จะ-.หนา- เพ 20ด2/กบั9าน&'#ลโด('&ั น2นการ-.งานดงัน 1. /านค/าพารา'0เ2ร82/าง;- ส/ง'าจาก add4oo3.html
2. เ$ '2/กบั9าน&'#ล #oo3s
). เพ0 'รา($ หนังส!ห'/ลง!น9าน&'#ล #oo3s
. เร(กเวบเพจ Than3you.html
(.(.1 การ/านค/าพารา'0เ2ร8จาก add4oo3.html
เวบเพจ add4oo3.html จะส/ง&'#ล&งรา($ หนงัส!ห'/"/าน'า-างพารา'0เ2ร82/าง;ดงัน ● is#n ห'า(เล& 9S4N &งหนังส● title $ หนังส● author $ "# แ2/ง● $rice ราคาหนังส
พารา'0เ2ร82/าง;เหล/าน จะ4#กส/ง"/านโปรโ2คล %tt$ และ!นโปรแกร'เราสา'าร4- จะ/านค/าพารา'0เ2ร8เหล/าน 3ดจากปเจค request โด(เร(ก!$เ'=ด getParameter() +, งโปรแกร'ส/วนน จะ'ค.สั ง2/าง;ดงัน
String isbn = requestget!arameter"#isbn#$% String author = requestget!arameter"#author#$%
String title = requestget!arameter"#title#$%
String priceStr = requestget!arameter"#price#$%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 41/129
1
(.(.2 การเ$ '2/กบั9าน&'#ล
การด,ง&'#ลระหว/าง A$$lication กับ &yS' Data#ase '& ัน2นดงัน ● เพ0 ' 7esource $น0ด Data source ลง3ป- *ontainer &ง Tomcat
● เพ0 ' 7esource 7eference โด(-.การ &a$ DataSource - A$$lication 2งการ!$● เร(ก!$ค.ส ัง S' โด(!$เ'=ด executeQuery() หร executeUpdate()
1. เพ0 ' 7esource $น0ด DataSource ลง3ป- Tomcat
โด(สราง file context.x!l - :older 0Web*ase(*0WebContent0META/30 ดังร#ป (.<Conte&t><(esource
name=#Edbc/test#
auth=#Container#dri'erClass8ame=#commysqlEdbc4ri'er#type=#Ea'a&sql4ataSource#url=#Edbc5mysql5//localhost5MMBN/test#username=#root#password=#root# >
</(esource></Conte&t>
รปท $." เพH ม 4esource ใหกั" Apac&e To%cat
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 42/129
2
2. -.การ &a$$in Data source - A$$lication 2งการเ$ '2/ โด(แก 3& "e# De$loyment Descri$tor &ง Pro+ect @E,-I+#eb.m% โด(เพ0 'ดงัน
<resource2ref> <description>est 4atabase</description>
<res-ref-name>Jdbc/test</res-ref-name> <res2type>Ea'a&sql4ataSource</res2type> <res2auth>Container</res2auth> </resource2ref>
รปท $.$ เพH ม 4esource 4eference ท Web eplo!%ent escriptor
$. การ& Data source จะ!$ annotation และบก$ &ง Data source 2วั- เรา2งการ 2(. source code เ$/น
O(esource"name = "Jdbc/test"$ pri'ate 4ataSource Edbcest%
เ' 3ด Data source แลว เรากจะสราง-าง20ด2/ โด( et *onnection จาก'ันแลวเกบค/า3ว- 2ัวแปร conn
โด(เ&(น source code ส/วนน - ðod init@
pri'ate Connection conn%
public 'oid init"$ -
try -
conn = JdbcTestgetConnection"$%
: catch ",&ception e&$ -Systemoutprintln"e&$%: :
(.(.) เพ0 'รา($ หนงัส!ห'/ลง!น9าน&'#ล
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 43/129
)
เ' เ$ '2/9าน&'#ลและ3ดปเจค$น0ด Connection 'าแลว เราสา'าร4- จะเร(ก!$ค.สั ง S' 3ด +, ง !น- น คค.สั ง 9NS7T +, งจะ'ร#ปแบบ&งค.สั งดงัน
*8S,( *8+ booDs AF0,S"$
โด(เราจะ!$ค/าจากพารา'0เ2ร82/าง;- รับ'า ดังนั น4า&'#ล- ป%นเ&า'า4#ก2งเราสา'าร4- จะเพ0 'รา($ หนังส!ห'/ลง!น9าน&'#ลโด(!$ค.สั งดงัน
Statement stmt = conncreateStatement"$%String sql = #*8S,( *8+ booDs AF0,S"L#
6 isbn 6 #L)L# 6 title 6#L)L# 6 author 6#L)#6 price 6#$#%
int num(ow = stmte&ecute0pdate"sql$%
(.(. การเร(กเวบเพจ t han3you.html
เ' &'#ล3ด4#กเพ0 'ลง3ป!น9าน&'#ลแลว โปรแกร' Add4oo3Servlet จะ-.การเร(กเวบเพจthan3you.html โด(การเร(ก!$ 7e8uestDis$atcher ดงัน
(equest4ispatcher obE = requestget(equest4ispatcher"#thanDyouhtml#$%
if "num(ow == 1 PP obE Q= null$ -
obEforward"request)response$%
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 44/129
+. ขั !นตอนการพัฒนาโปรแกรม A""*oo)Servlet.java
1. คล0 :ก&วา- โหนด "e#4aseD4 จากนั นเลกค.สั ง New Servlet
ก.หนด Pac3ae E controller B *lass Name E Add4oo3Servlet
C7' &a$$in E /add4oo3.do แลวกด :inish
2. !นหนา2/าง editor !หแก 3& source code &ง37ล8 Add4oo3Servlet.+ava
!หเปน3ป2า' 'istin - (.)
'istin - (.) โปรแกร' Add4oo3Servlet.+ava pacDage controller%
import Ea'aio*+,&ception%import Ea'aio!rint.riter%
import Ea'asqlConnection%import Ea'asqlSRF,&ception%import Ea'asqlStatement%
import Ea'a&annotation(esource%import Ea'a&ser'let(equest4ispatcher%import Ea'a&ser'letSer'let,&ception%import Ea'a&ser'lethttpHttpSer'let%import Ea'a&ser'lethttpHttpSer'let(equest%import Ea'a&ser'lethttpHttpSer'let(esponse%import Ea'a&sql4ataSource%
public class Add7ooDSer'let e&tends HttpSer'let -
pri'ate static final long serialersion0*4 = 1F%
O(esource"name = #Edbc/test#$pri'ate 4ataSource Edbcest%pri'ate Connection conn%
public 'oid init"$ -try -
conn = EdbcestgetConnection"$%: catch ",&ception e&$ -
Systemoutprintln"e&$%:
:
protected 'oid process(equest"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
responsesetContentype"#te&t/html%charset=023#$%!rint.riter out = responseget.riter"$%outprintln"#<html>#$%outprintln"#<head>#$%outprintln"#<title>Add a new booD</title>#$%outprintln"#</head>#$%outprintln"#<body>#$%outprintln"#<h1> Add a new booD </h1>#$%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 45/129
(
try -String isbn = requestget!arameter"#isbn#$%String author = requestget!arameter"#author#$%String title = requestget!arameter"#title#$%String priceStr = requestget!arameter"#price#$%float price = loatparseloat"priceStr$%
Statement stmt = conncreateStatement"$%String sql = #*8S,( *8+ booDs AF0,S"L#6 isbn 6 #L)L# 6 title6 #L)L# 6 author 6 #L)# 6 price 6 #$#%
int num(ow = stmte&ecute0pdate"sql$%
(equest4ispatcher obE =requestget(equest4ispatcher"#thanDyouhtml#$%
if "num(ow == 1 PP obE Q= null$ -obEforward"request) response$%
:: catch "SRF,&ception e&$ -
outprintln"#,rror # 6 e&$%return%:outprintln"#</body>#$%outprintln"#</html>#$%outclose"$%
:
protected 'oid do;et"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%:
protected 'oid do!ost"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%:
:
). บางส/วน- ล' im$ort หรพบ rror หรพบ "arnin &, น'า !ห2รวจสบ im$ort file
โด(กด *trlOShiftO6 cli$se จะ' !หเลกว/าจะ im$ort 37ล8 3หน เร(กว/า การ-. 6ranie 9m$orts
รปท $.' Ctrl:S&ift:O ให Eclipse เป#นตัGช&G$ในการแส!ง 0%port file
. เพ ควา'สะดวก!นการเร(ก!$ "e# A$$lication าจปรับ!ห "elcome file เปน add4oo3.html @2วั(/าง!ercise 2 การเ&(นโปรแกร' Java Servlet เพ /านค/าพารา'0เ2ร8 - หนา 2
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 46/129
,
+.5 ทดสอบโปรแกรม
1. -.การ De$loy โปรแกร' "e#4aseD4 +, ง!น cli$se -.โด( *lic3 &วา- Add and 7emove
2. เร(ก!$งานหนา add4oo3.html แลว-ดสบกรก&'#ลดงัร#ป- (.5
รปท $., )วอ$*างการป,อน&อ%ล 9oos
). เ' กดป1 6' Add โปรแกร'กจะ!ส/&'#ลลง!น Data#ase และแสดง"ลลพั=8ดังร#ป- (.-
รปท $.- -ลลัพI+ทแส!งทาง Web 9ro(ser
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 47/129
5
. เ&า3ปด#&'#ล โด(!$ &yS'"or3#ench เลกค.สั ง Select 7ows ?... จาก Ta#le - $ #oo3s ดงัร#ป- (.;
รปท $./ &อ%ลท-กป,อนเ&า Table ทชอ boos
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 48/129
-
Exercise โปรแกรมเ#บเพ อสา,!"ขอบเข"ของออปเจค
น อหาทตอง'( ก)าก&อน การเ&(นโปรแกร' Servlet เพ /านค/าพารา'0เ2ร8
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' Java Servlet เพ =0บา(&บเ&2การ-.งาน&งปเจค!น โปรแกร'แบบเวบ @6#+ect Sco$e - '(# /ส แบบค PaeB 7e8uestB Session และ "e# @A$$lication โด(จะ-ดลงส/งค/า&งปเจค"/านกนัระหว/างโปรแกร' Servlet สง$1ด
,.1 การพัฒนาโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ 7e8uest
ปเจค- สราง&, น!นโปรแกร' Java Servlet !นแ2/ โปรแกร'จะ'&บเ&2การ!$งาน @sco$e (# /เพ(งแค/ โปรแกร'นั น; @C7' นั น; 3'/สา'าร4- จะ!$ โปรแกร' Java Servlet หร JSP 2วั นเร(ก!$ปเจค2ัวนั น3ด การ
จะ!ห โปรแกร' Servlet หร JSP น; เร(กปเจค!ด; 3ดนั น จะ2ง'การเ&(น source code เพ ส/ง"/านค/า&งปเจคน ัน3ป(งัปเจค น; -ั งน เราสา'าร4ก.หนด&บเ&2การ!$งานเพ0 'เ20'3ดก ) แบบค
● 7e8uest ปเจคสา'าร44#กเร(ก!$เ' 'การเร(ก'าจากโปรแกร' Servlet/JSP น● Session ปเจคจะเกบ(# / !น Session &ง "e# 4rowser 2ราบเ-/า- (ัง'การ!$งาน(# /● A$$lication ปเจคจะสา'าร4!$งาน3ด !นโปรแกร' Servlet/JSP !ด;
- (# / !น "e# A$$lication เด(วกัน
การส/งค/า&งปเจคจาก C7' หน, ง'า(งั C7' น-.3ดหลา(ว0= แบบฝกหัด- "/าน'าเปนการแสดง!ห
เหน4,งการส/งค/าพารา'0เ2ร8- (# / !น7ร8'&ง37ล8 %T&' 3ป(งัโปรแกร' Java Servlet - สา'าร4เร(ก!$ 3ด โด( ค.สั ง requestget!arameter"$
นกจากน เรา(ังสา'าร4- จะส/งปเจค3ป(ัง โปรแกร' Java Servlet หร JSP นโด(การ!$ค.สั งsetAttri#ute@ า-0เ$/นส/งค/า&ง2วัแปร Strin $ ว/า name โด(จะเกบ3ว !น attri#ute - $ 7e8uestName และ'ร#ปแบบค.สั งดงัน
String name = hanisaQ%
requestsetAttribute"(equest8ameQ) name$%
+, งจะ-.!ห C7' - -.การเร(ก4ดั3ปสา'าร4เร(ก!$ attri#ute - $ 7e8uestName และด,งค/า&ง2ัวแปรname ก'า3ด โด(!$ค.ส ัง etAttri#ute@ โด('ร#ปแบบดังน
String name = "String$ requestgetAttribute"(equest8ameQ$%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 49/129
;
ส/วนค.สั ง- !$ !นการ- จะ forward จากโปรแกร' Servlet 2วัหน, ง3ป C7' นจะเปนค.ส ัง- 'ร#ปแบบดังน
(equest4ispatcher obE = requestget(equest4ispatcher"#SecondSer'let#$%obEforward"request)response$%
โด(- SecondServlet ค$ C7' - 2งการ forward
!น&ั น2นน จะเปนการพัฒนาโปรแกร'เพ สา=02การ-.งาน&ง&บเ&2การ-.งาน&ง 6#+ect แบบre8uest โด(การพฒันาโปรแกร' Servlet &, น'าสงโปรแกร'ค :irstServlet - จะ!$ !นการส/งปเจค+, ง' source
code 2า' 'istin - ,.1 และ โปรแกร' SecondServlet - จะ!$/ !นการ/านค/า&งปเจค- ส/งก'าแลวน.'าแสดง"ล +, ง' source code 2า' 'istin - ,.2
'istin - ,.1 โปรแกร' :irstServlet.+ava
pacDage ser'let%
import Ea'aio%import Ea'anet%
import Ea'a&ser'let%import Ea'a&ser'lethttp%
public class irstSer'let e&tends HttpSer'let -
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponseresponse$ throws Ser'let,&ception) *+,&ception -
!rint.riter out = responseget.riter"$% responsesetContentype"#te&t/html%charset=023#$%
try - Strin1 name = "Thanisa"5 re2uest.set!ttribute3"6e2uestame"7 name45 6e2uestDispatcher obJ = re2uest.1et6e2uestDispatcher3"SecondSer0%et"45 obJ.for#ard3re2uest7 response45 : finally -
outclose"$% : :
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$% :
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$% :
public String getSer'let*nfo"$ - return #Short description#% ::
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 50/129
(
'istin - ,.2 โปรแกร' SecondServlet.+ava
pacDage ser'let%
import Ea'aio%import Ea'anet%
import Ea'a&ser'let%import Ea'a&ser'lethttp%
public class SecondSer'let e&tends HttpSer'let -
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception -
!rint.riter out = responseget.riter"$%
responsesetContentype"#te&t/html%charset=023#$%
try - Strin1 name = 3Strin14 re2uest.1et!ttribute3"6e2uestame"45
out.print%n3name45
: finally -
outclose"$%
:
:
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
:
public String getSer'let*nfo"$ - return #Short description#%
::
,.1.1 &ั น2นการพัฒนาโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ 7e8uest
เราสา'าร4- จะพัฒนาโปรแกร' 2า'&ั น2นดงัน 1. เลกเ'น# :ile New Dynamic "e# A$$lication
ก.หนด Pro+ect Name E Sco$eDemo
2. คล0 :ก&วา- โหนด Sco$eDemo New Servlet
ก.หนด Pac3ae E servlet B *lass Name E :irstServlet แลวกด :inish
!นหนา2/าง ditor เ&(น Source code &ง :irstServlet.+ava ดงั 'istin - ,.1 แลว Save
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 51/129
(1
). คล0 :ก&วา- โหนด Sco$eDemo กครั งจากนั นเลกค.สั ง New Servlet
ก.หนด Pac3ae E servlet B *lass Name E SecondServlet แลวกด :inish
. !นหนา2/าง ditor เ&(น Source code &ง SecondServlet.+ava ดัง 'istin - ,.2 แลว Save
,.1.2 &ั น2นการ-ดสบโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ 7e8uest
เราสา'าร4- จะ-ดสบโปรแกร' 2า'&ั น2นดงัน
1. -.การ De$loy โปรเจค Sco$eDemo โด(คล0 :ก&วา- A$ache Tomcat แลว Add and 7emove Pro+ect เ&า3ป
รปท '.1 การ A Project เขาส & Apac&e To%cat หรอเร$กG&าการ eplo!
2. -.การ 7un โปรเจค Sco$eDemo
). !นโปรแกร' "e# 4rowser เลก C7' - $ htt$<//localhost<--/Sco$eDemo/:irstServlet สังเก21"ลลพั=8. -ดลงรัน C7' - $ htt$<//localhost<--/Sco$eDemo/SecondServlet โด(2รง แลวสังเก2"ลลพั=8กครั ง
จะเหนว/า ค/า- แสดงเปน null -ั งน เน งจากโปรแกร'3'/ 3ด'การส/ง re8uest 'าจาก :irstServlet
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 52/129
(2
,.2 การพัฒนาโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ Session
&บเ&2การ!$งาน&งปเจคแบบ 7e8uest จะส/ง"/านค/า&งปเจค2า' re8uest &ง C7' -ั งน 3'/สา'าร4- จะ!$งาน3ด โด(การเร(ก C7' นั นโด(3'/'การส/ง re8uest 'าดงัแสดง!น&ั น2น- "/าน'า เราสา'าร4- จะก.หนด&บเ&2&งการ!$งาน&งปเจค !ห !$งาน"/าน!น session &ง "e# 4rowser 3ด @2ราบเ-/า- 4rowser (งั
!$ session นั น(# / โด(การก.หนด Attri#ute ลง!นปเจค$น0ด %tt$Session +, งจะเปนปเจค- เกบ&'#ลsession &ง "e# 4rowser า-0เ$/นเกบค/า&ง2ัวแปร Strin $ ว/า name 3ว !น attri#ute &ง session - $ SessionName โด('ร#ปแบบค.สั งดงัน
String name = #hanisa#%HttpSession session = requestgetSession"$%sessionsetAttribute"#Session8ame#) name$%
โปรแกร' Java Servlet น;สา'าร4- จะเร(ก!$ attri#ute &ง Session - $ SessionName และด,งค/า&ง2ัวแปร name ก'า3ด โด(!$ค.สั ง etAttri#ute@ เพ เร(กค/าจาก Session โด('ร#ปแบบดังน
HttpSession session = requestgetSession"$%String name = "String$ sessiongetAttribute"#Session8ame#$%
!น&ั น2นน จะเปนการพัฒนาโปรแกร'เพ สา=02การ-.งาน&ง&บเ&2การ-.งาน&ง 6#+ect แบบsession โด(การพฒันาโปรแกร' Servlet &, น'าสงโปรแกร'ค :irstSessionServlet - จะ!$ !นการส/งปเจค+, ง'source code 2า' 'istin - ,.) และ โปรแกร' SecondSessionServlet - จะ!$/ !นการ/านค/า&งปเจค- ส/งก'า
แลวน.'าแสดง"ล +, ง' source code 2า' 'istin - ,.
'istin - ,.) โปรแกร' :irstSessionServlet.+ava
pacDage ser'let%import Ea'aio%import Ea'anet%import Ea'a&ser'let%import Ea'a&ser'lethttp%public class irstSessionSer'let e&tends HttpSer'let -
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
responsesetContentype"#te&t/html%charset=023#$% !rint.riter out = responseget.riter"$%
try -
String name = #hanisa#%
HttpSession session = requestgetSession"$%
sessionsetAttribute"#Session8ame#) name$%
: finally -
outclose"$%
:
:
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 53/129
()
:
public String getSer'let*nfo"$ - return #Short description#%
: :
'istin - ,. โปรแกร' SecondSessionServlet.+ava
pacDage ser'let%
import Ea'aio%import Ea'anet%
import Ea'a&ser'let%import Ea'a&ser'lethttp%
public class SecondSessionSer'let e&tends HttpSer'let -
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
responsesetContentype"#te&t/html%charset=023#$%
!rint.riter out = responseget.riter"$%
try -
HttpSession session = requestgetSession"$%
String name = "String$ sessiongetAttribute"#Session8ame#$%
outprintln"name$%
: finally -
outclose"$%
:
:
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%
:
public String getSer'let*nfo"$ - return #Short description#%
: :
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 54/129
(
,.2.1 &ั น2นการพัฒนาโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ Session
เราสา'าร4- จะพัฒนาโปรแกร' 2า'&ั น2นดงัน 1. เลกเ'น# :ile New แลวเลก Dynamic "e# A$$lication
ก.หนด Pro+ect Name E Sco$eDemo
2. คล0 :ก&วา- โหนด Sco$eDemo จากนั นเลกค.สั ง New Servlet
ก.หนด Pac3ae E servlet B *lass Name E :irstServlet แลวกด :inish
). !นหนา2/าง ditor เ&(น Source code &ง 3irstSessionServlet.java ดัง 'istin - ,.) แลว Save
. คล0 :ก&วา- โหนด Sco$eDemo กครั งจากนั นเลกค.สั ง New Servlet
ก.หนด Pac3ae E servlet B *lass Name E SecondServlet แลวกด :inish
!นหนา2/าง ditor เ&(น Source code &ง Secon"SessionServlet.java ดงั 'istin - ,. แลว Save
,.2.2 &ั น2นการ-ดสบโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ Session
เราสา'าร4- จะ-ดสบโปรแกร' 2า'&ั น2นดงัน
1. -.การ De$loy โปรเจค Sco$eDemo
2. -.การ 7un โปรเจค Sco$eDemo
). !นโปรแกร' "e# 4rowser เลก C7' - $ htt$<//localhost<--/Sco$eDemo/:irstSessionServlet
. -ดลงรัน C7' - $ htt$<//localhost<--/Sco$eDemo/SecondSessionServlet แลวสังเก2"ลลพั=8(. -ดลงป5ด "e# 4rowser แลวเป5ด&, น'า!ห'/แลว-ดลงรัน C7' - $
htt$<//localhost<--/Sco$eDemo/SecondSessionServlet !ห'/แลวสังเก2"ลลพั=8
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 55/129
((
,.) การพัฒนาโปรแกร'เพ สา=02&บเ&2&ง 6#+ect แบบ A$$lication
เราสา'าร4- จะก.หนด&บเ&2การ!$งาน&งปเจค!หเปนแบบ A$$lication กล/าวคสา'าร4!$กับ โปรแกร' Java Servlet หร JSP -1กโปรแกร'- (# /)า(!น "e# A$$lication เด(วกัน2ราบ!ด- "e# Server (ังde$loy โปรแกร' "e# A$$lication ดงักล/าว(# / 4,งแ'ว/า "e# 4rowser &งฝY Zง client จะป5ด3ปแลวก2า' การก.หนด&บเ&2แบบ A$$lication สา'าร4-.3ด โด(!$ค.สั ง setAttri#ute@ กบัปเจค$น0ด Servlet*onte!t +, งเปนปเจค- เกบ&'#ล&ง "e# A$$lication +, ง!นแ2/ละ "e# A$$lication จะ'ปเจค$น0ด Servlet*onte!t (# /หน, ง2ัว และสา'าร4เร(ก'า3ด โด(!$ค.สั ง etServlet*onte!t@
2ัว(/างค.สั ง!นการเกบปเจค$น0ด Strin - $ name 3ว !น attri#ute - $ A$$Name &งปเจค $น0ดServlet*onte!t จะ'ร#ปแบบค.สั งดงัน
String name = #hanisa#%
Ser'letConte&t conte&t = getSer'letConte&t"$%
conte&tsetAttribute"#App8ame#) name$%
โปรแกร' Java Servlet น;สา'าร4- จะเร(ก!$ attri#ute &งปเจค$น0ด Servlet*onte!t - $ A$$Name และด,งค/า&ง2ัวแปร name ก'า3ด โด(!$ค.สั ง etAttri#ute@ เพ เร(กค/าจากปเจค$น0ดServlet*onte!t โด('ร#ปแบบดังน
Ser'letConte&t conte&t = getSer'letConte&t"$%
String name = "String$ conte&tgetAttribute"#App8ame#$%
outprintln"name$%
!น&ั น2นน จะเปนการพัฒนาโปรแกร'เพ สา=02การ-.งาน&ง&บเ&2การ-.งาน&ง 6#+ect แบบa$$lication โด(การพฒันาโปรแกร' Servlet &, น'าสงโปรแกร'ค :irstA$$Servlet - จะ!$ !นการส/งปเจค+, ง'source code 2า' 'istin - ,.( และ โปรแกร' SecondA$$Servlet - จะ!$ !นการ/านค/า&งปเจค- ส/งก'าแลวน.'าแสดง"ล +, ง' source code 2า' 'istin - ,.,
'istin - ,.( โปรแกร' :irstA$$Servlet.+ava pacDage ser'let%
import Ea'aio%import Ea'anet%import Ea'a&ser'let%import Ea'a&ser'lethttp%
public class irstAppSer'let e&tends HttpSer'let -
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception -
responsesetContentype"#te&t/html%charset=023#$%
!rint.riter out = responseget.riter"$%
try -
String name = #hanisa#%
Ser'letConte&t conte&t = getSer'letConte&t"$%
conte&tsetAttribute"#App8ame#) name$%
: finally -
outclose"$%
:
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 56/129
(,
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception -
process(equest"request) response$%
:
public String getSer'let*nfo"$ -
return #Short description#%
::
'istin - ,., โปรแกร' SecondA$$Servlet.+ava
pacDage ser'let%import Ea'aio%import Ea'anet%import Ea'a&ser'let%import Ea'a&ser'lethttp%
public class SecondAppSer'let e&tends HttpSer'let - protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponseresponse$ throws Ser'let,&ception) *+,&ception - responsesetContentype"#te&t/html%charset=023#$% !rint.riter out = responseget.riter"$% try - Ser'letConte&t conte&t = getSer'letConte&t"$% String name = "String$ conte&tgetAttribute"#App8ame#$% outprintln"name$%
: finally - outclose"$% : : protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$% : protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$% ::
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 57/129
(5
,.).1 &ั น2นการพัฒนาโปรแกร'เพ สา=02&บเ&2&ง A$$lication
เราสา'าร4- จะพัฒนาโปรแกร' 2า'&ั น2นดงัน 1. เลกเ'น# :ile New แลวเลก Dynamic "e# A$$lication
ก.หนด Pro+ect Name E Sco$eDemo
2. คล0 :ก&วา- โหนด Sco$eDemo จากนั นเลกค.สั ง New Servlet
ก.หนด Pac3ae E servlet B *lass Name E :irstServlet แลวกด :inish
). !นหนา2/าง ditor เ&(น Source code &ง 3irstAppServlet.java ดงั 'istin - ,.( แลว Save
. คล0 :ก&วา- โหนด Sco$eDemo กครั งจากนั นเลกค.สั ง New Servlet
ก.หนด Pac3ae E servlet B *lass Name E SecondServlet แลวกด :inish
!นหนา2/าง ditor เ&(น Source code &ง Secon"AppServlet.java ดัง 'istin - ,., แลว Save
,.).2 &ั น2นการ-ดสบโปรแกร' เพ สา=02&บเ&2&ง 6#+ect แบบ A$$licatio n
เราสา'าร4- จะ-ดสบโปรแกร' 2า'&ั น2นดงัน
1. -.การ 4uild และ De$loy โปรเจค Sco$eDemo
2. -.การ 7un โปรเจค Sco$eDemo
). !นโปรแกร' "e# 4rowser เลก C7' - $ htt$<//localhost<--/Sco$eDemo/:irstA$$Servlet
. -ดลงรัน C7' - $ htt$<//localhost<--/Sco$eDemo/SecondA$$Servlet แลวสังเก2"ลลพั=8(. -ดลงป5ด "e# 4rowser แลวเป5ด&, น'า!ห'/แลว-ดลงรัน C7' - $
htt$<//localhost<--/Sco$eDemo/SecondA$$Servlet !ห'/แลวสังเก2"ลลพั=8
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 58/129
(-
Exercise 5 การพั(นา Web*ase (* โ)ยคลาสประเ-& Web Listener
เน อหาทตอง'( ก)าก&อน การพัฒนาโปรแกร'เวบเพ 20ด2/กบั9าน&'#ลแบบฝกหัดน จะเปนการปรับปร1งโปรเจค "e# A$$lication - $ "e#4aseD4 - !$ !นการเ$ 'โ(ง9าน
&'#ลและ!ส/&'#ลลง Ta#le โด(เพ0 'คลาสประเ)- "e# 'istener เพ -.การเ$ '2/กับ9าน&'#ลแ-นว0=การเด0'- เ$ '2/!นเ'=ด init@
ขั นตอนในการพัฒนาโปรแกรม
1. พัฒนาโปรแกร' 9nit.+ava
2. แก 3&โปรแกร' Add4oo3Servlet.+ava
5.1 การพัฒนาโปรแกรม nit.java
โปรแกร' Add4oo3Servlet ก.หนดค.สั ง!นการเ$ '2/กับ&'#ล- (# / !นเ'=ด init@ +, งเปนว0=การ- 3'/เห'าะส'นัก เน งจากโปรแกร' Servlet -1กโปรแกร'- จะเ$ '2/กบั9าน&'#ล2งเ&(นโปรแกร'!นส/วน&งเ'=ด init@ - + .กนั
โปรแกร' Servlet จะ' 'istener (# /สง$น0ดค 1. *onte!t 'istener และ 2. Session 'istener
!นแบบฝกหัดน จะพัฒนาโปรแกร'โด(การ!$ *onte!t 'istener +, ง'ันจะ4#กเร(กเ' "e# A$$lication
เร0 '2นการ-.งาน หรส0 นส1ดการ-.งาน
เราจะเ&(นโปรแกร'ประเ)- *onte!t 'istener โด('& ัน2นดงัน 1. เ&(น คลาสประเ)- 'istener @ ค *lass - im$lements interface Servlet*onte!t'istener
2. 9m$lements method - บงัคับ!น 9nterface &ง 'istener นั น;). เ&(น *onfi 37ล8เพ0 '- "e# De$loyment Descri$tor we#.!ml เพ เพ0 ' คลาสประเ)- 'istener
โปรแกร' 9nit.+ava คโปรแกร'- เปน Servlet*onte!t'istener 'ันจะเ$ '2/กับ9าน&'#ล
เ' "e# A$$lication เร0 '-.งาน แลวเกบปเจค *onnection 3ว)า(!น Servlet*onte!t เพ ลดจ.นวนครั ง!นการเ$ '2/9าน&'#ล
เ&(นค.สั งเ$ '2/9าน&'#ล-.- ðod conte!t9nitialied@ +, งจะ4#กเร(กเ' "e# A$$lication เร0 '2นการ-.งาน
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 59/129
(;
&ั น2นการพัฒนาโปรแกร' 9nit.+ava
1. คล0 :ก&วา- โหนด "e#4aseD4 New 'istener
ก.หนด Pac3ae E listener B *lass Name E 9nit
แลวกด :inish ดังร#ป- 5.1
รปท ,.1 การสรางคลาสประเ.ท Web +istener
2. 2รวจสบ conte!t.!ml ว/า'(# /หร3'/ 4า3'/' !ห เพ0 ' 7esource $น0ด DataSource ลง3ป- Tomcat
โด(สราง file conte!t.!ml - :older F"e#*ontentF&TA?9N:F
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 60/129
,
I*onte!tI7esource
nameER+d#c/testRauthER*ontainerRdriver*lassNameERcom.mys8l.+d#c.DriverR
ty$eER+ava!.s8l.DataSourceRurlER+d#c<mys8l<//localhost<)),/testRusernameERrootR $asswordERrootR
I/7esourceI/*onte!t
). -.การ& Datasource จาก *ontainer ส/วน2วัแปร ds - รับเปน 9nstance &em#er
จะ(# /นก ðod !ด; เพ !ห-ั ง initial และ destroy 'งเหน7esource@nameER+d#c/testR $rivate DataSource ds
$rivate *onnection conn
เพ0 ' source code @& ? ( !น ðod conte!t9nitialied เพ เ2ร(' connection !หพร'!$งาน. & *onnection จาก Datasource
conn E ds.et*onnection@
(. น. *onnection 3ปเกบ- Servlet*onte!t แลว ก.หนด$ conte!t vari#le เปน connection
@ar ค instance &ง Servlet*onte!tvent - ส/ง'า!ห-าง arument
ar.etServlet*[email protected]#ute@RconnectionRB conn
,. เพ0 'ค.สั ง2/3ปน !นเ'=ด conte!tDestroyed เพ !ห-.ลา( Data#ase *onnection
กร< "e# A$$lication ห(1ด!$งาน $u#lic void conte!tDestroyed@Servlet*onte!tvent ar
try
conn.close@
U catch @S'!ce$tion e! 'oer.et'[email protected]@.lo@'evel.S07B nullB e!U
U
เราจะ3ด source code &ง37ล8 9nit.+ava ดงั 'istin - 5.1
'istin - 5.1 โปรแกร' 9nit.+ava pacDage listener%
import Ea'asqlConnection%import Ea'asqlSRF,&ception%
import Ea'a&annotation(esource%import Ea'a&ser'letSer'letConte&t,'ent%import Ea'a&ser'letSer'letConte&tFistener%import Ea'a&sql4ataSource%
public class *nit implements Ser'letConte&tFistener -
K6esource3name="Jdbc/test"4
pri0ate DataSource ds5
pri0ate Connection conn5
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 61/129
,1
public 'oid conte&t*nitialiTed"Ser'letConte&t,'ent argB$ -
try -
conn = ds.1etConnection345 ar1'.1etSer0%etContet34.set!ttribute3"connection"7 conn45
: catch "SRF,&ception e$ -eprintStacDrace"$%:
:
public 'oid conte&t4estroyed"Ser'letConte&t,'ent argB$ - try -
conn.c%ose345: catch "SRF,&ception e$ -eprintStacDrace"$%:
::
5.2 การปรับปร"งโปรแกรม A""*oo)Servlet.java
โปรแกร' 9nit.+ava จะ'.หนา- !นการเ$ '2/กับ9าน&'#ล ดงันั นเราจ,ง2งแก 3&ค.ส ังการเ$ 'โ(ง9าน&'#ล- (# / !น37ล8 Add4oo3Servlet.+ava โด('&ั น2นดงัน
1. !หลบค.สั งO(esource"name = #Edbc/test#$pri'ate 4ataSource Edbcest%
2. แก 3&เ'=ด init@ !หเปนดังน public 'oid init"$ -
conn = 3Connection4 getSer'letConte&t"$getAttribute"#connection#$%:
เราจะ3ด โปรแกร' Add4oo3Servlet.+ava !ห'/ดัง 'istin - 5.2
'isitn - 5.2 โปรแกร' Add4oo3Servlet.+ava pacDage controller%import Ea'aio*+,&ception%import Ea'aio!rint.riter%import Ea'asqlConnection%import Ea'asqlSRF,&ception%import Ea'asqlStatement%import Ea'a&ser'let(equest4ispatcher%import Ea'a&ser'letSer'let,&ception%import Ea'a&ser'lethttpHttpSer'let%import Ea'a&ser'lethttpHttpSer'let(equest%import Ea'a&ser'lethttpHttpSer'let(esponse%
public class Add7ooDSer'let e&tends HttpSer'let -
pri'ate static final long serialVersionUID = 1F%
pri'ate Connection conn%
public 'oid init"$ -conn = 3Connection4 1etSer0%etContet34.1et!ttribute3"connection"45
:
protected 'oid process(equest"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception -
responsesetContentype"#te&t/html%charset=023#$%!rint.riter out = responseget.riter"$%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 62/129
,2
outprintln"#<html>#$%outprintln"#<head>#$%outprintln"#<title>Add a new booD</title>#$%outprintln"#</head>#$%outprintln"#<body>#$%
outprintln"#<h1> Add a new booD </h1>#$%
try -String isbn = requestget!arameter"#isbn#$%String author = requestget!arameter"#author#$%String title = requestget!arameter"#title#$%String priceStr = requestget!arameter"#price#$%float price = loat parseFloat"priceStr$%
Statement stmt = conncreateStatement"$%
String sql = #*8S,( *8+ booDs AF0,S"L# 6 isbn 6 #L)L# 6 title6 #L)L# 6 author 6 #L)# 6 price 6 #$#%
int num(ow = stmte&ecute0pdate"sql$%
(equest4ispatcher obE = requestget(equest4ispatcher"#hanDyouhtml#$%
if "num(ow == 1 PP obE Q= null$ -obEforward"request) response$%
:
: catch "SRF,&ception e&$ -outprintln"#,rror # 6 e&$%return%
:outprintln"#</body>#$%
outprintln"#</html>#$%outclose"$%:
protected 'oid do;et"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception)
*+,&ception -process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request)HttpSer'let(esponse response$ throws Ser'let,&ception)
*+,&ception -
process(equest"request) response$%::
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 63/129
,)
5.$ ทดสอบโปรแกรม
1. -.การ 4uild และ De$loy โปรแกร' "e#4aseD4
2. 7un โปรแกร' "e#4aseD4 -ั งน 2ง-.การรัน &yS' Data#ase Server ก/น). โปรแกร'จะแสดงหนา add4oo3.html !หเรา!ส/&'#ล
+ งเ' กด 6K "ลลพั=8กจะ4#กบัน-,กลง Ta#le #oo3s เ$/นเด(วกบัแบบฝกหัด- (
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 64/129
,
Exercise 6 การพั(นาโปรแกรม Servlet 3ilter
เน อหาทตอง'( ก)าก&อน การเ&(นโปรแกร' Servlet เพ /านค/าพารา'0เ2ร8แบบฝกหัดน จะเปนการพัฒนาโปรแกร' "e# A$$lication เพ =0บา(การ!$ Servlet :ilter !นการ2รวจ
สบการ loin เ&าส# /ระบบ โด(โปรแกร' Java Servlet บางโปรแกร'- (# / !น "e# A$$lication จะ4#ก :ilter เร(กเพ 2ัวสบส4านะการ loin ก/น- จะสา'าร4!$ โปรแกร'นั น3ด
6.1 การพัฒนาโปรแกรม Servlet 3ilter
โปรแกร' Servlet :ilter เปนโปรแกร' Java - ก.หนด&, น'า!น "e# A$$lication +, งจะดักการ-.งาน&ง
โปรแกร' Java Servlet !ด; แลวสา'าร4- จะแก 3&ค/า&งปเจค$น0ด re8uest และ res$onse ก/น- โปรแกร' Java
Servlet นั นจะ4#กเร(ก!$2/3ป 2ัว(/าง&งการพัฒนาโปรแกร' Servlet :ilter ค
● การควบค1'การ!$งาน Servlet หรการ-. Authentication
● การบลกการ!$งาน Servlet หร2รวจสบการ!$งาน Servlet
● การเปล (นแปลง&'#ล&งปเจค re8uest
โปรแกร' Servlet :ilter จะเปน โปรแกร' Java - im$lements 0นเ2ร8เ7ส- $ :ilter และ'เ'=ดหลกัคinit@ B destroy@ และ do:ilter@
เราสา'าร4- จะก.หนด!ห C7' !ด; !นโปรแกร' "e# A$$lication 4#ก :ilter จากโปรแกร' Servlet :ilter
!ด; โด(การก.หนดค/า!น we#.!ml า-0เ$/นค.ส ัง
<filter> <filter2name>Foginilter8ame</filter2name>
<filter2class> ?o1in+i%ter </filter2class>
</filter> <filter2mapping> <filter2name>Foginilter8ame</filter2name>
<url2pattern> /L </url2pattern>
</filter2mapping>
เปนการก.หนด!ห โปรแกร' C7' -1ก2วั- (# / !น "e# A$$lication น 2ง4#กดักโด( Servlet :ilter - $ 'oin:ilter
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 65/129
,(
แบบฝกหัดน จะก.หนด!ห' "e# Pae - $ loin.html +, งจะ-.การเร(กโปรแกร' 'oinServlet +, งจะ2รวจสบค/า username และ $assword - ป%นเ&า'า หาก4#ก2งกจะก.หนด!หค/า&งปเจค- $ loin:la เปนtrue @ก.หนด!ห&บเ&2&งปเจค loin:la เปนแบบ Session โด(การ setAttri#ute !หกับปเจค$น0ด%tt$Session
โปรแกร' "e# A$$lication น (งั' Servlet :ilter - $ 'oin:ilter +, งจะ-.หนา- /านค/า&งปเจค'oin:la - (# / !นปเจค$น0ด %tt$Session 4าหาก3'/พบหร'ค/าเปน false โปรแกร'จะระบ1 %TTP rror 1
@This re8uest re8uires %TTP authentication .
ส1ด-า(จะ'การเ&(นโปรแกร' Java Servlet - $ ShowServlet เพ แสดง&ควา'ว/า %ello"orld เพ แสดง !หเหนว/าโปรแกร'จะ4#กดักโด( 'oin:ilter
6.2 การเขยน&นา Lo-in หนา 'oin จะ' โปรแกร'สงโปรแกร'ค loin.html +, งจะเปน we# $ae - 'ลัก*<ะดงัร#ป และ' source
code 2า' 'istin - -.1 นกจากจะ' โปรแกร' 'oinServlet +, งจะ-.หนา- !นการ/านพารา'0เ2ร8- $ username
และ $assword พร'-ั ง2รวจสบว/า'ค/าเปน thana และ secret หร3'/ หาก!$/กจะก.หนดค/า 2วัแปร loin:la
เปน true แลวเกบลง!นปเจค$น0ด %tt$Session โปรแกร'น จะ' source code ดงั 'istin - -.2
รปท -.1 เวบหนา +ogin
'istin - -.1 โปรแกร' loin.html <html>
<head><title>Fogin !age</title> <meta http2equi'=#Content2ype# content=#te&t/html% charset=023#>
</head> <body> <form action="?o1inSer0%et" method="POST"> Fserame: <input name="username" /> <br>
Pass#ord: <input tpe="pass#ord" name="pass#ord" /> <br>
<input tpe="submit" 0a%ue="?o1in" /> </form> </body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 66/129
,,
Listin- ท $ 6.2 โปรแกรม Lo-inServlet.java pacDage controller%import Ea'aio%import Ea'anet%import Ea'a&ser'let%
import Ea'a&ser'lethttp%public class FoginSer'let e&tends HttpSer'let -
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$throws Ser'let,&ception) *+,&ception -
boolean loginflag=false%trBStrin1 username =re2uest.1etParameter3"username"45Strin1 pass#ord =re2uest.1etParameter3"pass#ord"45Sstem.out.print%n3"input username="Gusername G ": pass#ord="Gpass#ord45if3username.e2ua%s3"thana"4 MM pass#ord.e2ua%s3"secret"44B
%o1inf%a1=true5re2uest.1etSession34.set!ttribute3"%o1in+%a1"7 %o1inf%a145response.send6edirect3"sho#.do"45catch 3,ception e4 B
e.printStacHTrace345
:
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
:
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
:
public String getSer'let*nfo"$ - return #Short description#%
::
&ั น2นการพัฒนาโปรแกร'1. เลกเ'น# :ile New Dynamic "e# Pro+ect ก.หนด Pro+ect E :ilterDemo
2. คล0 :ก&วา- :ilterDemo New %T&' :ile
ก.หนด %T&' :ile Name E loin แลวกด :inish). !นหนา2/าง ditor เ&(น Source code &ง loin.html ดงั 'istin - -.1 แลว Save
. คล0 :ก&วา- :ilterDemo New Servlet
ก.หนด Pac3ae E controller B *lass Name E 'oinServlet.+ava แลวกด :inish
!นหนา2/าง ditor เ&(น Source code &ง 'oinServlet.+ava ดงั 'istin - -.2 แลว Save
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 67/129
,5
6.$ การเขยน Servlet 3ilter
โปรแกร' 'oin:ilter จะ-.หนา- !นการเร(ก attri#ute - $ loin:la และหาก3'/พบหร'ค/าเปน
false โปรแกร'จะระบ1 %TTP rror 1 @Cnauthorie โปรแกร' 'oin:ilter จะ' source code หลัก(# /- เ'=ด do:ilter@ ดัง 'istin - -.)
กร<น จะก.หนด!ห C7' เ[พาะ- เปน V.do จ,งจะเร(ก!$ :ilter - $ 'oin:ilter
!ห !$ cli$se สราง :ilter
จะเหนควา'เปล (นแปลง- "e# De$loyment Descri$tor ค' 'ine เพ0 '&, น'าดงัน <filter> <display2name>Foginilter</display2name> <filter2name>Foginilter</filter2name> <filter2class>filterFoginilter</filter2class> </filter>
<filter2mapping> <filter2name>Foginilter</filter2name> <url2pattern>do</url2pattern> </filter2mapping>
'istin - -.) เ'=ด do:ilter@ &ง โปรแกร' 'oin:ilter.+ava pacDage filter%import Ea'a&ser'let%import Ea'a&ser'lethttp%public class Foginilter implements ilter -
public 'oid destroy"$ -:
public 'oid doilter"Ser'let(equest request) Ser'let(esponse response) ilterChain chain$
throws *+,&ception) Ser'let,&ception - ttpSer0%et6e2uest re2 = 3ttpSer0%et6e2uest4 re2uest5
ttpSession session = re2.1etSession345 oo%ean f%a1 = 3oo%ean4 session.1et!ttribute3"%o1in+%a1"45 boo%ean %o1in+%a15 if 3f%a1 == nu%%4 B %o1in+%a1 = fa%se5 e%se B %o1in+%a1 = f%a15 if 3N%o1in+%a14 B ttpSer0%et6esponse res = 3ttpSer0%et6esponse4 response5 res.send,rror3ttpSer0%et6esponse.SC_UNAUTHORIZED 45 return5
chaindoilter"request) response$%
:public 'oid init"ilterConfig fConfig$ throws Ser'let,&ception -:
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 68/129
,-
& ัน2นการพฒันาโปรแกร'1. เลกหนา2/าง Pro+ects แลวคล0 :ก&วา- โหนด :ilterDemo จากนั นเลกค.สั ง New 6ther..
2. !น3ดะลก New :ile !หเลก *ateories -$ "e# +, งโปรแกร'กจะแสดง :ile Ty$es 2/าง; )า(!2*ateory น !หเราเลก :ilter แลวกด Ne!t
). ก.หนด *lass Name< เปน 'oin:ilter และ Pac3ae เปน filter แลวกด Ne!t
. !นหนา4ดั3ป !ห !$ค/า- ก.หนด3ว ดงัร#ป- -.2 แลวกด :inish
รปท -.2 การกหนดค*า&อง )ilter
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 69/129
,;
(. โปรแกร'จะ-.การแก 3&37ล8 we#.!ml เพ ระบ1 :ilter !ห'/- สราง&, น +, งเราสา'าร4- จะด#การแก 3&น 3ด โด(การ&(า(โหนด :ilterDemo "e#*ontent "4?9N: แลว ดบัเบ0ลคล0 :ก37ล8 we#.!ml
รปท -.3 !-ลลัพI+ของ Web eplo!%ent escriptor 7(eb.#%l8 เมอ a )ilter ส & Project
,. !นหนา2/าง ditor เ&(น Source code &งเ'=ด do:ilter@ &ง37ล8 'oin:ilter.+ava ดงั 'istin - -.) แลว Save
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 70/129
5
6.4 การเขยนโปรแกรม S#o7Servlet
โปรแกร' ShowServlet จะ-.หนา- เพ แสดง&ควา'ว/า %ello "orld และ!ห !$งาน :ilter
source code ดงั 'istin - -.'istin - -. เ'=ด $rocess7e8uest@ &งโปรแกร' ShowServlet.+ava \............... protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - !rint.riter out = responseget.riter"$%
responsesetContentype"#te&t/html%charset=023#$%
tr B
out.print%n3"<htm%>"45
out.print%n3"<head>"45
out.print%n3"<tit%e>Ser0%et Sho#Ser0%et</tit%e>"45
out.print%n3"</head>"45
out.print%n3"<bod>"45 out.print%n3"<h;> e%%o Eor%d </h;>"45
out.print%n3"</bod>"45
out.print%n3"</htm%>"45
fina%% B
out.c%ose345
:protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
:protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception - process(equest"request) response$%
::
& ัน2นการพฒันาโปรแกร'1. คล0 :ก&วา- :ilterDemo New Servlet
ก.หนด Pac3ae E view B *lass Name E ShowServlet
2. ก.หนด C7' &a$$in เปน /show.do ดงัร#ป- -. แลวกด :inish
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 71/129
51
รปท -." การกหนดค*า 4+ pattern
). !นหนา2/าง ditor เ&(น Source code &ง ShowServlet.+ava ดัง 'istin - -. แลวเลกค.สั ง Save
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 72/129
52
6.+ ขั !นตอนการทดสอบโปรแกรม1. -.การ 4uild และ De$loy โปรเจค :ilterDemo
2. -.การ 7un โปรเจค :ilterDemo). -ดลงรัน C7' - $ htt$<//localhost<--/:ilterDemo/show.do
แลวสังเก2"ลลพั=8 จะเหนว/าแสดง&"0ดพลาด %TTP 1
. -ดลงรัน C7' - $ htt$<//localhost<--/:ilterDemo/loin.html
แลวป%น username เปน thana และ $assword เปน secret
สังเก2ว/า"ลลัพ=8เปน(/าง3ร
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 73/129
5)
Exercise 8 การเขยนโปรแกรม JSP เพ อแส)ง.ลลัพ,
เน อหาทตอง'( ก)าก&อน การพัฒนาโปรแกร'เวบเพ 20ด2/กับ9าน&'#ลแบบฝกหัดน จะเปนการพัฒนาโปรแกร' JSP เพ แสดง&'#ลจาก9าน&'#ล ก-างโปรแกร' "e#
4rowser โด(จะเปนการพัฒนาโปรเจค "e#4aseD4 เพ เ20'
8.1 การพัฒนาโปรแกรม #ello.jsp
โปรแกร' hello.+s$ เปนโปรแกร' JSP เพ แสดง&ควา'และวนัเวลา&ง "e# Server โปรแกร'น จะเปนการแสดง"ลแบบ dynamic content จ,ง2งพัฒนาโด(!$)า*า JSP โด('&ั น2นการพัฒนาโปรแกร'ดงัน
1. คล0 :ก&วา- โหนด "e#4aseD4 New JSP :ile
ก.หนด JSP :ile Name E hello แลวกด :inish
ร#ป- ;.1 สราง JSP file
2. !นหนา2/าง editor !หแก 3& source code &ง37ล8 hello.+s$ !หเปน3ป2า' 'istin - ;.1
). -.การ 4uild และ De$loy โปรแกร' "e#4aseD4
. !นหนา2/าง Pro+ects เลก37ล8 hello.+s$ แลวเลก 7un โปรแกร'(. โปรแกร'จะแสดง"ลดงัร#ป- 1
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 74/129
5
'istin - ;.1 โปรแกร' hello.+s$ <UOpage contentype="text/html"U><UOpage page,ncoding="UTF-8"U><html> <head><title>Hello S!</title></head> <body> <h1>9y irst S!</h1> e%%o : Current time is : <= ne# Ja0a.uti%.Date34 > </body></html>
รปท /.2 ผลลพ!"&อง &ello.jsp
8.2 การพัฒนาโปรแกรม vie7*oo).jsp โปรแกร' view4oo3.+s$ เปนโปรแกร' JSP เพ แสดง&'#ล&ง Ta#le - $ #oo3s โปรแกร'น จะเร(ก!$
standard tas - ก.หนด3ว !น JST' +, ง-.!ห"# เ&(นโปรแกร' JSP 3'/2งเ&(น source code )า*า Java โด('ค.สั ง2/าง; - ส.คั?ดังน
;.2.1 การก.หนด Ta 'i#rary โปรแกร' view4oo3.+s$ จะเร(ก!$ JST' จ,งจ.เปน2ง'ค.สั ง Tali# เพ - จะประกา> 'i#rary ดังน @Pro+ect หร "e# Server 2ง'งเหน 'i#rary .+ar &ง JST' เพ !$งาน าจ2ง download เพ0 '
<UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/core# prefi&=#c#U><UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/sql# prefi&=#sql#U>
;.2.2 การก.หนด Datasource
โปรแกร' JSP น จะ-.การเ$ '2/กบั9าน&'#ล โด(จะ2ง!$ DataSource &งโปรเจค โด(สา'าร4
ก.หนด3ดสงว0=1. กร<- ' datasource +, งเ$ '2/9าน&'#ล- 2งการ(# /แลว กสา'าร4!$นัเด0'3ดเล( 2ัว(/างเ$/น
+d#c/test โด(3'/จ.เปน2งสราง dataSource &, น!ห'/ก2. กร<- (ัง3'/' datasource !ห !$ค.สั ง setDataSource เปน Ta เพ !หเราสา'าร4ก.หนดการเ$ '2/กับ
9าน&'#ล และก.หนดค/า3ว !น2ัวแปร2า'$ - ก.หนด
4,งแ'ว/าโปรเจค "e#4aseD4 จะ' Datasource (# /แลว แ2/แบบฝกหัดน จะก.หนด Datasource &, น'า!ห'/
โด(ก.หนดเปน2วัแปร- $ newdatasource ดงัน <sql5set4ataSource 'ar=#newdatasource# dri'er=#commysqlEdbc4ri'er#url=#Edbc5mysql5///test# user=#root# password=#root#/>
เพ เปนการเ$ '2/9าน&'#ล- (# /- C7' - $ +d#c<mys8l<///test
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 75/129
5(
Vสา'าร4!$ C7' &ง D4 3ด 2 แบบ ค +d#c<mys8l<//localhost<)),/test )รอ +d#c<mys8l<///test
ค.สั ง s8l<8uery เปนค.สั ง- จะเร(กด#&'#ล&ง9าน&'#ล- เ$ '2/!น DataSource - เปน +d#c/test หร
2ัวแปร newdatasource !นโปรแกร' view4oo3.+s$ เราจะ-.การเร(ก!$ค.สั ง S' ค select V from #oo3s โด(!$ค.สั ง s8l<8uery ดงัน
<sql5query 'ar=#db# dataSource=#Edbc/test#>S,F,C (+9 booDs</sql5query>
หร<sql5query 'ar=#db# dataSource=#V-newdatasource:#>S,F,C (+9 booDs</sql5query>
;.2.) การ!$ค.สั ง c<forach เพ แสดง"ล
การแสดงค/า&ง"ลลพั=8- 3ดจากการ uery 9าน&'#ล สา'าร4-.3ด การแจง&'#ล-ละแ4วโด(!$ค.สั งc<forach โด(โปรแกร'น จะแสดง&'#ล$ หนังส และ$ "# แ2/ง โด('ค.สั งดังน
<c5for,ach 'ar=#row# items=#V-dbrows:#>
V-rowtitle: 5 V-rowauthor: <br></c5for,ach>
&ั น2นการพัฒนาโปรแกร'น 'ดงัน 1. คล0 :ก&วา- โหนด "e#4aseD4 New JSP
ก.หนด JSP :ile Name E view4oo3 แลวกด :inish
2. เพ0 ' JST' 'i#rary เพ !ห JSP เร(ก!$งาน3ด @Download file +stl?im$l?1.2.+ar และ +stl?a$i?1.2.+ar - น htt$<//+stl.+ava.net/download.html
น. .Jar :ile -ั ง 2 3ป3ว- folder WT6&*ATUFli# +, งเปน $ath &ง- install A$ache Tomcat ดงัร#ป- ;.)
รปท /.3 การเพ+ % 6ST+ +ibrar! บน Apac&e To%cat
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 76/129
5,
เม !อด.ท ! Pro+ect Java 7esource 'i#raries A$ache Tomcat v,. จะเหนว/า' JST' เพ0 'แลว
รปท /." 6ST+ +ibrar! ท Apac&e To%cat สามารJใชงาน%!
). !นหนา2/าง editor !หแก 3& source code &ง37ล8 view4oo3.+s$ !หเปน3ป2า' 'istin - ;.2
. -.การ 4uild และ De$loy โปรแกร' "e#4aseD4
(. !นหนา2/าง Pro+ects เลก37ล8 view4oo3.+s$ แลวเลก 7un โปรแกร',. - "e# 4rowser เปล (น C7' เปน htt$<//localhost<--/"e#4aseD4/view4oo3.+s$ จะ3ด
"ลลพั=8ดัง2วั(/าง!นร#ป- ;.(
รปท /.$ ผลลพ!"&อง vie(9oo.jsp
'istin - ;.2 โปรแกร' view4oo3.+s$ <UOpage contentype=#te&t/html#U><UOpage page,ncoding=#023#U><UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/core# prefi&=#c#U><UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/sql# prefi&=#sql#U><html> <head>
<meta http2equi'=#Content2ype# content=#te&t/html% charset=023#>
<title>S! !age</title> </head> <body> <h1>S! !age</h1> <sql5set4ataSource 'ar=#newdatasource# dri'er=#commysqlEdbc4ri'er#
url=#Edbc5mysql5///test# user=#root# password=#root# />
<sql5query 'ar=#db# dataSource=#V-newdatasource:#>
S,F,C (+9 booDs</sql5query>
<c5for,ach 'ar=#row# items=#V-dbrows:#> V-rowtitle: 5 V-rowauthor: <br>
</c5for,ach>
</body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 77/129
55
Exercise 19 การพั(นาโปรแกรมเ#บ :nline *oo) Store
เน อหาทตอง'( ก)าก&อน การพัฒนาโปรแกร'เวบเพ 20ด2/กบั9าน&'#ล และการพัฒนาโปรแกร'เวบเพ 20ด2/กบั9าน&'#ล
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' JSP เพ สราง "e# :orm !ห"# !$เลกรา(การหนังส2/าง; - '(# / !น ta#le - $ #oo3s จากนั นจะแสดงรา(การ- "# !$เลกก'า-างเวบเพจ
19.1 การพัฒนาโปรแกรม select*oo)s.jsp
โปรแกร' select4oo3s.+s$ เปนโปรแกร' JSP - เ&(นเพ แสดงรา(การหนงัส- '(# / !น ta#le - $ #oo3s
ก'าแสดง!นร#ปแบบ&ง "e# :orm เพ !ห"# !$เลกรา(การหนังสและจ.นวนดงัร#ป- 1., -ั งน "e# :orm น จะเร(ก url - $ $rocessSelection เ' 'การกดป1 6' Select โปรแกร'น จะเร(ก!$ S' tas &ง JST' เพ แสดงรา(การ&'#ลรา($ หนังส โด(' source code ดงัแสดง!น 'istin - 1.1 และ'&ั น2นการพัฒนาโปรแกร'ดงัน
1. เร0 '2นสรางโปรแกร' "e#?4ase A$$lication โด(การสราง Pro+ect !ห'/ '& ัน2นดงัน 1. เลกเ'น# :ile New Pro+ect ดังร#ป- 1.1
2. รปท 1.1 การสรางโปรเจ/0 Web Application
). เลกร#ป :older $ "e# และเลก Dynamic "e# Pro+ect ดังร#ป- 1.2
รปท 1.2 การสรางโปรเจค Web Application
. !หก.หนด Pro+ect Name< เปน "e#A$$
ส/วนการเกบ :ile cli$se จะ!$ Directory - 4า'เ' ครั งเป5ด&, น'าเปน Default
แ2/4า2งการระบ1 กสา'าร4คล0กเคร งห'า(ก @Cnchec3 แลว-.การระบ1 Directory !ห'/ 3ด
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 78/129
5-
ดงัร#ป- 1.1 จากนั นกด ป1 6' Ne!t
รปท 1.3 การกหนดชอโปรเจค
(. แสดง :older - เกบ source code และ 6ut$ut folder @- เกบ *lass file
ค =directory - !ส/ก/นรัน cli$se>FsrcF และ =directory - !ส/ก/นรัน cli$se>F#uildFclassesF
ดงัร#ป- 1.) จากนั นกด ป1 6' Ne!t
รปท 1." แสดงทเกบ source coe และ Output irector!
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 79/129
5;
,. แสดง *onte!t root และ *ontent directory ดงัร#ป- 1.2
รปท 1.$ แสดงชอ Conte#t root และ Content irector!
5. คล0 :ก&วา- Pro+ect 4oo36nline New JSP :ile
ก.หนด JSP :ile Name E select4oo3s แลวกด :inish
-. !นหนา2/าง editor !หแก 3& source code &ง37ล8 select4oo3s.+s$ !หเปน3ป2า' 'istin - 1.1
;. กดป1 6' Save
รปท 1.' )วอ$*างผลลพ!"&องโปรแกร% select9oos.jsp
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 80/129
-
'istin - 1.1 โปรแกร' select4oo3s.+s$
<UOpage contentype=#te&t/html#U>
<UOpage page,ncoding=#023#U> <Kta1%ib uri="http://Ja0a.sun.com/Jsp/Jst%/core" prefi="c"> <Kta1%ib uri="http://Ja0a.sun.com/Jsp/Jst%/s2%" prefi="s2%">
<Q4+CK!, H9F !07F*C #2//.MC//44 H9F @B1 ransitional//,8# #http5//wwwwMorg/(/html@/loosedtd#><html> <head> <meta http2equi'=#Content2ype# content=#te&t/html% charset=023#> <title>S! !age</title> </head>
<body> <s2%:setDataSource 0ar="ds" dri0er="com.ms2%.Jdbc.Dri0er"
ur%="Jdbc:ms2%:///test" user="root" pass#ord="root" />
<s2%:2uer 0ar="rs" dataSource="Bds"> se%ect L from booHs </s2%:2uer>
<h1>Select 7ooDs</h1> <form action=#!rocessSelection# method=#!+S#> <tab%e border=";"> <thead>
<tr> <th></th> <th> Tit%e </th> <th> !uthor </th> <th> Price</th> </tr> </thead> <tbod> <c:for,ach 0ar="booH" items="Brs.ro#s">
<tr> <td><input tpe="checHbo" name="isbn"
0a%ue="BbooH.isbn" /> </td> <td>BbooH.tit%e</td> <td>BbooH.author</td> <td>BbooH.price</td> </tr> </c:for,ach> </tbod> </tab%e> <input type=#submit# 'alue=#Select# /> </form>
</body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 81/129
-1
19.2 การพัฒนาโปรแกรม *oo).java
โปรแกร' 4oo3.+ava เปนคลาส- ' attri#ute - สดคลงกบั ta#le - $ #oo3s โด(' source code ดงั'istin - 1.2 และ'&ั น2นการพัฒนาดงัน
1. คล0 :ก&วา- Pro+ects 4oo36nline New *lass..
2. ก.หนด Pac3ae E model B *lass Name E 4oo3 กด :inish
รปท 1., การ ;e( Class 9oo.java เพอใชเป#น 6ava9ean ทมโ0รงสรางเ!$Gกั" Table
). เพ0 ' attri#ute )า(!นคลาส 4oo3Action:orm ดงัน pri'ate String isbn%pri'ate String author%pri'ate String title%pri'ate double price%
หรpri'ate String isbn)author)title%pri'ate double price%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 82/129
-2
. -.การ enca$sulate attri#ute @สรางเ'=ด etter และ setter
โด(การคล0 :ก&วา)า(!นหนา2/าง editor &ง source code
แลวเลก Source Henerate Hetters and Setters... ดังร#ป 1.-
รปท 1.- การ ;e( Class 9oo.java เพอใชเป#น 6ava9ean ทมโ0รงสรางเ!$Gกั" Table
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 83/129
-)
(. เลกว/าจะสราง etters หร setters หร-ั งสง(/าง โด(การเลก *hec3 #o!
รปท 1./ กหนด Encapsulation 'ห Attribute หรอ 0nstance Me%ber
'istin - 1.2 โปรแกร' 4oo3.+ava pacDage model%
public class 7ooD -
pri'ate String isbn)author)title% pri'ate double price%
public String get*sbn"$ - return isbn% : public 'oid set*sbn"String isbn$ - thisisbn = isbn% : public String getAuthor"$ - return author% : public 'oid setAuthor"String author$ - thisauthor = author%
:
public String getitle"$ - return title% : public 'oid setitle"String title$ - thistitle = title% : public double get!rice"$ - return price% : public 'oid set!rice"double price$ - thisprice = price% :
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 84/129
-
19.$ การพัฒนาโปรแกรม Cart.java โปรแกร' *art.+ava เปนคลาส- -.หนา- คลา(กบั sho$$in cart เพ เกบปเจค$น0ด 4oo3 2า'รา(การ
หนังส- "# !$เลก โด(าง0งจากห'า(เล& is#n +, งโปรแกร'จะ-.การคนรา($ หนงัสจาก ta#le - $ #oo3s
ห'า(เล& is#n - าง0ง แลวจะแปลงเปนปเจค$น0ด #oo3s ก/นจะ!ส/ลง!น cart โปรแกร'น จะ' source code
ดงั 'istin - 1.) และ'&ั น2นการพัฒนาดงัน
1. คล0 :ก&วา- Pro+ects 4oo36nline New *lass
ก.หนด Pac3ae E model B *lass Name E *art.+ava กด :inish
2. !นหนา2/าง editor !หแก 3& source code &ง37ล8 *art.+ava !หเปน3ป2า' 'istin - 1.) แลว Save
'istin - 1.) โปรแกร' *art.+ava pacDage model%import Ea'asqlConnection%import Ea'asql(esultSet%
import Ea'asqlSRF,&ception%import Ea'asqlStatement%import Ea'autilFinDedFist%import Ea'autilFist%
public class Cart -
Fist <7ooD> booDs% Connection conn%
public 'oid add*tem"String isbn$ - try -
Statement stmt = conncreateStatement"$%
String sql = #S,F,C from booDs where isbn=L# 6 isbn 6 #L#%
(esultSet rs = stmte&ecuteRuery"sql$%
while "rsne&t"$$ - 7ooD bD = new 7ooD"$%
bDset*sbn"isbn$%
bDsetAuthor"rsgetString"#author#$$%
bDsetitle"rsgetString"#title#$$%
bDset!rice"rsgetloat"#price#$$%
booDsadd"bD$%
:
:catch "SRF,&ception e&$ -e&printStacDrace"$%
:
:
public Fist<7ooD> get7ooDs"$ - return booDs%
: public Cart"Connection conn$ -
thisconn = conn%
booDs = new FinDedFist<7ooD>"$%
: public 'oid remo'e*tem"String isbn$ -
booDsremo'e"isbn$%
::
19.4
การพัฒนาโปรแกรมProcessSelection.java
โปรแกร' ProcessSelection.+ava เปนโปรแกร' Java Servlet - -.หนา- /านค/าพารา'0เ2ร8- $ is#n +, ง
ส/ง'าจากหนา "e# :orm &งโปรแกร' select4oo3s.+ava โด(!$ค.ส ัง etParameter0alues ดงัน
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 85/129
-(
String isbn = requestget!arameteralues"#isbn#$%
จากนั นจะ-.การเร(ก session เพ เร(ก attri#ute - $ cart ก'าโด(!$ค.สั งดังน @-. *astin เปน *art เน งจาก %tt$Session.etAttri#ute 'ัน 7eturn 7eference $น0ด 6#+ect ก'า
HttpSession session = requestgetSession"true$%
Cart cart = "Cart$ sessiongetAttribute"#cart#$%
กร<- 3'/พบ attri#ute - $ cart โปรแกร'จะ-.การเกบ attri#ute น &, น!ห'/ โด(!$ค.สั งดงัน
if "cart == null$ -
Ser'letConte&t ct& = getSer'letConte&t"$%
Connection conn = "Connection$ ct&getAttribute"#connection#$%
cart = new Cart"conn$%
sessionsetAttribute"#cart#) cart$%
:
เ' 3ดค/า attri#ute - $ cart 'าแลว โปรแกร'กจะเกบรา(การ$ is#n &งหนังส- "# !$เลกลง!นปเจค&ง cart โด(!$ค.สั งดงัน
for "int i = B% i < isbnlength% i66$ -
cartadd*tem"isbni$%
:
เ' ส0 นส1ดการ-.งานโปรแกร'กจะ3ปเร(ก C7' - $ view.cart 2/3ป โด(!$ค.สั งดังน
(equest4ispatcher pg = requestget(equest4ispatcher"#'iewCartEsp#$%
pgforward"request) response$
ส.หรับโปรแกร'น จะ' source code &งเ'=ด $rocess7e8uest ดัง 'istin - 1.
& ัน2นการพฒันาโปรแกร' ProcessSelection.+ava 'ดงัน
1. คล0 :ก&วา- Pro+ects 4oo36nline New Servlet
ก.หนด Pac3ae E controller B *lass Name E ProcessSelection
2. !นหนา2/าง ditor เ&(น Source code &ง ProcessSelection.+ava ดงั 'istin - 1. แลว Save
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 86/129
-,
'istin - 1. เ'=ด $rocess7e8uest@ &งโปรแกร' ProcessSelection.+ava
pacDage controller%
import Ea'aio*+,&ception%import Ea'aio!rint.riter%import Ea'asqlConnection%
import Ea'a&ser'let(equest4ispatcher%import Ea'a&ser'letSer'letConte&t%import Ea'a&ser'letSer'let,&ception%import Ea'a&ser'lethttpHttpSer'let%import Ea'a&ser'lethttpHttpSer'let(equest%import Ea'a&ser'lethttpHttpSer'let(esponse%import Ea'a&ser'lethttpHttpSession%
import modelCart%
public class !rocessSelection e&tends HttpSer'let -
pri'ate static final long serialVersionUID = 1F%
public !rocessSelection"$ - super"$% :
protected 'oid do;et"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$% :
protected 'oid do!ost"HttpSer'let(equest request) HttpSer'let(esponse response$ throws Ser'let,&ception) *+,&ception - process(equest"request) response$% :
protected 'oid process(equest"HttpSer'let(equest request) HttpSer'let(esponse response$
throws Ser'let,&ception) *+,&ception -
PrintEriter out = response.1etEriter345 response.setContentTpe3"tet/htm%5charset=FT+-8"45
Strin1@A isbn = re2uest.1etParameter9a%ues3"isbn"45
ttpSession session = re2uest.1etSession3true45 Cart cart = 3Cart4 session.1et!ttribute3"cart"45 if 3cart == nu%%4 B Ser0%etContet ct = 1etSer0%etContet345 Connection conn = 3Connection4 ct.1et!ttribute3"connection"45
cart = ne# Cart3conn45 session.set!ttribute3"cart"7 cart45 for 3int i = '5 i < isbn.%en1th5 iGG4 B cart.addItem3isbn@iA45 cart = 3Cart4 session.1et!ttribute3"cart"45 6e2uestDispatcher p1 = re2uest.1et6e2uestDispatcher3"0ie#Cart.Jsp"45 p1.for#ard3re2uest7 response45
out.c%ose345 ::
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 87/129
-5
19.+ การพัฒนาโปรแกรม nit.java
โปรแกร' 9nit.+ava เปนโปรแกร'ประเ)- Servlet*onte!t'istener เพ เ$ '2/กบั9าน&'#ลเ' เร0 '2นแลวเกบปเจค connection 3ว)า(!น Servlet*onte!t โด('&ั น2นการพัฒนาเ$/นเด(วกับการพฒันาโปรแกร'9nit.+ava !น !ercise 5 การพัฒนา "e#4ase D4 โด(คลาสประเ)- "e# 'istener @หนา ,
และจะ2ง'การสราง37ล8 conte!t.!ml และแก 3& we#.!ml แบบเด(วกนักับ !ercise ดงักล/าว
'istin - 1.( Source *ode &งโปรแกร' 9nit.+ava
pacDage listener%import Ea'asqlConnection%import Ea'asqlSRF,&ception%import Ea'autilloggingFe'el%import Ea'autilloggingFogger%import Ea'a&annotation(esource%import Ea'a&ser'letSer'letConte&t,'ent%import Ea'a&ser'letSer'letConte&tFistener%import Ea'a&sql4ataSource%public class *nit implements Ser'letConte&tFistener -
public *nit"$ -// +4+ Auto2generated constructor stub
:O(esource"name = #Edbc/test#$pri'ate 4ataSource ds%pri'ate Connection conn%public 'oid conte&t*nitialiTed"Ser'letConte&t,'ent argB$ -
try -Connection conn%
conn = dsgetConnection"$%argBgetSer'letConte&t"$setAttribute"#connection#) conn$%Systemoutprintln"#7ooD +nline 5 9ySRF Connection Created #$%
: catch "SRF,&ception e$ -eprintStacDrace"$%
::public 'oid conte&t4estroyed"Ser'letConte&t,'ent argB$ -
try -connclose"$%Systemoutprintln"#7ooD +nline 5 9ySRF Connection 4estroyed#$%
: catch "SRF,&ception e&$ -FoggergetLogger "*nitclassget8ame"$$log"Fe'elSEVERE ) null) e&$%
:
::
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 88/129
--
19. การพัฒนาโปรแกรม vie7Cart.jsp โปรแกร' view*art.+s$ เปนโปรแกร' JSP - เ&(นเพ แสดงรา(การหนงัส- "# !$เลก และเกบ!น
sho$$in cart ก'าแสดง โปรแกร'น จะ!$ !$ression 'anuae เพ แสดง&'#ล!น session ดงั 'istin - 1., และ'& ัน2นการพฒันาดงัน
1. คล0 :ก&วา- Pro+ect 4oo36nline New JSP :ile
ก.หนด JSP :ile Name E view*art แลวกด :inish
2. !นหนา2/าง editor !หแก 3& source code &ง37ล8 view*art.+s$ !หเปน3ป2า' 'istin - 1., แลว Save
'istin - 1., โปรแกร' view*art.+s$
<UOpage contentype=#te&t/html#U>
<UOpage page,ncoding=#023#U><UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/core# prefi&=#c#U><Q4+CK!, H9F !07F*C #2//.MC//44 H9F @B1 ransitional//,8#
#http5//wwwwMorg/(/html@/loosedtd#><html>
<head> <meta http2equi'=#Content2ype# content=#te&t/html% charset=023#>
<title>Cart</title>
</head> <body> <h1>Selected 7ooDs in Cart</h1> <c:for,ach 0ar="booH" items="BsessionScope.cart.booHs"> BbooH.tit%e <br>
</c:for,ach>
</body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 89/129
-;
19.5 ขั !นตอนการทดสอบโปรแกรม
1. -.การ De$loy โปรเจค 4oo36nline
2. -ดลงรัน C7' - $ htt$<//localhost<--/4oo36nline/select4oo3s.+s$
-ดลงเลกรา(การหนังส แลวกดป1 6' Select
โปรแกร'จะเร(ก C7' - $ htt$<//localhost<--/4oo36nline/$rocessSelection
เพ แสดงรา(การ!น *art ดังร#ป- 1.1
). -ดลงกลบั3ปเลกรา(การหนงัสเพ0 'เ20' หรเร(ก C7' - $ htt$<//localhost<--/4oo36nline/view*art.+s$ โด(2รงแลวสังเก2"ลลพั=8
รปท 1.1 การแสดง&อ%ล'น Cart
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 90/129
;
Exercise 11 การสราง Csto! Ta-s ส$%รับโปรแกรม JSP
เน อหาทตอง'( ก)าก&อน
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' JSP เพ สราง custom ta โด(จะเร0 'แสดงการพฒันาโปรแกร'2ั งแ2/การเ&(น JSP โด(3'/ !$ custom tas แลวสราง ta โด(!$ Ta %andler และ&ั น2นส1ด-า(จะเปนการสรางta โด(!$ Ta :ile โด(โปรแกร' JSP - เ&(นจะเปนการพ0'พ8&ควา'ว/า %ello !!!! จ.นวนส0บครั ง โด(- !!!! ค$ - ส/ง'า-างพารา'0เ2ร8- $ name
11.1 การพัฒนาโปรแกรม #ello.jsp
โปรแกร' hello.+s$ เปนโปรแกร' JSP - เ&(นโด(!$ scri$tlet เร(กค.สั ง)า*าจาวา โด(จะ'ค.ส ัง!นการ/านพารา'0เ2ร8&งปเจค re8uest - $ name แลวจะพ0'พ8&ควา' %ello !!!! จ.นวนส0บครั ง โด(โปรแกร'น จะ' source code ดัง 'istin - 11.1 และ'& ัน2นการพฒันาโปรแกร'ดงัน
1. เลกเ'น# :ile New Dynamic "e# Pro+ect
ก.หนด Pro+ect Name E JSPDemo
2. คล0 :ก&วา- Pro+ect JSPDemo จากนั นเลกค.สั ง New JSP :ile
ก.หนด JSP :ile Name E hello
). !นหนา2/าง editor !หแก 3& source code &ง37ล8 hello.+s$ !หเปน3ป2า' 'istin - 11.1
. -.การ 4uild และ De$loy โปรแกร' JSPDemo
(. !นหนา2/าง Pro+ects เลก37ล8 hello.+s$ แลวเลก 7un โปรแกร'โด(!หส/ง"/านพารา'0เ2ร8-าง C7' เ$/นhtt$<//localhost<--/JSPDemo/hello.+s$;na!e<T#anisa เราจะ3ด"ลการรันดงัร#ป- 11.1
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 91/129
;1
'istin - 11.1 โปรแกร' hello.+s$ <UOpage contentype=#te&t/html#U><UOpage page,ncoding=#023#U><html> <head>
<meta http2equi'=#Content2ype# content=#te&t/html% charset=023#> <title>S! 4emo</title> </head> <body>
<h1>S! 4emo</h1> <U String name = requestget!arameter"#name#$% U> <U for "int i = B% i < 1B% i66$ - U> Hello <U= name U> <br> <U : U> </body></html>
รปท 11.1 -ลลัพI+ของโปรแกรม &ello.jsp
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 92/129
;2
11.2 การพัฒนาโปรแกรม #elloTa-.jsp
โปรแกร' helloTa.+s$ เปนโปรแกร' JSP - -.งานแบบเด(วกบัโปรแกร' hello.+s$ แ2/การพัฒนา โปรแกร'น จะเ&(นโด(การสราง *ustom ta - $ NameTa%andler การสราง *ustom Ta จะ2ง'การพัฒนา โปรแกร' ) ส/วน ดังน
• สราง Java *lass Ta %andler =NameTa%andler.+ava> จะ-.งานเ' *ustom Ta 4#กเร(ก!$• สราง Ta 'i#rary Descri$tor =&yTas.tld> เปน2ัว=0บา( attribute $"าง%+าย(น element ของ ta
$/ัอย"าง element และ attribute → Ielement attribute1EQAQ I/element
• สราง JSP file =helloTa.+s$> เพ เร(ก!$งาน *ustom Ta
รปท 11.2 Overvie( 0GามสัมพันI+ของ Custo% Tag )iles
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 93/129
;)
11.2.1 สราง37ล8 Java *lassTa %andler 37ล8 Ta %andler จะเปนโปรแกร'จาวา- พัฒนา&, นเพ ระบ1ว/า เ' เร(ก!$ ta แลวจะ2ง-.ค.สั ง(/าง3ร
!น- น จะก.หนด$ Ta เปน NameTa และโปรแกร'จาวาเปน NameTa%andler โด(โปรแกร'จะ-.การ/านค/าพารา'0เ2ร8 name และพ0'พ8&ควา' %ello !!!! จ.นวนส0บครั ง การสราง37ล8 Ta %andler จะ'& ัน2นดงัน 1. คล0 :ก&วา- Pro+ect JSPDemo จากนั นเลกค.สั ง New *lass
ก.หนด Pac3ae E tas B *lass Name E NameTa%andler
เลก Su$er*lass E Sim$leTaSu$$ort
รปท 11.3 การสราง 6ava Tag *anler Class
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 94/129
;
2. -.การ 9m$lement ðod $ doTa@ และ สราง method ประเ)- setter เพ0 '$ setName@
รปท 11." การ 0%ple%ent %et&o ทจะJกเร$กเมอมการใชCusto% Tag
). หนา2/าง ditor จะแสดง37ล8 NameTa%andler.+ava !หเ&(น source code ดงั 'istin - 11.2
'istin - 11.2 โปรแกร' NameTa%andler.+ava
import Ea'aio*+,&ception%
import Ea'a&ser'letEspsp,&ception%import Ea'a&ser'letEspsp.riter%import Ea'a&ser'letEsptage&tspragment%import Ea'a&ser'letEsptage&tSimpleagSupport%
public class 8ameagHandler e&tends SimpleagSupport -
String name%public 'oid set8ame"String name$ -
thisname = name%
:
O+'erridepublic 'oid doag"$ throws sp,&ception) *+,&ception -
superdoag"$% sp.riter out = getspConte&t"$get+ut"$% try - spragment f = getsp7ody"$% if "f Q= null$ fin'oDe"out$%
for "int i = B% i < 1B% i66$ - outprintln"#Hello # 6 name 6 #<br>#$% : : catch "Ea'aio*+,&ception e&$ -
throw new sp,&ception"#,rror in 8ameagHandler tag#) e&$% ::
:
11.2.2 สราง Ta 'i#rary Descri$tor
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 95/129
;(
37ล8น จะ!$เกบ รา($ Ta 2/าง; - '(# /เพ สา'าร4น. ta 2/าง; 'า!$ !นโปรแกร' JSP
โด(!$ค.สั ง IXtali# ...X
การสราง Ta 'i#rary Descri$tor จะ'&ั น2นดงัน 1. คล0 :ก&วา- Pro+ect JSPDemo เลก New :older
เลก JSPDemo "e#*ontent "4?9N: แลว ก.หนด :older name E tlds
รปท 11.$ สราง )oler เพอเก/" Tag +anguage escriptor
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 96/129
;,
2. เลก Pro+ect JSPDemo "e#*ontent "4?9N: tlds
คล0ก&วา- :older tlds
ก.หนด T'D Name E &yTas.tld === !ห !ส/ นา'สก1ล tld ดว( แลว กด :inish
รปท 11.' การสราง )ile Tag +ibrar! escriptor
). หนา2/าง ditor จะแสดง37ล8- $ &yTas.tld - (# / !นโ7ลเดร8 F"e#*ontentF"4?9N:Ftlds
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 97/129
;5
. 9m$lement code ดงั 'istin - 11.)
'istin - 11.) โปรแกร' &yTas.tld
<W&ml 'ersion="1." encoding="UTF-8"W><taglib 'ersion="!.1" &mlns="http//#a$a.sun.%om/xml/ns/#a$aee"
&mlns5&si="http//&&&.&'.org/!1/()LS%hema-instan%e"&si5schemaFocation="http//#a$a.sun.%om/xml/ns/#a$aee*
http//#a$a.sun.%om/xml/ns/#a$aee/&e,-#sptagli,rar!1.xs"><tlib2'ersion>1B</tlib2'ersion><short2name>9yags</short2name><uri>/.,72*8/tlds/9yags</uri><tag>
<name>8ameagHandler</name><tag2class>tags8ameagHandler</tag2class><body2content>scriptless</body2content><attribute>
<name>name</name><rte&pr'alue>true</rte&pr'alue><type>Ea'alangString</type>
</attribute></tag>
</taglib>
11.2.) เ&(นโปรแกร' helloTa.+s$
จะเร(ก!$ Ta - $ NameTa โด(จะ' source code ดงั 'istin - ) การสรางโปรแกร' helloTa.+s$ จะ' &ั น2นดงัน
1. เลกหนา2/าง Pro+ects แลวคล0 :ก&วา- โหนด JSPDemo จากนั นเลกค.สั ง New 6ther...2. !น3ดะลก New :ile !หเลก *ateories -$ "e# +, งโปรแกร'กจะแสดง :ile Ty$es 2/าง; )า(!2
*ateory น !หเราเลก JSP แลวกด Ne!t
). ก.หนด JSP :ile Name< เปน helloTa แลวกด :inish
. !นหนา2/าง editor !หแก 3& source code &ง37ล8 helloTa.+s$ !หเปน3ป2า' 'istin - 11.
(. -.การ run โปรแกร' จะ3ด"ลลพั=8เ$/นเด(วกับโปรแกร' hello.+s$
'istin - 11. โปรแกร' helloTa.+s$ <UOpage contentype="text/html"U>
<UOpage page,ncoding="UTF-8"U> <Kta1%ib uri="/WEB-IN/tl!s/#Ta$s" prefi="%#Ta$s">
<Q4+CK!, H9F !07F*C #2//.MC//44 H9F @B1 ransitional//,8# #http5//wwwwMorg/(/html@/loosedtd#><html><head><meta http2equi'="0ontent-Tpe" content="text/html %harset2UTF-8"><title>S! 4emo</title></head><body>
<h1>S! 4emo</h1>
<mTa1s:ameTa1and%er name="T&anisa" /> </body>
</html>
11.$ การพัฒนาโปรแกรม #elloJSTL.jsp โปรแกร' helloJST'.+s$ เปนโปรแกร' JSP - -.งานเ$/นเด(วกบัโปรแกร'- "/าน'าแ2/จะ-.การเร(ก!$
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 98/129
;-
JSP Standard Ta 'i#rary !นการพ0'พ8&ควา' %ello !!! ส0บครั ง แ-นการเ&(นค.สั ง scri$tlet โด(โปรแกร'น จะ' source code ดัง 'istin - 11.( และจะ'&ั น2นการพฒันาโปรแกร'ดงัน
1. คล0 :ก&วา- Pro+ect JSPDemo เลก New JSP :ile
ก.หนด JSP :ile Name E helloJST' แลวกด :inish
2. 2รวจสบ JST' 'i#raries - 2ง!$งาน 4า3'/' !ห-.การ im$ort เ&า'า2า'หวั& 2. เพ0 ' JST' 'i#rary เพ !ห JSP เร(ก!$งาน3ด @หนา- 5(
รปท 11., ตรGจสอ" +ibrar! ของ 6ST+
). !นหนา2/าง editor !หแก 3& source code &ง37ล8 helloJST'.+s$ !หเปน3ป2า' 'istin - 11.(
. -.การ run โปรแกร' โด(ก.หนด C7' เปน htt$<//localhost<--/JSPDemo/helloJST'.+s$YnameEThanisa
จะ3ด"ลลัพ=8เ$/นเด(วกับโปรแกร' hello.+s$
'istin - 11.( โปรแกร' helloJST'.+s$ <UOpage contentype=#te&t/html#U><UOpage page,ncoding=#023#U><UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/core# prefi&=#c#U><html>
<head> <meta http2equi'=#Content2ype# content=#te&t/html% charset=023#>
<title>S! 4emo</title>
</head> <body> <h1>S! 4emo</h1> <c:for,ach 0ar="i" be1in=";" end=";'">
e%%o Bparam.name <br>
</c:for,ach> </body></html>
11.4 การพัฒนาโปรแกรม #elloTa-3ile.jsp
JSP 2. น1?า2!หเราสราง custom ta โด(การเ&(น37ล8 html หร JSP แ-น- จะเ&(นโปรแกร')า*าจาวา
+, ง-.!หง/า(2/การพัฒนา !น- น เราจะพัฒนาโปรแกร' helloTa:ile.+s$ +, งจะ-.การเร(ก!$ custom ta - $ NameTa:ile - เปน ta file +, งเปนโปรแกร' JSP โด('& ัน2นการพฒันาดงัน
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 99/129
;;
11..1 สราง Ta :ile 37ล8น จะ-.หนาน เปน2วัจัดการ Ta โด(เ&(นเปนโปรแกร' JSP และ'&ั น2นการพัฒนาดงัน
1. สราง :older $ tas )า(!2 F"e#*ontentF"4?9N:F
2. คล0 :ก&วา- :older tas ก.หนด :ile Name E NameTa:ile ดังร#ป
รปท 11.- การสราง Tag )ile
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 100/129
1
). หนา2/าง ditor !ห im$lement source code ดงั 'istin - 11.,
'istin - 11., โปรแกร' NameTa:ile.ta <UOtag description=#ag 8ame# page,ncoding=#023#U><UOtaglib uri=#http5//Ea'asuncom/Esp/Estl/core# prefi&=#c#U>
<c5for,ach 'ar=#i# begin=#1# end=#1B#>
Hello V-paramname: <br>
</c5for,ach>
. เน งจาก' Ta Name !ห'/'าเพ0 ' กร<- :ile JSP ' Ta $ น 4#กเร(ก!$'ันจะหา Ta %andler 'า-.งาน โด(ด#จาก IXtali# uriER/"4?9N:/tlds/&yTasR $refi!ERmyTasR
X
+, งกค :ile &yTas.tld - เราสราง&, น'า ดังนั น2งเพ0 ' *onfiuration $ Ta !ห'/ เ&า3ป
ดัง 'istin - 11.5
'istin - 11.5 เพ0 ' Ta Name !ห'/เ&า- Ta 'i#rary Descri$tor @&yTas.tld <W&ml 'ersion="1." encoding="UTF-8"W><taglib 'ersion="!.1" &mlns="http//#a$a.sun.%om/xml/ns/#a$aee"
&mlns5&si="http//&&&.&'.org/!1/()LS%hema-instan%e"&si5schemaFocation="http//#a$a.sun.%om/xml/ns/#a$aee*
http//#a$a.sun.%om/xml/ns/#a$aee/&e,-#sptagli,rar!1.xs"><tlib2'ersion>1B</tlib2'ersion><short2name>9yags</short2name><uri>/.,72*8/tlds/9yags</uri><tag>
<name>8ameagHandler</name>
<tag2class>tags8ameagHandler</tag2class><body2content>scriptless</body2content><attribute>
<name>name</name><rte&pr'alue>true</rte&pr'alue><type>Ea'alangString</type>
</attribute></tag>
<Q22??????????????????????????????????????????????????????????22>
<ta1-fi%e> <name>ameTa1+i%e</name> <path>/E,-I+/ta1s/ameTa1+i%e.ta1</path> <attribute>
<name>name</name>
<rtepr0a%ue>true</rtepr0a%ue> <tpe>Ja0a.%an1.Strin1</tpe>
</attribute> </ta1-fi%e>
<Q22??????????????????????????????????????????????????????????22>
</taglib>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 101/129
11
11..2 เ&(นโปรแกร' helloTa:ile.+s$
โปรแกร' helloTa:ile.+s$ จะเร(ก!$ Ta - $ NameTa:ile '&ั น2นดงัน 1. คล0 :ก&วา- Pro+ect JSPDemo จากนั นเลกค.สั ง New JSP :ile
2. ก.หนด :ile Name E helloTa:ile แลวกด :inish
). !นหนา2/าง editor !หแก 3& source code &ง37ล8 helloTa:ile.+s$ !หเปน3ป2า' 'istin - 11.-
. -.การ run โปรแกร' โด(ก.หนด C7' เปน htt$<//localhost<--/JSPDemo/helloTa:ile.+s$YnameEThanisa
จะ3ด"ลลัพ=8เ$/นเด(วกับโปรแกร' hello.+s$
'istin - 11.- โปรแกร' helloTa:ile.+s$
<UOpage contentype=#te&t/html#U><UOpage page,ncoding=#023#U><UOtaglib uri=#/.,72*8/tlds/9yags# prefi&=#myags# U><Q4+CK!, H9F !07F*C #2//.MC//44 H9F @B1 ransitional//,8#
#http5//wwwwMorg/(/html@/loosedtd#><html>
<head> <meta http2equi'=#Content2ype# content=#te&t/html% charset=023#>
<title>S! 4emo</title>
</head> <body> <h1>S! 4emo</h1> <mTa1s:ameTa1+i%e />
</body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 102/129
12
Exercise 12 การพั(นาโปรแกรมเ#บโ)ย/' Strt 3ra!e7or)
เน อหาทตอง'( ก)าก&อน การพัฒนาโปรแกร'เวบเพ 20ด2/กบั9าน&'#ล
แบบฝกหัดน จะเปนการพัฒนาโปรแกร' "e# A$$lication โด(!$ Struts :ramewor3 โด(การปรับปร1ง โปรแกร'เวบเพ 20ด2/กับ9าน&'#ล เพ !หส/วน&ง "e# Cser 9nterface สา'าร4- จะ2รวจสบ&'#ล @0alidate
Data - ป%น&'#ล3ด และเปล (นแปลงว0=การ/านพารา'0เ2ร8 โด(!$ Struts :ramewor3
ขั นตอนในการพัฒนาโปรแกรม 1. สรางโปรเจค StrutsD4A$$ !นร#ปแบบ Struts :ramewor3s
2. พัฒนาโปรแกร' add4oo3.+s$ =0iew ส/วน20ด2/ user>
). พัฒนาโปรแกร' 4oo3:orm4ean.+ava =&odel เปน 4ean +, งสดคลงกับส/วน&ง 0iew>
. พัฒนาโปรแกร' 9nit.+ava เ$ '2/ Data#ase =&odel>
(. พัฒนาโปรแกร' Add4oo3Action.+ava =&odel เ' ' 7e8uest เ&า'าจะเพ0 '&'#ล3ป- Ta#le>
,. แก 3&37ล8 A$$lication7esource.$ro$erties
5. พัฒนาโปรแกร' Than3you.html
-. พัฒนา37ล8 Struts?*onfi.!ml
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 103/129
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 104/129
1
12.2 การพัฒนาโปรแกรม a""*oo).jsp สรางเวบเพจเพ !$ส.หรับป%น&'#ลหนงัส!ห'/ เ&า!น9าน&'#ล #oo3s +, ง'ลัก*<ะดงัร#ป- 12.
รปท 12." เวบเพจท'ชแสดง/อร"%สหรบป,อน&อ%ล
&ั น2นการสรางหนา JSP เพ รับ&'#ล
1. :ile New JSP :ile ก.หนด$ add4oo3.+s$2. พ0'พ8 'a#el กหนาจ จะ!$งาน tali# 3ด โด(' 2 แบบค html และ #ean
1. html คลา(กบั %T&' Ta =รร'ดา 2. #ean เปนการด,ง&'#ล2วััก*รจาก confiuration - file &essae7esources.$ro$erties
จ,ง2ง'การน.&'#ล &ควา'2/าง; เ2ร('3วก/น เพ !ห Struts Ta ด,ง3ป!$ 3ด เ$/น&ควา'- !$เปน 'a#el B !$เพ แสดง rror !ห"# !$งานเหน ดงัร#ป- 12., และ 'istin - 12.1
รปท 12.$ เพH มขอมล label และ Error Message ทตองการใน file =src=Message4esources.properties
'istin - 12.1 แก 3& &essae ส/วนกลาง - >src>Messa-e?esorces.properties
labeladdbooDformdisplay=Add 8ew 7ooDlabeladdbooDformisbn=*S78labeladdbooDformtitle=*F,labeladdbooDformauthor=A0H+(labeladdbooDformprice=!(*C,
errorisbnrequired=!lease correct *S78 length between M21B characterserrortitlerequired=!lease correct *F, length at least M characterserrorauthorrequired=!lease correct A0H+( length at least J characterserrorpricerequired=!lease correct !(*C, must greater than Tero
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 105/129
1(
'istin - 12.2 โปรแกร' add4oo3.+s$
<UO taglib uri="http//struts.apa%he.org/tags-html" prefi&="html"U><UO taglib uri="http//struts.apa%he.org/tags-,ean" prefi&=",ean"U>
<html><head><meta http2equi'="0ontent-Tpe" content="text/html %harset2IS3-8845-1"><title><bean5message Dey="la,el.a,oo67orm.ispla" /></title></head><body>
<html5form action="/aoo69%tion"><font color="re"><html5errors /></font><bean5message Dey="la,el.a,oo67orm.ispla" /><br><bean5message Dey="la,el.a,oo67orm.is,n" /><html5te&t property="is,n" /><br>
<bean5message Dey="la,el.a,oo67orm.title" /><html5te&t property="title" /><br><bean5message Dey="la,el.a,oo67orm.author" /><html5te&t property="author" /><br><bean5message Dey="la,el.a,oo67orm.pri%e" /><html5te&t property="pri%e" /><br><html5submit></html5submit>
</html5form></body></html>
จาก source code จะเหนว/า !$ #ean ด,ง messae ก'าจาก $ro$erties - เรา confi
4า'หลา(; $ae !$&ควา'เห'นกนั 4า2งการแก 3&กจะ-.- เด(ว-.!ห 3'/2ง2า'แก-1ก $ae
ส/วน&ง ta <html5errors /> !$รับ rror - return 'าจาก ðod 0alidate น.'าแสดง2า' 'oic - เ&(น3ว - 0alidator ðod !น :orm4ean
@0alidator ðod จะแสดง!หเหน!นหัว&- ) 6verride ðod 0alidate 'istin 12.) หนา 15
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 106/129
1,
12.$ การพัฒนาโปรแกรม *oo)3or!*ean.java และ A""*oo)Action
Struts :ramewor3 จะ' โปรแกร' Java - จะ2งพัฒนา(# / 2 ลัก*<ะค1. :orm4ean < -.หนา- &a$$in Parameter !นหนาเวบเพจ- รับ&'#ล และ 0alidate 2รวจสบควา'4#ก
2ง&ง&'#ลหนานั น;
2. Action < -.หนา- รับค/าพารา'0เ2ร8- ป%น'าแลวน.3ปประ'วล"ล2า' 4usiness 'oic ว/า2ง-.ะ3รบาง เ$/น การจัดการ&'#ลแบบ2/าง; @*7CD E *reateB 7eadB C$dateB Delete
โปรแกร' :orm4ean จะเปนโปรแกร' Java - 'ค/า attri#ute สดคลง กับ $ พารา'0เ2ร8- รับ -างหนา
เวบเพจ@add4oo3.+s$ และจะ'เ'=ด etter และ setter - สดคลงกบั attri#ute ดงักล/าว
รปท 12.' 0GามสัมพันI+ระหG&าง Tag 6SP ทสรางหนาจอ และ )or%9ean
นกจากน าจ 6verride เ'=ด!นการ 0alidate 2รวจสบ&'#ล เพ !หสดคลงกับเง น3&- ก.หนด3วดว( เ$/น ก.หนด!ห"# !$2งป%นพารา'0เ2ร8- '$ และเง น3&2/าง;ดงัน
▪ is#n เปน$น0ด Strin - '2วััก*รระหว/าง )?1 2วั▪ title เปน$น0ด Strin - '2วััก*ร(/างน( ) 2วั▪ author เปน$น0ด Strin - '2ัวกั*ร(/างน( ( 2ัว▪ $rice เปน$น0ด float - 'ค/าเปน'ากกว/า .
โด(จะด,ง&'#ล'า2รวจสบ โด(!หแก 3& หร 6verride ðod 0alidate ดงั& ัน2น2/3ป โด(ด# source code 3ด !น 'istin - 12.)
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 107/129
15
&ั น2นการสราง 4oo3:orm4ean 1. เลก :ile New *lass
ก.หนด $ae3ae E model B name E 4oo3:orm4ean B Su$er*lass E Action:orm
รปท 12., สราง 6ava Class 9oo)or%9ean.java
2. ประกา>2วัแปร 9nstance 0ari#le เปน Private แลว nca$sulate
คล0 :ก&วา- source code แลวเลก Source Henerate Hetters and Setters... ดังร#ป- 12.;pri'ate String isbn%pri'ate String title%pri'ate String author%pri'ate float price%
รปท 12.- ท1การ encapsulate instance variable). 6verride ðod 0alidate โด( คล0 :ก&วา- source code แลวเลก Source 6verride/9m$lement
ðods... ดังร#ป- 12.1
รปท 12./ ท1การเลอก Overrie Met&o valiate ของ Action)or%
'istin - 12.) โปรแกร' 4oo3 3or!*ean .+ava =&odel> pacDage model%
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 108/129
1-
import Ea'a&ser'lethttpHttpSer'let(equest%import orgapachestrutsactionAction,rrors%import orgapachestrutsactionActionorm%import orgapachestrutsactionAction9apping%import orgapachestrutsactionAction9essage%
public class 7ooDorm7ean e&tends Actionorm -pri'ate static final long serialVersionUID = 1F%
pri0ate Strin1 isbn5 pri0ate Strin1 tit%e5 pri0ate Strin1 author5 pri0ate f%oat price5
pub%ic !ction,rrors 0a%idate3!ction(appin1 mappin17ttpSer0%et6e2uest re2uest4 -
!ction,rrors action,rror = ne# !ction,rrors345
if 31etIsbn34.e2ua%s3nu%%4 QQ 31etIsbn34.%en1th34 < QQ
1etIsbn34.%en1th34 > ;'44Baction,rror.add3"isbn"7 ne# !ction(essa1e3"error.isbn.re2uired"445
if 31etTit%e34.e2ua%s3nu%%4 QQ 31etTit%e34.%en1th34 < 44 Baction,rror.add3"tit%e"7 ne# !ction(essa1e3"error.tit%e.re2uired"445
if 31et!uthor34.e2ua%s3nu%%4 QQ 31et!uthor34.%en1th34 < 44 Baction,rror.add3"author"7ne# !ction(essa1e3"error.author.re2uired"445
if 31etPrice34 <= '4 Baction,rror.add3"price"7 ne# !ction(essa1e3"error.price.re2uired"445
return action,rror5
public String get*sbn"$ -return isbn%
:public 'oid set*sbn"String isbn$ -
thisisbn = isbn%:public String getitle"$ -
return title%:public 'oid setitle"String title$ -
thistitle = title%:public String getAuthor"$ -
return author%:public 'oid setAuthor"String author$ -
thisauthor = author%:public float get!rice"$ -
return price%:public 'oid set!rice"float price$ -
thisprice = price%:
:
หมายเหต Method validate( ) จะ Return error object กลั บไ ปใหหนา JS ท ta! → "ht#l$errors %& (หนา '0)
รปแบบการเพ ม rror !"# actionrror*add(ดักจับท te+t properties ตัวไ หน, ข#!วามท #ยากใหแ$ด%เม" # properties น & rror)
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 109/129
1;
12.4 การพัฒนาโปรแกรม A""*oo)Action.java
โปรแกร' Add4oo3Action.+ava เปนโปรแกร' Action @4usiness 'oic &ง Struts :ramewor3 เพ /าน
&'#ล- "# !$ป%นเ&า'าจากหนา Add4oo3.+s$ แลวเ&(น&'#ลลง!น ta#le - $ 4oo3s โด('&ั น2นการพัฒนาดงัน 1. :ile New *lass
ก.หนด $ac3ae E model B name E Add4oo3Action B Su$er*lass E Action ดงัร#ป- 12.11
รปท 12.1 สราง 6ava Class 9oo)or%9ean.java
2. 6verride ðod 0alidate โด( คล0 :ก&วา- source code
แลวเลก Source 6verride/9m$lement ðods... ดงัร#ป- 12.12
รปท 12.11 ท1การเลอก Overrie Met&o valiate ของ Action)or%
). -.การแก 3& Source code - ðod e!ecute@ ดงั 'istin - 12.
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 110/129
11
'istin ท ! 12. โปรแกรม Add4oo3Action .+ava =&odel>
pacDage model%
import Ea'asqlConnection%import Ea'asqlSRF,&ception%import Ea'asqlStatement%
import Ea'a&ser'lethttpHttpSer'let(equest%import Ea'a&ser'lethttpHttpSer'let(esponse%
import orgapachestrutsactionAction%import orgapachestrutsactionActionorm%import orgapachestrutsactionActionorward%import orgapachestrutsactionAction9apping%
public class Add7ooDAction e&tends Action -
pub%ic Connection 1etConnection34BConnection conn=3Connection41etSer0%et34.1etSer0%etContet34.1et!ttribute3"connection"45 if3connection == nu%%4 Sstem.out.print%n3"ot +ound Connection in Ser0%et Contet"45
return conn5
public Actionorward e&ecute"Action9apping mapping) Actionorm form)HttpSer'let(equestrequest) HttpSer'let(esponse response$throws ,&ception -
tr BooH+ormean booHform=3ooH+ormean4form5Strin1 isbn = booHform.1etIsbn345Strin1 tit%e = booHform.1etTit%e345Strin1 author = booHform.1et!uthor345f%oat price = booHform.1etPrice345
Strin1 s2% = "insert into booHs 3isbn7tit%e7author7price4 0a%ues " G"3R"G isbn G "R" G"7R"G tit%eG "R" G"7R"G authorG"R" G"7R"G price G"R4"5Statement stmt = 1etConnection34.createStatement345stmt.eecute3s2%45Sstem.out.print%n3"S? Statement :" G s2%45Sstem.out.print%n3"Insert Success"45
catch 3S?,ception s2%ep4 BSstem.out.print%n3s2%ep.1et(essa1e3445s2%ep.printStacHTrace345thro# ne# S?,ception3s2%ep.1et(essa1e3445
catch 3,ception e4 BSstem.out.print%n3"!ction ,rror "Ge.1et(essa1e3445e.printStacHTrace345thro# ne# ,ception3e.1et(essa1e3445
return mappin1.find+or#ard3"success"45
:
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 111/129
111
12.+ การพัฒนาโปรแกรม nit.java และ T#an)&o.#t!l @%ie7
โปรแกร' 9nit.+ava เปนโปรแกร'ประเ)- Servlet*onte!t'istener เพ เ$ '2/กบั9าน&'#ลเ' เร0 '2นาจ'งว/าเปนส/วน&ง &odel ก 3ด โด('& ัน2นการพฒันาเ$/นเด(วกับการพฒันาโปรแกร' 9nit.+ava !น !ercise
5 การพัฒนา "e#4ase D4 โด(คลาสประเ)- "e# 'istener @หนา ,
และจะ2ง'การสราง37ล8 conte!t.!ml และแก 3& we#.!ml แบบเด(วกนักับ !ercise ดงักล/าว
โปรแกร' Than3you.html เปนเวบเพจ- !$แสดง!หเหนว/า&'#ล3ด4#กเพ0 'เ&า3ป!น9าน&'#ลแลว โด(' source code ดัง 'istin - 12.
'istin - 12.( โปรแกร' Than3you.html <html> <head>
<title>hanD you</title> </head> <body> <;>ThanH ou for insertin1 data </;>
</body></html>
12. การพัฒนา'(ล strts/con,i-.x!l @Controller
37ล8 Struts?confi.!ml เปน37ล8 !นการควบค1'การ-.งาน&งโปรแกร' Struts +, ง!น- น จะ!$ !นการก.หนดล.ดบัการ-.งาน&งเวบ @Naviation 7ule โด('&ั น2นการพัฒนาค เป5ด *onfiuration $ /"4?9N:/struts?confi.!ml ก'า
1. เพ0 '!ห struts ร# จักกบั โปรแกร' Java - เราสราง&, น'าค? 4oo3:orm4ean.+ava? Add4oo3Action.+ava
โด(ระบ1 $ac3ae.classname ลง3ป- attri#ute ty$e และ$ เร(กค name
<Q22 ======= orm 7ean 4efinitions 22><form2beans><form2bean name="aoo69%tion" type=" %o!el'A!!Boo(A)tion"></form2bean><form2bean name="oo6Formean" type=" %o!el'Boo(or%Bean"></form2bean></form2beans>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 112/129
112
2. ระบ1การ-.งาน สรางควา'ส'ัพัน=8 !หกับ Struts ว/ากร<' หนา "e#$ae JSP ส/ง&'#ล3ป!ห Servlet เพ !หบนั-,ก&'#ล!ห :ramewor3 'า/าน *onfiuration 2รงน เพ 2ัดส0น!จว/า!ห-.ะ3ร
1. 4rowser ส/ง&'#ลแบบ $ost เ&า'า2. *ontroller -.การแปล $ath โด(ด#- attri#ute path=”/addBookAction”
หา action ว/าจะ3ป- 3หน โด(ด#จาก attri#ute type => “model.AddBookAction.jaa”
2/3ปด#ว/า&'#ล'าจากหนาจ3หน โด(ด#- attri#ute inp!t=”/addBook.j"p”
และ JSP - ส/ง&'#ล'าน จะเกบ&'#ลลง- :orm4ean $ ะ3ร ด# attri#ute name = Book#ormBean
@จะ3ป ma$ $ class - ta Iform?#ean nameER4oo3:orm4eanR ty$eERmodel.4oo3:orm4eanR/
และเกบ3ว !น sco$e 3หน ด#- attri#ute "cope = “"e""ion”
เ' 3ด&'#ลเกบลง :orm4ean แลว Action กจะ-.งาน เสรจส0 นกจะ'การ return ค/ากลบั3ปว/า4usiness 'oic -.งาน4#กหร3'/ โด(ก.หนด- ta K L76M96N D9:C O PQREECQQP S9TFO PUVF9DA<7R3FT:WP UX 4า4#ก2ง )า(!นโปรแกร' Action กจะสั ง!ห 6CTR6D :9SSYD83ZDN[76M96N\ PQREECQQP ] กลับ'ป
<Q22 ============= Action 9apping 4efinitions 22> <action2mappings>
<action path="/aoo69%tion"type="moel.9oo69%tion"input="/aoo6.#sp" name="oo6Formean"scope="session" ><forward name="su%%ess" path="/Than6ou.html"/>
</action>
12.5 การทดสอบโปรแกรม
1. -.การ 4uild และ De$loy โปรแกร' StrutD4A$$
2. 7un โปรแกร' StrutD4A$$
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 113/129
11)
). เลก C7' &ง "e# 4rowser เปน htt$<//localhost<--/StrutD4A$$/Add4oo3.+s$ !หเรา -ดลง!ส/&'#ลดงัร#ป- 12.12
รปท 12.12 )วอ$*างการป,อน&อ%ลเ&า Table ชอ 9oos
. เ' กดป1 6' Add โปรแกร'กจะ!ส/&'#ลลง!น Data#ase
(. เราสา'าร4- จะด#&'#ล- ป%นเ&า3ป3ด โด(3ป- Tool &ง &yS' $ &yS' "or3#ench
ดงัร#ป- 12.1
รปท 12.13 ตัGอ$&างการปอ̂นขอมลเขา Table ชอ 9oos
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 114/129
11
Exercise 1$ การพั(นาโปรแกรมเ#บโ)ย/' JS3 3ra!e7or)
เน อหาทตอง'( ก)าก&อน การพัฒนาโปรแกร'เวบเพ 20ด2/กบั9าน&'#ล โปรแกร'!นบ-น จะเปนการพัฒนาโปรแกร' "e# A$$lication โด(!$ JS: :ramewor3 -ั งน จะเปนการ
ปรับปร1งโปรแกร'เวบเพ 20ด2/กบั9าน&'#ล โด(จะ-.!ห"# !$สา'าร4- จะ 0alidate Data - ป%น&'#ล3ด และเปล (นแปลงว0=การ/านพารา'0เ2ร8 โด(!$ Java Server :aces @JS: :ramewor3
ขั นตอนในการพัฒนาโปรแกรม 1. สรางโปรเจค JS:D4A$$ โด(เ2ร(' 'i#rary &ง JS: :ramewor3 และ JST'
2. สรางหนาจรับ 9n$ut โด(สราง add4oo3.+s$ และ พัฒนาส/วน2รวจสบ@0alidation &'#ล
). สรางหนาจแสดง"ลจาก การเพ0 '&'#ล ค than3you.html B inserterror.html
. สราง 4usiness 'oic !$ JS: :ramewor3 < 4oo34ean.+ava และ *onfi &anaed 4ean
(. ก.หนด Naviation 7ule โด(การแก 3& faces?confi.!ml
1$.1 สรางโปรเจ.ค JS3(*App 1. เลกเ'น# :ile New Pro+ect
เลกร#ป :older $ "e# และเลก Dynamic "e# Pro+ect ดังร#ป- 1.2
รปท 13.1 การสรางโปรเจค Web Application
2. !หก.หนด Pro+ect Name E JS:D4A$$
เลก *onfiuration E JavaServer :aces v1.2 Pro+ect
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 115/129
11(
รปท 13.2 การก1หน!ชอ และเลอกใช 6S) )ra%e(ors ของ Web Project
). กด Ne!t เลก- เกบ class B เลก "e# &odule จน'า4,งหนา JS: *a$a#ility
เลก Disa#le 'i#rary *onfiuration กร<- 3ด Download JS: li#rary 'าแลว กด finish
รปท 13.3 การก1หน!ชอ และเลอกใช 6S) )ra%e(ors ของ Web Project
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 116/129
11,
. *onfiuration 'i#rary - JS: 2งการ +, งจะ' JS: :ramewor3s และ JST' 'i#rary
โด( *o$y 'i#rary .+ar file 3ปวาง- li# &ง "e# Pro+ect ดังร#ป- 1).
รปท 13." Configuration +ibrar! ท 6S) ตองการ
1$.2 การพัฒนาโปรแกรม JS3 Mana-e" *ean JS: :ramewor3 จะ!$ Java 4ean เ$ 'โ(งค/าพารา'0เ2ร8ระหว/าง JSP และ JA0A *lass
JS: &anaed 4ean จะเปนโปรแกร' Java -'ค/า attri#ute สดคลงกบั$ พารา'0เ2ร8- จะป%นและจะ'เ'=ด etter และ setter - สดคลงกบั attri#ute ดงักล/าว +, ง!นแบบฝกหัดน จะก.หนด!ห"# !$2งป%นพารา'0เ2ร8- '$ 2/าง; ดังน
● is#n เปน$น0ด Strin
● title เปน$น0ด Strin
● author เปน$น0ด Strin
● $rice เปน$น0ด float
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 117/129
115
&ั น2นการสราง 4oo34ean 1. สราง Java *lass $ 4oo34ean.+ava โด((# / !น $ac3ae $ #ean
2. ก.หนด varia#le 2า'- เรา2งการรับค/าจากหนาจ JSP
pri'ate String isbn%pri'ate String title%pri'ate String author%pri'ate float price%
). คล0ก&วา- source code แลวเลก source Henerate Hetter
. สราง ðod add4oo3@ เพ น.&'#ลเกบลง!น ta#le
......
.......public class 7ooD7ean -pri'ate String isbn%pri'ate String title%pri'ate String author%pri'ate float price%
O(esource"name = #Edbc/test#$pri'ate 4ataSource ds%pri'ate Connection conn%
public String add7ooD"$ throws SRF,&ception -try -
get47Conn"$%Statement stmt = conncreateStatement"$%String sql = #insert into booDs 'alues "L#
6 get*sbn"$ 6 #L)L#6 getitle"$6 #L)L#6 getAuthor"$6 #L)L#6 get!rice"$6 #L$#%
stmte&ecute0pdate"sql$%return #success#%: catch ",&ception e$ -
eprintStacDrace"$%:return #failure#%
:public 'oid get47Conn"$ throws SRF,&ception -
if "conn == null$ -conn = dsgetConnection"$%
::
........
.......
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 118/129
11-
1$.$ สราง&นาจอรับ npt โดยสราง a""*oo).jsp และ พัฒนาส6นตร6จสอบ B%ali"ation ขอม-ล
รปท 13.$ หนาจอ 6SP เพอใชในการรั"0&า <UO page language="#a$a" contentype="text/html %harset2IS3-8845-1" page,ncoding="IS3-8845-1"U>
<K ta1%ib prefi="*" uri="&ttp+//,aa'sun')o%/,s*/)ore"> <K ta1%ib prefi="&" uri="&ttp+//,aa'sun')o%/,s*/&t%l"> <Q4+CK!, html !07F*C #2//.MC//44 H9F @B1 ransitional//,8##http5//wwwwMorg/(/html@/loosedtd#><html><head><meta http2equi'="0ontent-Tpe" content="text/html %harset2IS3-8845-1"><title>S 7ooDs 47</title></head><body>
<b>Add A 8ew 7ooD</b><f5'iew>
<h5form><h5inpute&t id="is,n" 'alue="?-booD7eanisbn:"
required="true" required9essage="IS: is re;uire<"'alidator9essage="3nl 4 to 1 igits<"><f5'alidateFength minimum="4" ma&imum="1" />
</h5inpute&t><h5message for="is,n" /><br><h5inpute&t id="title" 'alue="?-booD7eantitle:"
required="true" required9essage="TITLE is re;uire<"><f5'alidateFength ma&imum="=" />
</h5inpute&t><h5message for="title" /><br><h5inpute&t id="author" 'alue="?-booD7eanauthor:"
required="true" required9essage="9UT>3R is re;uire<"><f5'alidateFength ma&imum="4" />
</h5inpute&t>
<h5message for="author" /><br><h5inpute&t id="pri%e" 'alue="?-booD7eanprice:"
required="true" required9essage="?RI0E is re;uire<" 'alidator9essage="3nl :umeri% an at Least 1 ,aht"><f5'alidate4ouble(ange minimum="1" />
</h5inpute&t><h5message for="pri%e" /><br><h5command7utton type="su,mit" id=",tn9oo6"
'alue="9DD" action="?-booD7eanadd7ooD:"/>
<br></h5form>
</f5'iew></body></html>
จาก Sourcecode +s$ ดานบน ประกบ3ปดว(การสราง 0alidation - field โด(จะ(# /)า(!น Ih<in$utTe!t
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 119/129
11;
ประกบดว( attri#ute - !$2รวจสบ เ$/นre2uired ="true" แสดง4,ง field น 2งการ&'#ล และ ,า'มมขอม-ลกจะแสดง attri#ute - เปน messae
&ง validator นั น; +, งกค re2uired 9essage="IS: is re;uire<"
<f:0a%idate4ouble(ange minimum="1" /> แสดง4,ง field น 2งการค/า dou#le และ(/างน(2ง'value ค 1 และ4าค/านั น3'/สา'าร4แปลงเปน dou#le หร 'ค/าน(กว/า 1 กจะแสดง attri#ute - เปน messae &งvalidator นั น; ค 0a%idator 9essage="3nl :umeri% an at Least 1 ,aht"
1$.4 สราง t#an)&o.#t!lD error.#t!l
1$.+ การก5&นด Pa-e avi-ation 1. เป5ด :ile F"4?9N:Ffaces?confi.!ml
2. 3ป- ta# Naviation 7ule
). เป5ด $alette คล0กเลก $ae แลว3ปคล0ก- Screen ว/าง; เพ สราง'1''งหนา $ae นั น;
รปท 13.' การGาง page ลงใน ;avigator Area
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 120/129
12
. เลก!หครบ-ั ง ) files
รปท 13., แส!งการใช palette ช&G$สราง ;avigator 4ule
(. สรางควา'ส'ัพัน=8 โด(3ป- $alette เลก- 'in3 จากนั น3ปคล0ก- add4oo3.+s$ ลากลง'า dro$ - icon &งthan3you.html และ inserterror.html
รปท 13.- เมอลาก +in เชอมต&อ 0ร"แลG
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 121/129
121
รปท 13./ สามารJปรั" Properties ในส&Gนของ +in %!โ!$ ouble clic ใหมาเอง
ด#จาก ðod - จะ' 7eturn เปน Strin ก'า ร<น 4าส.เรจจะ return StrinEsuccess 4า3'/ส.เรจจะเปน failure
ดังนั น4า success !หแสดงหนา than3you.html โด( set $ro$erties - form?outcome เปน success
และกเสนก-.เ$/นเด(วกัน from?outcome แ2/เปน failure
รปท 13.1 การปรั"แต&ง +in ทเชอมต&อ%ม&%!
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 122/129
122
,. จะ3ดเปนร#ป- ส'บ#ร<8ก'าดงัร#ป
รปท 13.11 ;avigator ทมการก1หน! properties เร$"รอ$แลG
1$. การทดสอบโปรแกรม1. 7estart Server และ 7un โปรแกร' JS:D4A$$
2. เลก C7' &ง "e# 4rowser เปน htt$<//localhost<--/JS:D4A$$/add4oo3.+s$
!ห-ดลง!ส/&'#ล). เ' กดป1 6' Add โปรแกร'กจะ!ส/&'#ลลง!น Data#ase
. เราสา'าร4- จะด#&'#ล- ป%นเ&า3ป3ด โด(3ป- &yS' "or3#ench แลวด#จาก Ta#le - $ #oo3s
(. 4า"ลลพั=8หนา than3you.html !น ta#le ก'&'#ลนั น; (# /
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 123/129
12)
Exercise 14 การ At#entication โ)ย/' To!cat
เน อหาทตอง'( ก)าก&อน ?
แบบฝกหัดน จะเปนการพัฒนาโปรแกร'เวบ- 2ง'การ-. Authentication โด(การ2ั งค/า confiuration &งTomcat "e# Server โด(จะเปนการลก0นโด(!$ 4asic *onfiuration และ :orm 4ased *onfiuration
และ จะ-ดสบการเปล (น realm &ง Tomcat จาก37ล8 tomcat?users.!ml เปนการ!$ &yS' Data#ase
14.1 สราง Web Application Project
1. เลกเ'น# :ile New Dynamic "e# Pro+ect
ก.หนด Pro+ect Name E Security"e#A$$
2. -.การพฒันาโปรแกร' admin.html ดงั 'istin - 1.1
). -.การพฒันาโปรแกร' user.html ดงั 'istin - 1.2
'istin - 1.1 โปรแกร' admin.html <html> <head> <title>A49*8</title> </head> <body> <h1>Admin !age</h1> </body></html>
'istin - 1.2 โปรแกร' user.html <html> <head> <title>0S,(</title> </head> <body> <h1>0ser !age</h1> </body></html>
14.2 เพ $ม ser ของ To!cat Web Server
โด(-ั ว3ป Tomcat?"e#?Server จะ!$ 7ealm - เปน :lat :ile โด(เกบ3ว !น :ile - $ tomcat?users.!ml &ั น2นน จะเปนการเพ0 ' Cser โด(การปรับปร1ง37ล8ดังกล/าวโด('&ั น2นการพัฒนาโปรแกร'ดงัน
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 124/129
12
1. !ห Pro+ect $ Servers เลก $ Server tomcat?users.!ml
ดงั2ัว(/าง!นร#ป- 1.1 และ-.การเพ0 ' user $assword ลง3ป!น Tomcat Server
!น 'istin - 1.)
รปท 1".1 เพ+ % user และ roles ท Apac&e To%cat
'istin - 1.) 37ล8 t omcat?users.!ml <role rolename="amin"/><role rolename="user"/>
<user username="amin" password="amin" roles="amin" /><user username="tom%at" password="tom%at" roles="amin" /><user username="user" password="user" roles="user" />
2. 7estart Tomcat เพ !ห/าน confi !ห'/- เราแกเ&า3ป โด(3ป- ta# Server คล0ก&วา- $ server แลวเลก restart
14.$ การ Con,i- '(ล 7eb.x!l ของ Web Application ท $ตองการ%4 To!cat ser
เราสา'าร4- จะก.หนด!ห'การ-. Authenticate และ Authoriation "# !$- จะเ&า C7' !ด;&ง "e#A$$lication และก.หนดส0-=0 !นการเ&าโด(0งกบั role @7ole 4ased Authoriation โด( confi 37ล8 we#?!ml
!น&ั น2นน จะเปนการก.หนด!ห"# !$- ' role เปน admin สา'าร4- จะเ&า!$ 37ล8 admin.html และ user.html 3ด ส/วน"# !$- ' role เปน user สา'าร4- จะเ&า!$ 3ดเ[พาะ37ล8 user.html เ-/านั น โด('& ัน2นดงัน
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 125/129
12(
&ั น2นการ *onfiuration
1. เป5ด37ล8 we#.!ml &ง Pro+ect - $ Security"e#A$$
เพ0 'บรร-ัด บกว/าเปนการ authen แบบ 4asic<login2config> <auth-method>!SIC</auth-method>
</login2config>
2. เพ0 'บรร-ัด ระบ1 Security 7oles E 2 roles ค user และ admin<security2role>
<role2name>admin</role2name></security2role><security2role>
<role2name>user</role2name></security2role>
). สรางควา'ส'ัพัน=8ระหว/าง "e# $ae &ง Pro+ect กับ Cser บน Tomcat
กร<หนา admin.html เ&า4,งโด("# ' role เปน admin เ-/านั น ก.หนดC7' Pattern - 2งการจ.กดัการเ&า4,งเปน /admin.html
ก.หนด Name เปน Admin Pae
ก.หนด "# เ&า4,ง C7' น 3ด ค"# - (# / !น 7oles E admin เ-/านั น<security2constraint>
<web2resource2collection><url2pattern>/admin.htm%</url2pattern><web2resource2name>Admin !age</web2resource2name>
</web2resource2collection><auth2constraint>
<role2name>admin</role2name></auth2constraint>
</security2constraint>
กร<หนา user.html เ&า4,งโด("# ' role เปน user และ admin ก.หนดC7' Pattern - 2งการจ.กดัการเ&า4,งเปน /user.html
ก.หนด Name เปน Cser Pae
ก.หนด "# เ&า4,ง C7' น 3ด ค"# - (# / !น 7oles E admin
<security2constraint><web2resource2collection><url2pattern>/user.htm%</url2pattern><web2resource2name>0ser !age</web2resource2name>
</web2resource2collection><auth2constraint>
<role2name>user</role2name><role2name>admin</role2name>
</auth2constraint></security2constraint>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 126/129
12,
'istin - 1. 37ล8 t omcat?users.!ml <login2config>
<auth-method>!SIC</auth-method>
</login2config>
<security2role><role2name>admin</role2name>
</security2role><security2role>
<role2name>user</role2name></security2role>
<security2constraint><web2resource2collection>
<url2pattern>/admin.htm%</url2pattern><web2resource2name>Admin !age</web2resource2name>
</web2resource2collection><auth2constraint>
<role2name>admin</role2name></auth2constraint></security2constraint>
<security2constraint><web2resource2collection>
<url2pattern>/user.htm%</url2pattern><web2resource2name>0ser !age</web2resource2name>
</web2resource2collection><auth2constraint>
<role2name>user</role2name><role2name>admin</role2name>
</auth2constraint></security2constraint>
14.4 การทดสอบโปรแกรมแบบ *asic At#enticate
1. -.การ 4uild และ De$loy โปรเจค Security"e#A$$
2. รันโปรแกร' htt$<//localhost<--/Security"e#A$$/admin.html โปรแกร'เวบ 4rowser จะแสดง 3ดะลกลก0น!ห"# !$ป%นดงัร#ป- 1.2
ร#ป- 1.2 หนา2/างลก0น
). !ห-ดลงป%น$ "# !$และรหัส"/านเปน admin และ admin โปรแกร'จะสา'าร4แสดง&ควา'!นหนาเวบadmin.html 3ด
. ป5ดโปรแกร'เวบ 4rowser จากนั นเป5ด&, น'า!ห'/ แลว-ดลงป%น$ "# !$และรหัส"/านเปน user และ user
จะเหนว/า3'/สา'าร4เ&าหนาเวบน 3ด
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 127/129
125
(. -ดลง-.+ .กับ C7' $ htt$<//localhost<--/Security"e#A$$/user.html จะเหนว/า url น จะน1?า2!ห user -ั งสง!$ 3ด
14.+ การปรับปร"งโปรแกรมเพ# $อ%& %4 Lo-in 3or!
& ัน2นน จะเปนการปรับปร1งโปรเจค Security"e#A$$ !ห'-.การลก0นโด(!$ :orm - สราง&, นโด(!$ 37ล8 'oin.html +, ง4า3'/สา'าร4ลก0น3ด !หส/ง2/3ป- rror.html โด('& ัน2นการพฒันาโปรแกร'ดงัน
1. สรางหนา $ae เพ !$ loin $ loin.html ดงั 'istin - 1.
2. สรางหนา error.html เ' กร<ป%น username หร $assword 3'/4#ก ดงั 'istin - 1.(
). แก 3& we#.!ml เพ ระบ1ร#ปแบบ!หเปน :orm โด(!$หนา :orm ค loin.html รับค/า username
และ $assword โด(เปล (นจาก<login2config>
<auth2method>7AS*C</auth2method></login2config>
เปนดงั 'istin - 1.5
'istin - 1.( โปรแกร' 'oin.html
<html><head><title></title><meta http2equi'="0ontent-Tpe" content="text/html %harset2UTF-8"></head><body>
<center><H1>Fogin orm 5 Sample</H1>
<+(9 AC*+8="#se%urit%he%6" 9,H+4="?3ST">0ser name 5<*8!0 K!,="TE(T" 8A9,=",_userna%e" /> <br>!assword 5<*8!0 K!,="?9SS@3RD" 8A9,=",_passor! " /> <br><input type="su,mit" 'alue="0o$in" />
</+(9></center>
</body></html>
'istin - 1., โปรแกร' rror.html <html><head><title>,((+(</title></head><body><H1>,rror unauthoriTed user</H1></body></html>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 128/129
12-
'istin - 1.5 โปรแกร' we#.!ml <login2config>
<auth2method>+(9</auth2method><realm2name>AdminApplication</realm2name>
<form2login2config><form2login2page>/loginhtml</form2login2page><form2error2page>/errorhtml</form2error2page>
</form2login2config></login2config>
14. การทดสอบโปรแกรม แบบ 3or! At#enticate (1การทดสอบแบบเดย/กันกับ แบบ 4asic Authenticate
14.5 การปรับปร"งโปรแกรม เพ# $อ%4 At#enticate โดยอานจาก (atabase M&S'L
เราสา'าร4เลก 7ealm &ง Tomcat "e# Server !นร#ปแบบ น;3ดนกเหนจากการ!$ 37ล8 เ$/นการ!$ Data#ase หร Directory Server !น- น จะ-ดลงก.หนด 7ealm !หเปน &yS'
จะ2ง-.การสราง Ta#le &, น'าสง$1ดค users และ userrole โด('&ั น2นการพัฒนาโปรแกร'ดงัน
1. เป5ดโปรแกร' &yS' "or3#ench แลว-.การสราง Ta#le &, น'า 2 ta#les
โด(!$ Tool - เปน "iard หร S' Statement ก 3ด
S' Statement เพ สราง ta#le
create table users "
userXname 'archar"@J$ not null primary Dey) passXword 'archar"@J$ not null$%
create table userrole " userXname 'archar"@J$ not null) roleXname 'archar"@J$ not null) primary Dey "userXname) roleXname$$%
จากนั นกด 9con ร#ปสา(7%าสเหลงเพ รัน หร %ihliht ค.ส ังแลวกดป1 6' *trl O nter
2. -ดลงป%น&'#ล!ส/ลง!น Ta#le โด(2งก.หนด $assword และ role
). -.การปรับปร1ง37ล8 server.!ml &ง A$ache Tomcat
โด(3ป- Pro+ect Server Tomcat v,. Server Server.!ml แลว เปล (นจาก <(ealm class8ame=#orgapachecatalinarealm0ser4atabase(ealm#
resource8ame=#0ser4atabase#/>
การเขยนโปรแกรม Java Servlet / JSP Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7/23/2019 WebProgramming EClipse 110708205941 Phpapp01
http://slidepdf.com/reader/full/webprogramming-eclipse-110708205941-phpapp01 129/129
12;
เปน<(ealm class8ame="org.apa%he.%atalina.realm.AD0Realm" debug="55"
dri'er8ame="%om.ms;l.#,%.Dri$er"connection0(F="#,%ms;l//lo%alhost/test"connection8ame="root"
connection!assword="xxx "userable="users" user(oleable="userrole" user8ameCol="username" userCredCol="pass&or"role8ameCol="rolename" />
โดยท ! xxx คอ $assword ของ3านขอม.ล &yS' (นท !น & (1 $assword E root
. -.การ 7estart Tomcat เพ !ห/าน confi - แก 3ป
14.6 การทดสอบโปรแกรม แบบ (atabase At#enticate !$การ-ดสบแบบเด(วกันกับ แบบ 4asic Authenticate