webprogramming eclipse 110708205941 phpapp01

129
1 Hand-on Exercises การเข ยนโปรแกรมเว Java Servlet / JSP  โดยใช Eclipse and TomCat Assoc.Prof.Dr.Thanachart Nmnonda Soft!are Par" Thailand and Asst 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

Upload: wichart-manachaimongkol

Post on 17-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

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 ' &ethod -  file *ustomerServlet.+ava

ส.หรับรับ action - Su#mit 'าจาก %tt$?7e8uest @%T&' :orm -ั ง$น0ด P6ST และ HT

 โด(2ั ง$  &ethod ว/า $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 '!น &ethod doHet@BdoPost@

เพ ส/ง2/ %tt$?7e8uest !ห &ethod $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ป-  &ethod $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 ส/วนน -  &ethod 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าน&'#ล-.-  &ethod 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 

จะ(# /นก &ethod !ด; เพ !ห-ั ง initial และ destroy 'งเหน7esource@nameER+d#c/testR $rivate DataSource ds

   $rivate *onnection conn

เพ0 ' source code @& ? ( !น &ethod 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 &ethod $  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 'าจาก &ethod 0alidate น.'าแสดง2า' 'oic - เ&(น3ว -  0alidator &ethod !น :orm4ean

@0alidator &ethod จะแสดง!หเหน!นหัว&-  ) 6verride &ethod 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 &ethod 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 &ethod 0alidate โด( คล0  :ก&วา-  source code แลวเลก Source 6verride/9m$lement

&ethods... ดังร#ป-  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 &ethod 0alidate โด( คล0  :ก&วา-  source code

แลวเลก Source 6verride/9m$lement &ethods... ดงัร#ป-  12.12

รปท 12.11 ท1การเลอก Overrie Met&o valiate ของ Action)or%

). -.การแก 3& Source code -  &ethod 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 

. สราง &ethod 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 ใหมาเอง

ด#จาก &ethod - จะ' 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