164
Lập trình JSP, Servlet Trang 1 / 164 Mc lc MC LC CHƢƠNG I: Bắt đầu vớ i Java Server Page (JSP) ................................................................................ 5 1. Gii thiu vJava Server Page và Servlet .................................................................................... 5 1.1. Java Server Page là gì ? .......................................................................................................... 5 1.2. Biên dịch trang JSP ................................................................................................................ 6 1.3. Kch bn (Script) .................................................................................................................... 6 2. Cài đặt Apache Tomcat ................................................................................................................. 7 2.1. Cài đặt Java Runtime Environment (JRE) ............................................................................. 7 2.2. Cài đặt Apache Tomcat .......................................................................................................... 7 3. To project Web application vi Netbeans ................................................................................. 14 3.1. Cấu hình Tomcat vào Netbeans ........................................................................................... 14 3.2. To ng dụng Web đầu tiên với Netbeans ........................................................................... 19 4. Gii thiu vTwitter Bootstrap .................................................................................................. 23 4.1. Twitter Bootstrap là gì.......................................................................................................... 23 4.2. Ti sao lại dùng Bootstrap.................................................................................................... 24 4.3. To giao diện đơn giản vi Bootstrap .................................................................................. 24 4.4. To trang chcho toàn bộ ví dụ trong giáo trình ................................................................. 26 CHƢƠNG II: Tổng quan vHTTP, Servlet và JSP ........................................................................... 30 1. Cơ bản vHTTP Request/Response ........................................................................................... 30 1.1. HTTP Request ...................................................................................................................... 31 1.2. HTTP Response.................................................................................................................... 32 2. Gii thiu vServlet/JSP ............................................................................................................ 34 2.1. Servlet là gì ? ........................................................................................................................ 35 2.2. Vòng đời ca Servlet ............................................................................................................ 35 2.3. JSP và vòng đời ca JSP ...................................................................................................... 36 2.4. Các thành phần ca JSP ....................................................................................................... 37 2.5. Thiết kế ng dụng web theo mô hình MVC......................................................................... 40 CHƢƠNG III: Xây dựng Web động vi JSP ..................................................................................... 44 1. Quy trình xây dựng và triển khai ng dng Web vi JSP .......................................................... 44 1.1. To mi Web application project vi Netbeans ................................................................... 44

(HoaND)giaotrinhjsp 20140318

  • Upload
    duc-hoa

  • View
    742

  • Download
    11

Embed Size (px)

DESCRIPTION

Giáo trình JSP

Citation preview

  • 1. Lp trnh JSP, Servlet Trang 1 / 164 Mc lc MC LC CHNG I: B t u v i Java Server Page (JSP)................................................................................ 5 1. Gii thiu v Java Server Page v Servlet.................................................................................... 5 1.1. Java Server Page l g ?.......................................................................................................... 5 1.2. Bin dch trang JSP ................................................................................................................ 6 1.3. Kch bn (Script) .................................................................................................................... 6 2. Ci t Apache Tomcat................................................................................................................. 7 2.1. Ci t Java Runtime Environment (JRE) ............................................................................. 7 2.2. Ci t Apache Tomcat.......................................................................................................... 7 3. To project Web application vi Netbeans................................................................................. 14 3.1. Cu hnh Tomcat vo Netbeans ........................................................................................... 14 3.2. To ng dng Web u tin vi Netbeans........................................................................... 19 4. Gii thiu v Twitter Bootstrap .................................................................................................. 23 4.1. Twitter Bootstrap l g.......................................................................................................... 23 4.2. Ti sao li dng Bootstrap.................................................................................................... 24 4.3. To giao din n gin vi Bootstrap.................................................................................. 24 4.4. To trang ch cho ton b v d trong gio trnh................................................................. 26 CHNG II: Tng quan v HTTP, Servlet v JSP........................................................................... 30 1. C bn v HTTP Request/Response........................................................................................... 30 1.1. HTTP Request...................................................................................................................... 31 1.2. HTTP Response.................................................................................................................... 32 2. Gii thiu v Servlet/JSP............................................................................................................ 34 2.1. Servlet l g ?........................................................................................................................ 35 2.2. Vng i ca Servlet............................................................................................................ 35 2.3. JSP v vng i ca JSP ...................................................................................................... 36 2.4. Cc thnh phn ca JSP ....................................................................................................... 37 2.5. Thit k ng dng web theo m hnh MVC......................................................................... 40 CHNG III: Xy dng Web ng vi JSP..................................................................................... 44 1. Quy trnh xy dng v trin khai ng dng Web vi JSP .......................................................... 44 1.1. To mi Web application project vi Netbeans................................................................... 44

2. Lp trnh JSP, Servlet Trang 2 / 164 Mc lc 1.2. To mi trang login.jsp ........................................................................................................ 44 1.3. To mi trang welcome.jsp.................................................................................................. 46 1.4. Khai bo Servlet................................................................................................................... 47 1.5. Khai ba o c u hinh web.xml.................................................................................................. 50 1.6. Tri n khai ng du ng ln Tomcat .......................................................................................... 50 2. S dng cc thnh phn JSP directive........................................................................................ 51 3. S dng Template text trong JSP................................................................................................ 53 4. S dng cc thnh phn JSP action (JSTL)................................................................................ 53 CHNG IV: JavaBeans trong JSP .................................................................................................. 58 1. JavaBeans l g ?......................................................................................................................... 58 1.1. Khi nim............................................................................................................................. 58 1.2. Cc quy c ca Bean.......................................................................................................... 58 2. Khai bo, khi to v thao tc vi cc i tng bean trong JSP .............................................. 58 2.1. Cc JSP element dng cho bean........................................................................................... 58 2.2. Phng php chuyn kiu t ng ca JSP vi JavaBeans ................................................. 59 3. Introspector trong JSP................................................................................................................. 60 4. Phm vi hot ng ca JavaBeans.............................................................................................. 61 4.1. Application........................................................................................................................... 61 4.2. Session.................................................................................................................................. 62 4.3. Pages..................................................................................................................................... 63 4.4. Request................................................................................................................................. 64 CHNG V: X l nhp-xut trong JSP .......................................................................................... 67 1. Thao tc vi d liu t i tng Request.................................................................................. 67 1.1. S dng JSTL ly d liu t i tng Request.................................................................. 69 1.2. Truy cp d liu khc ca i tng Request...................................................................... 75 1.3. S dng Javabeans lu gi gi tr i tng Request.......................................................... 79 2. Kim tra xc thc d liu u vo (Input).................................................................................. 81 2.1. S dng JSTL....................................................................................................................... 81 2.2. S dng Javabeans ............................................................................................................... 87 3. nh dng d liu u ra (Output).............................................................................................. 91 CHNG VI: Chia s d liu gia cc trang JSP, Request v gia cc ngi dng ....................... 94 1. Trao i iu khin v d liu gia cc trang............................................................................. 94 3. Lp trnh JSP, Servlet Trang 3 / 164 Mc lc 1.1. Chuyn quyn iu khin t mt trang JSP ti trang JSP khc........................................... 95 1.2. Trao i d liu t mt trang JSP ti trang JSP khc .......................................................... 97 1.3. Kt hp chuyn quyn iu khin v trao i d liu gia cc trang.................................. 98 2. Chia s d liu Session v Application..................................................................................... 101 2.1. Theo vt Session................................................................................................................. 101 2.2. m s lt gh thm trang............................................................................................... 104 2.3. URL Rewrite ...................................................................................................................... 105 CHNG VII: Lm vic vi Cookies v Database ........................................................................ 110 1. Cookies l g?............................................................................................................................ 110 1.1. Khi nim........................................................................................................................... 110 1.2. Vng i ca cookie........................................................................................................... 110 2. Thao tc vi c s d liu (Database) ...................................................................................... 112 2.1. Truy cp c s d liu t trang JSP ................................................................................... 112 2.2. S dng Transactions......................................................................................................... 129 CHNG VIII: Khai bo v s dng th vin Custom Tag........................................................... 133 1. Th vin Custom Tag l g ....................................................................................................... 133 2. Ci t th vin Custom Tag .................................................................................................... 134 3. S dng th vin Custom Tag .................................................................................................. 135 4. S dng Action trong th vin Custom Tag............................................................................. 139 4.1. Thit lp gi tr cho thuc tnh ca Custom action ............................................................ 140 4.2. La chn bean hay Custom action ..................................................................................... 140 CHNG IX: iu qun li v g ri ............................................................................................ 142 1. Phn bit cc loi li c php ................................................................................................... 142 1.1. Cc li c php................................................................................................................... 142 1.2. Li c php ca JSTL EL................................................................................................... 147 2. G ri cho ng dng JSP.......................................................................................................... 151 3. Phn bit cc loi li thc thi (Runtime error) ......................................................................... 156 3.1. Bt ngoi l......................................................................................................................... 160 PH LC I: Ti nguyn v ti liu tham kho................................................................................ 164 4. Lp trnh JSP, Servlet Trang 4 / 164 Phn b chng trnh PHN B CHNG TRNH BUI NI DUNG STT L thuyt Thc hnh 1 Bt u vi JSP 2 Lab01 3 Tng quan v JSP 4 Lab02 5 Xy dng Web ng vi JSP 6 Lab03 7 JavaBeans trong JSP 8 Lab04 9 X l nhp xut trong JSP 10 Lab05 11 Chia s d liu gia cc trang, Request 12 Lab06 13 Lm vic vi Cookies, Database 14 Lab07 15 Lm vic vi Cookies, Database 16 Lab08 17 Th vin Custom Tag 18 Lab09 19 iu qun li v g ri 20 Thi kt thc mn hc 5. Lp trnh JSP, Servlet Trang 5 / 164 Chng I: B t u v i Java Server Page (JSP) CHNG I: B t u v i Java Server Page (JSP) Java 2 Enterprise Edition (J2EE) c 1 mc ch to ln l xy dng v m rng nn tng Internet rng ln ; l nn tng gip cho nhng lp trnh vin c th s dng Java pht trin ng dng Web a tng v ng dng pha my ch. Ngy nay, Java Enterprise API c m rng ph hp vi cc lnh vc nh: RMI v CORBA cho vic qun l cc i tng t xa ; JDBC cho vic tng tc vi Database ; Enterprise JavaBeans to cc thnh phn business c tnh ti s dng cao ; JAXP cho vic x l XML, Thm na, J2EE cng h tr Servlet mt cng ngh ph bin tuyt vi thay th cho ngn ng kch bn CGI. Vic kt hp nhng cng ngh ny cho php lp trnh vin to cc gii php kinh doanh trn nn tng phn tn m nhim cc nghip v phc tp khc nhau. Sau nm 1999, Sun Microsystems tng cng thm sc mnh cho nn tng Java Enterprise khi cho ra i cng ngh Java Server Page (JSP). JSP c xy dng trn tng Servlet v hng ti vic tng hiu qu cho lp trnh vin v c nhng ngi t hiu bit v lp trnh c th d dng to ra ng dng Web. 1. Gii thiu v Java Server Page v Servlet 1.1. Java Server Page l g ? Java Server Page l cng ngh h tr v cho php xy dng nn tng Web ng. Khng nh nhng trang HTML thun vi ni dung tnh lun hin th ging nhau, mt trang JSP c th thay i ni dung ty thuc vo cc tham s khc nhau nh nh danh ngi dng, loi trnh duyt ngi dng, cc thng tin do ngi dng cung cp, JSP cn c gi l kch bn trnh ch (Server script) c chy trn nn JDK 1.3 tr ln v ng dng Web Server qun l chng. Web Server c s dng ph bin hin nay nh Apache Tomcat, Java Web Server, JRUN, Glassfish, WebLogic, Mc tiu: Sau khi kt thc chng ny, bn c th: Nm bt c ngha ca cng ngh JSP v Servlet T ci t c trnh ch Web Tomcat S dng cng c h tr lp trnh Netbeans to, trin khai d n Web bng JSP Lm quen vi cng ngh Twitter Bootstrap phc v cho vic thit k giao din Web chuyn nghip, hiu qu 6. Lp trnh JSP, Servlet Trang 6 / 164 Chng I: B t u v i Java Server Page (JSP) 1.2. Bin dch trang JSP Khi ngi s dng gi trang JSP ln u tin, Web Server s triu gi trnh bin dch JSP (l JDK) thnh tp tin *.java, sau tp tin Java (Servlet) s c bin dch thnh tp tin *.class. Sau tp tin *.class s c Web Server thc thi v tr kt qu li cho ngi dng. S tm tt nh sau: 1.3. Kch bn (Script) Ni dung ca JSP c th khai bo cng vi vi HTML, bn c th s dng cp du khai bo m JSP. Chng hn, chng ta khai bo:
H tn sinh vin: Ngy sinh: 7. Lp trnh JSP, Servlet Trang 7 / 164 Chng I: B t u v i Java Server Page (JSP) Gii tnh: Trong trng hp c nhiu khai bo, bn c th s dng Scriptlet vi cc khai bo JSP ging ht c php Java nh sau: 2. Ci t Apache Tomcat Apache Tomcat (Tomcat) l mt Application Server min ph c pht trin bi Apache Software Foundation, Tomcat gip thc thi cc ng dng vit bng Java Servlet v JSP. Trong ton b gio trnh ny, chng ta s s dng phin bn Tomcat 7.0 cho phn ci t pha Server v c mi trng pht trin ng dng Web trn Netbeans. 2.1. Ci t Java Runtime Environment (JRE) Tomcat yu cu trn my bn phi c phin bn JRE (Java Runtime Environment) c ci t sn, nn trc khi bt u bn hy kim tra xem my tnh ca bn c phin bn JRE no cha. Bn vo Command Dos sau g dng lnh sau: java version Nu c kt qu sau hin ra th chng t my tnh ca bn c phin bn JRE c ci t, nh hnh minh ha di th phin bn JRE l 1.7.0_45. Nu khng c thng bo trn bn c th vo link sau http://www.oracle.com/technetwork/java/javase/downloads/index.html download JRE, phin bn mi nht. 2.2. Ci t Apache Tomcat 8. Lp trnh JSP, Servlet Trang 8 / 164 Chng I: B t u v i Java Server Page (JSP) Sau khi hon tt bc kim tra JRE, bn vo ng link sau https://tomcat.apache.org/download-70.cgi download Tomcat phin bn 7.0. Bn chn download b Windows Services Installer. Sau khi download hon tt, m file *.exe v nhn Next bt u qu trnh ci t. Bn chn I Agree tip tc. 9. Lp trnh JSP, Servlet Trang 9 / 164 Chng I: B t u v i Java Server Page (JSP) mn hnh tip theo bn chn ch ci t mc nh (Normal) sau nhn Next tip tc. 10. Lp trnh JSP, Servlet Trang 10 / 164 Chng I: B t u v i Java Server Page (JSP) bc tip theo bn thit lp cng (port, mc nh l 8080) cho Tomcat, v password ng nhp vo phn qun l Tomcat sau khi hon tt ci t. Ti chn username / password l admin / admin. Bc tip theo bn chn ng dn ti th mc ci t JRE, mc nh s l C:Program FilesJavajre7. Sau bn nhn Next tip tc. 11. Lp trnh JSP, Servlet Trang 11 / 164 Chng I: B t u v i Java Server Page (JSP) Bn chn th mc cha cc file ci t Tomcat, mc nh l C:Program FilesApache Software FoundationTomcat 7.0. Sau nhn Next tip tc. Mn hnh tip theo thng bo qu trnh ci t ang din ra. 12. Lp trnh JSP, Servlet Trang 12 / 164 Chng I: B t u v i Java Server Page (JSP) Sau khi vch chy trn mn hnh ci t hin th ht, bn c chuyn ti mn hnh cui cng. Ti y bn nhn chn Run Apache Tomcat ( khi ng ngay Tomcat server sau khi qu trnh ci t hon tt), v nhn Finish kt thc. Sau khi bn nhn Finish, 1 mn hnh hin nn thng bo server Tomcat ang c khi ng ln. 13. Lp trnh JSP, Servlet Trang 13 / 164 Chng I: B t u v i Java Server Page (JSP) Sau khi server Tomcat c khi ng, bn s thy c biu tng sau trn thanh h thng (system tray). Biu tng ny thng bo server Tomcat ang trng thi hot ng, kim tra bn vo trnh duyt Firefox v truy cp ti http://localhost:8080. Mn hnh trn hin ra thng bo Tomcat c ci t thnh cng, xem thm thng tin v server Tomcat, bn nhn vo link Server Status thanh menu bn tri ca mn hnh ny v nhp vo username / password thit lp bc trn (admin / admin). Mn hnh Server status hin ra cung cp cho bn nhng thng tin tng quan v mi trng ci t Tomcat, bn c th thy: Phin bn ca Tomcat server. Phin bn ca JVMJRE (Java Virtual MachineJava Runtime Environment). H iu hnh ca my ch. 14. Lp trnh JSP, Servlet Trang 14 / 164 Chng I: B t u v i Java Server Page (JSP) 3. To project Web application vi Netbeans 3.1. Cu hnh Tomcat vo Netbeans Sau khi ci t Tomcat thnh cng bc trc, ta s cu hnh Netbeans s s dng Tomcat Server cho cc ng dng Web v sau. Chn Tools trn thanh menu, sau chn mc Servers nh hnh di Danh sch cc cu hnh Server s c hin th, thm cu hnh mi cho Tomcat, bn chn nt bm Add Server. 15. Lp trnh JSP, Servlet Trang 15 / 164 Chng I: B t u v i Java Server Page (JSP) Chn loi Server v t tn cho n, y bn nhp Apache Tomcat 7. n Next, tip tc cu hnh. 16. Lp trnh JSP, Servlet Trang 16 / 164 Chng I: B t u v i Java Server Page (JSP) Cung cp ng dn ti v tr Tomcat Server c ci t bc trc, v cung cp thng tin ti khon qun tr server admin/admin. V n Finish, cu hnh mi cho Server s xut hin pha bn tri ca s hin ti. Ta c th t gi tr khc 8080 cho Server Tomcat port, v d hnh v l cng 8085. 17. Lp trnh JSP, Servlet Trang 17 / 164 Chng I: B t u v i Java Server Page (JSP) n Close, by gi Tomcat 7 c th s dng (Start, Stop, Deploy, ) t trong Netbeans. M ca s Services (Window > Services) v s dng 18. Lp trnh JSP, Servlet Trang 18 / 164 Chng I: B t u v i Java Server Page (JSP) Ca s Tomcat output xut hin trong Netbeans nh sau Sau vi giy, Tomcat s c chy, trang ch s hin th trn trnh duyt vi a ch http://server:port nh sau 19. Lp trnh JSP, Servlet Trang 19 / 164 Chng I: B t u v i Java Server Page (JSP) 3.2. To ng dng Web u tin vi Netbeans Sau khi khi ng xong Netbeans, ta tin hnh to Web application project ln lt theo cc bc trnh t nh sau: M menu File > New Project > Java Web > Web application nh hnh di 20. Lp trnh JSP, Servlet Trang 20 / 164 Chng I: B t u v i Java Server Page (JSP) n Next, ca s mi m ra vi tn Project mc nh, ta i tn Project thnh JspWebApplication, v n Next. Ca s mi m ra vi cc thng tin cu hnh c thit lp, ta chn Apache Tomcat trong mc Server v Java EE 6 Web cho mc Java EE Version. n Finish 21. Lp trnh JSP, Servlet Trang 21 / 164 Chng I: B t u v i Java Server Page (JSP) Ca s chnh hin ln v to sn on code mu trong file index.jsp trong th mc Web Pages di project JspWebApplication nh hnh sau By gi thay i mt cht on code mu trn: thay i tiu thnh JSP Web Page v thay i phn heading thnh Welcome To The JSP Web World! nh sau 22. Lp trnh JSP, Servlet Trang 22 / 164 Chng I: B t u v i Java Server Page (JSP) Tip theo, ta chy ng dng vi Tomcat Server. M ca s Services, v chn Apache Tomcat, chn RUN nh sau 23. Lp trnh JSP, Servlet Trang 23 / 164 Chng I: B t u v i Java Server Page (JSP) Trn trnh duyt s hin th thng tin trn trang index.jsp trn nh sau Vy l hon tt mt project mu xy dng ng dng Web s dng JSP. 4. Gii thiu v Twitter Bootstrap 4.1. Twitter Bootstrap l g 24. Lp trnh JSP, Servlet Trang 24 / 164 Chng I: B t u v i Java Server Page (JSP) Twitter Bootstrap bao gm cc m CSS v HTML c bn cho Grids, Layouts, Typography, Tables, Forms, Navigation, Alerts, .. v nhiu thnh phn khc ca website. i km vi hng lot plugin jquery to ra cc thnh phn giao din nh Transitions, Modal, Dropdown, Scrollspy, Tooltip, Tab, Alert, Button, Collapse, Carousel, ... Style ca cc phn t HTML trong Twitter Bootstrap kh n gin v thanh lch. V d nh phn bng trong input, highlight ca bng biu, cc m CSS hin th cnh bo, tabs, phn trang 4.2. Ti sao li dng Bootstrap Bootstrap gip chng ta gim thiu thi gian thit kt html v css. Bootstrap nh ngha sn cc class css cng vic ca chng ta ch l s dng cc class vo mc ch ca mnh. Bootstrap cn h tr Responsive design mt cch lm giao din a thit b rt c u chung trong thi gian gn y. Cc l do trn khin cho Bootstrap s rt hu dng trong cc bi hc ca chng ta. Thm na s bin cc bi mu, v d tr nn sinh ng, p hn; cng gip cc bn c thm cng c h tr tuyt vi xy dng cc ng dng web. 4.3. To giao din n gin vi Bootstrap Bootstrap ti v ti y: http://twitter.github.io/bootstrap/ Sau khi ti v, ta s c mt file Zip v sau khi tin hnh gii nn ta c mt th mc c tn bootstrap, bn trong c 3 th mc: css, img, js. Ni dung cc file, th mc cha trong nh sau . | - Css | | - Bootstrap.css | | - Bootstrap.min.css | | - Bootstrap-responsive.css | `- Bootstrap-responsive.min.css | - Img | | - Glyphicons-halflings.png | `- Glyphicons-Halflings-white.png `- Js | - Bootstrap.js `- Bootstrap.min.js 25. Lp trnh JSP, Servlet Trang 25 / 164 Chng I: B t u v i Java Server Page (JSP) Chng ta to 1 file html c tn l index.html trong th mc bootstrap va gii nn pha trn. Khai bo phn Head s dng Bootstrap n gin nh sau Ta vit tip phn body vi 2 textbox v 2 button nh sau: Vy l hon thnh v d n gin vi Bootstrap, m file index.html trn trnh duyt, ta s thy 26. Lp trnh JSP, Servlet Trang 26 / 164 Chng I: B t u v i Java Server Page (JSP) Khi thu nh trnh duyt ta s thy giao din s c co gin t ng v hin th nh sau Vy ta c mt giao din n gin v rt chuyn nghip trong khi khng cn bn tm nhiu ti vic thit k HTML, ct CSS lu nay vn lm. 4.4. To trang ch cho ton b v d trong gio trnh Ta s s dng kin thc v Bootstrap xy dng giao din chuyn nghip, nhanh chng, h tr vic tra cu cc v d c s dng trong ton b gio trnh. Giao din hin th nh sau 27. Lp trnh JSP, Servlet Trang 27 / 164 Chng I: B t u v i Java Server Page (JSP) Nh ta bit kh nng responsive design ca Bootstrap p ng vic hin th trn cc thit b c kch thc, phn gii khc nhau m khng cn ta phi thay i bt c dng m chng trnh no. Ta xem giao din s hin th trn mn hnh vi kch thc nh nh sau 28. Lp trnh JSP, Servlet Trang 28 / 164 Chng I: B t u v i Java Server Page (JSP) Tm tt bi hc Nh vy, ta i ht chng I tm hiu v ng dng Web, tm hiu v cng ngh JSP v Servlet. 29. Lp trnh JSP, Servlet Trang 29 / 164 Chng I: B t u v i Java Server Page (JSP) Ta cng bit cch ci t trnh ch Web, ni m cc ng dng Web xy dng bng JSP s c trin khai. N tht s khng phi l kh vi bn ng khng no. Mt li khuyn l s dng Netbeans pht trin ng dng Web ca bn. y l cng c tuyt vi pht trin, tch hp, g ri v c cng ng rng ln yu thch. Ta cng c gii thiu v cng ngh mi thit k Web chuyn nghip, hiu qu trn nhiu nn tng thit b, trnh duyt khc nhau l Twitter Bootstrap. y chnh l iu mi m, ti mang ti cho cc bn; hy b qua mi lo lng, bn khon ca bn v vic xy dng ng dng Web vi chc nng tt kh, thit k hon ho cn kh hn. Vy l trang b kin thc, ta bt tay vo bi hc v JSP v Servlet. Bi tp T ci t mi trng pht trin ng dng Web vi JSP o Ci t JRE o Ci t Apache Tomcate o Ci t Netbeans To project ng dng Web vi JSP s dng cng c Netbeans Ci t Twitter Bootstrap vo project va to S dng Bootstrap xy dng giao din cho trang ch tham kho v d sau http://getbootstrap.com/2.3.2/examples/justified-nav.html Run project trn Netbeans kim tra giao din va xy dng 30. Lp trnh JSP, Servlet Trang 30 / 164 Chng II: Tng quan v HTTP, Servlet v JSP CHNG II: Tng quan v HTTP, Servlet v JSP 1. C bn v HTTP Request/Response Hypertext Transfer Protocol (HTTP) l mt giao thc khng trng thi (stateless) nm tng ng dng, m nhim vic giao tip gia cc h thng phn tn vi nhau, v l nn tng ca web. Ngi dng gi mt yu cu ti Server thng qua vic click vo link trn trang web hoc submit form hoc nhp thng tin a ch trang web trn thanh a ch ca trnh duyt, gi c Request, trnh duyt cn bit Server cn phi ni chuyn v ti nguyn cn c yu cu. Thng tin ny chnh l HTTP Uniform Resource Locator (URL). URL l mt cu trc n gin thng bao gm: Protocol: http hoc https Host: tn min server Port: mc nh l 80 Resource path: ng dn ti resource trn server Query: tham s truy vn Mc tiu: Sau khi kt thc chng ny, bn c th: Hiu y v cch hot ng, thnh phn cu to ca 2 i tng c bn trong giao thc HTTP l HTTP Request v Response Hiu v kin trc v vng i ca JSP v Servlet Cc cch thit k ng dng Web bng cng ngh JSP theo m hnh MVC 31. Lp trnh JSP, Servlet Trang 31 / 164 Chng II: Tng quan v HTTP, Servlet v JSP HTTP cho php giao tip gia rt nhiu loi server/client vi nhau, ch yu thng qua TCP/IP. Cng giao tip chun l 80, tuy nhin c th dng bt k cng khc nh 8080 (mc nh ca Tomcat). Giao tip gia client v server da vo mt cp request/response. Client khi to HTTP request v nhn HTTP response t server gi v. HTTP request bao gm hai thnh phn quan trng l URL v Verb (phng thc), c gi t client. pha ngc li, server tr v HTTP response trong cha Status code v Message body. 1.1. HTTP Request Mi request bt u vi mt Request-Line. Dng ny ch ra phng thc m client yu cu, ti nguyn, v phin bn ca HTTP m client c th h tr. Request-Line c th c tip sau mt hay nhiu header v mt message body. GET / HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Host: www.ft.com Connection: Keep-Alive a. Request-Line Request-Line cha ba mc phn bit, l method, uri, v phin bn HTTP, mi mc c phn tch bi mt hay nhiu khong trng. Mt s cc phng thc thng dng nh: GET: c thit k truy vn d liu, ti nguyn trn server, vi cc tham s v gi tr nm ngay trn URL. POST: c dng trong cc trng hp to ra s thay i v d liu, ti nguyn trn server nh upload mt file hoc submit mt web form. 32. Lp trnh JSP, Servlet Trang 32 / 164 Chng II: Tng quan v HTTP, Servlet v JSP PUT: c thit k cp nht d liu, ti nguyn trn server. DELETE: c thit k xa d liu, ti nguyn trn server. Ngoi ra cn c mt s phng thc khc t c s dng nh HEAD, TRACE, OPTIONS. Request-uri Cung cp a ch nh danh ti nguyn cho mt ti nguyn. V d, Request-uri l /, ch ra mt request cho ti nguyn gc. Cho cc request khng yu cu mt ti nguyn c th (nh l TRACE request hay trong mt s trng hp c OPTIONS request), client c th dng mt du * cho Request-uri. Phin bn HTTP Nh trong v d, phin bn HTTP l 1.1 cha trong on text HTTP/1.1. b. Message header Mt message header c th cha cc loi general header, request header, hoc entity header. General header p dng trong truyn d liu; request header p dng cho cc request c th, v entity header p dng cho message body trong request. Host: l hostname c s dng trong URL. User-Agent: cha thng tin v loi trnh duyt, thit b to ra Request. V server c th s tr v cc Response khc nhau v ph hp nht da trn thng tin v loi trnh duyt hoc loi thit b ang c s dng. Accept: cung cp thng tin v ngn ng, nh dng file, ch nh loi Response c trnh duyt mong i. c. Message body Mt HTTP request lun cha mt dng trng sau Request-Line v bt k header no. Nu request bao gm mt message body, phn body i sau mt dng trng. Dng trng rt quan trng v server xc nh c phn kt ca request, hoc phn kt ca header. Khng c dng trng, server nhn cc message s khng bit c cc header khc na c tip tc c truyn khng. Message body c th cha cc thng tin v tham s nh cc gi tr c client thit lp trong form, hoc trong chui URL. 1.2. HTTP Response Mt HTTP response bt u vi mt Status-Line v c th cha cc header v mt message body. Header c th m t qu trnh truyn d liu, xc nh response, hoc phn body km theo. Dng bt u vi phin bn cao nht ca HTTP m server h tr. HTTP/1.1 200 OK Date: Sun, 08 Oct 2000 18:46:12 33. Lp trnh JSP, Servlet Trang 33 / 164 Chng II: Tng quan v HTTP, Servlet v JSP GMT Server: Apache/1.3.6 (Unix) Keep-Alive: timeout=5, max=120 Connection: Keep-Alive Content-Type: text/html Hello World! HTTP Status-Line bt u vi ch bo HTTP, m trng thi, v mt on text m t response. Hai mc cn li trong Status-Line l Status-Code v Reason-Phrase. Status-Code l mt b ba k t ch bo kt qu ca request. a. Status code Status code l thng tin quan trng server tr v cho client, cho bit kt qu x l request ca server. Cc loi status code thng gp: Status code M t 1xx Informational Message: Loi status code ny c m t HTTP/1.1 v hon ton mang tnh cht tm thi, client c th b qua chng. 2xx Successful: Server tr v status dng ny khi x l thnh cng request ca client. i vi GET request, d liu tr v nm trong message body. Ph bin nht l m 200 OK. Ngoi ra cn c: 202 Accepted: request t client c chp nhn nhng c th server khng tr v kt qu cho client. iu ny hu dng trong trng hp x l bt ng b pha server: server thng bo cho client khng phi tip tc ch i cho ti khi qu trnh x l trn server hon tt. 204 No content: khng c phn message body trong response. 205 Reset content: tng t nh 204, nhng m tr v ny yu cu client reset document view. 206 Partial content: server ch gi v mt phn d liu ph thuc v gi tr range header client gi ln. Gi tr ny c s dng bi cc tool h tr download nh wget, IDM phn mnh d liu thnh nhiu phn nhm ti v ng thi hoc h tr tip tc download khi b ngt gia chng. 3xx Redirection: Server thng bo cho client phi thc hin thm action hon thnh request. Ngoi ra cn c: 34. Lp trnh JSP, Servlet Trang 34 / 164 Chng II: Tng quan v HTTP, Servlet v JSP 301 Moved Permanently: resource c chuyn hon ton ti a ch trong trng Location ca response. 303 See Other: resource c chuyn tm thi ti a ch trong trng Location ca response. 304 Not Modified: resource khng thay i t ln cui cng client gi request, v client nn s dng d liu lu trong b nh cache. iu ny c thc hin bng cch khi gi request, client gi i trng ETag l nh danh ca phn d liu request ln trc, server so snh vi trng ETag ng vi d liu ca n kiu tra s thay i. 4xx Client error: C li i vi yu cu ca client. Ngoi ra cn c: 400 Bad Request: request khng ng nh dng, c php. 401 Unauthorized: client cha xc thc. 403 Forbidden: client khng c quyn truy cp. 404 Not Found: khng tm thy resource. 405 Method Not Allowed: phng thc (HTTP verb) khng c server h tr. 5xx Server error: C li xy ra trong qu trnh x l ca server. M 500 Internal Server Error l ph bin nht. Ngoi ra cn c: 501 Not Implemented: server khng h tr chc nng client yu cu. 503 Service Unavailable: mt thnh phn x l trn server b li hoc server b qu ti. b. Last-Modified Cung cp thng tin v thi gian ln cui cng thng tin ti nguyn t Server c thay i. Da vo thng tin ny, trnh duyt c th so snh vi thi gian trong local cache ca mnh yu cu Server gi v cc thng tin cp nht mi nht so vi ln yu cu cui. c. Content-Type Cung cp thng tin v loi d liu phn hi cha trong phn body. d. Content-Length Cung cp thng tin kch thc phn header. 2. Gii thiu v Servlet/JSP Vai tr ca Servlet v JSP c th hin trong kin trc J2EE hnh di 35. Lp trnh JSP, Servlet Trang 35 / 164 Chng II: Tng quan v HTTP, Servlet v JSP 2.1. Servlet l g ? Java servlet l nhng chng trnh c lp platform v nh chy pha server c lp trnh m rng chc nng ca web server. Ngha l ta c th nhng logic ca ng dng ring vo vic x l cc HTTP request v to HTTP response. Mt servlet c thc thi ng trn my ch v cho php m rng thm chc nng cho my ch ny nh: x l/lu d liu gi t mu HTML (HTML form), cung cp d liu ng qua vic ly thng tin thng qua kt ni vi c s d liu, thc hin giao dch thng mi in t ... JSP c xy dng hon ton trn nn tng Servlet. Trong thc t, JSP lun c s dng kt hp vi Servlet to ra cc ng dng Web. Mt servlet l mt chng trnh Java, c th hn, n l mt th hin ca mt lp, lp ny thc thi (implements) Interface javax.servlet.Servlet. Interface Servlet tha k (extends) t 2 Interface javax.servlet.GenericServlet, javax.servlet.http.HttpServlet. 2.2. Vng i ca Servlet Servlet c qun l bi Servlet Container. Container s n nhn cc Request t trnh duyt khch, sau s phn phi ti ng dng Web ph hp. Da vo tham s trong Request, Container s bit kch hot cc Servlet tng ng da vo cc thng tin cu hnh ca ng dng c ng k. Container s khi to Servlet v qun l vng i hot ng ca Servlet. Vng i ca Servlet gm 6 trng thi nh sau 36. Lp trnh JSP, Servlet Trang 36 / 164 Chng II: Tng quan v HTTP, Servlet v JSP To ra: web container to mt thc th servlet Sn sng phc v: gi method init() ca servlet Phc v: nu c mt request th container s gi method service() ca servlet. Hu: container gi method destroy() ca servlet. Khng sn sng: thc th c nh du cho garbage collection. Khi servlet trng thi Phc v, hm service() ca servlet s nhn 2 i tng Request, Reponse truyn ti. Da vo i tng Request c gi n phng thc HTTP ph hp v phn b (dispatch) truy vn ny n phng thc x l tng ng ca servlet, thng qua cc khai bo phng thc doXXX ca cc servlet. Cc phng thc Servlet doPost(), doGet(), doHead(), doDelete(), doHead(), doOptions(), doPut(), doTrace() ln lt tng ng vi cc phng thc HTTP POST, GET, HEAD, DELETE, HEAD, OPTIONS, PUT, TRACE. protected void doDelete(HttpServletRequest req, HttpServletResponse resp) protected void doGet(HttpServletRequest req, HttpServletResponse resp) protected void doHead(HttpServletRequest req, HttpServletResponse resp) protected void doOptions(HttpServletRequest req, HttpServletResponse resp) protected void doPost(HttpServletRequest req, HttpServletResponse resp) protected void doPut(HttpServletRequest req, HttpServletResponse resp) 2.3. JSP v vng i ca JSP 37. Lp trnh JSP, Servlet Trang 37 / 164 Chng II: Tng quan v HTTP, Servlet v JSP Nh ta bit, vic to ni dung html tr li trong servlet bng cch dng cc lnh out.println() l mt vic tn nhiu cng sc, c bit khi ni dung html tr li cng phc tp. Vic ny cn t hn khi ta mun bo tr hay thay i ni dung tr li. JSP em li mt gii php tin li hn khi cho php chn ni dung ng vo trang web, n cn cho php vic tch bch phn trnh by v logic x l ni dung. Vi servlet th ta chn m html pht sinh trong lp java cn JSP th ngc li, ta chn m java trong trang html. Sau khi trang jsp c dch (translate) v c bin dch (compile) thnh cc servlet, th vng i ca jsp ny c vng i nh ca servlet. Nu trong b cha cha c mt hin th (instance) no ca servlet ca trang jsp th b cha s: Ti lp servlet ca trang jsp To mt hin th ca lp servlet ny Khi to hin th ca lp ny bng cch gi hm jspInit. B cha gi hm _jspService, v truyn vo tham s l hai i tng Request v Response. Nu b cha mun loi b servlet ca trang jsp ny, n s gi hm jspDestroy. 2.4. Cc thnh phn ca JSP a. Ch th JSP (JSP directives) Ch th JSP c dng sau: V d: Hoc i vi JSP 2.0, ta cn thm cc cch khai bo khc nh sau Cch s dng khai bo JSTL 38. Lp trnh JSP, Servlet Trang 38 / 164 Chng II: Tng quan v HTTP, Servlet v JSP Hai cch ny tuy a li kt qu nh nhau nhng chng c s khc bit c bn sau: Ch th include s gp tp tin khi trang jsp c chuyn thnh servlet. Nu tp tin c include t thay i th ta nn dng phng php ny v n s nhanh hn v mt hiu nng v ch thc hin 1 ln u tin. Hnh ng include s thm tp tin pht sinh vo trang jsp sau khi trang c thc thi. Ta nn dng chn la ny nu ni dung tp tin c include hay thay i. b. S dng th c bit chn cc khai bo Java vo trong trang JSP Th khai bo (declaration): cho php thm trc tip m vo lp servlet, nh ngha cc bin ton cc hay khai bo cc phng thc. Trong v d sau, ta ghi hai hm jspInit v jspDestroy trong th khai bo ny. Hoc c th thay th bng on m sau ResourceBundle rb; public void jspInit() { rb = ResourceBundle.getBundle("messages"); } Th scriptlet: c dng chn m vo phng thc _jspService() ca servlet. Ni chung l thnh phn c s dng chn m Java ngoi tr cc bin ton cc v phng thc. Hoc c th thay th bng on m sau 39. Lp trnh JSP, Servlet Trang 39 / 164 Chng II: Tng quan v HTTP, Servlet v JSP session.setAttribute("user", null); String sucessPath = rb.getString("process.logoff"); Th biu thc (expression): dng hin th kt qu ca mt biu thc. Biu thc ny s c chuyn lm tham s ca mt gi hm out.print() bn trong phng thc _jspService() Hoc c th thay th bng on m sau rb.getString("logoff.title") c. Cc bin ngm nh Trong mt trang jsp ta c th s dng cc bin khai bo sn sau: request: i tng javax.servlet.http.HttpServletRequest response: i tng javax.servlet.http.HttpServletResponse out: i tng javax.servlet.jsp.JspWriter session: i tng javax.servlet.http.HttpSession application: i tng javax.servlet.ServletContext config: i tng avax.servlet.ServletConfig pageContext: i tng javax.servlet.jsp.PageContext page: l servlet d. Cc hnh ng ca JSP (JSP actions) jsp:include: ch nh cho trnh bin dch gp tp tin vo trang : c th c s dng trong jsp:include, jsp:forward, jsp:params. Nhm xc nh mt thng s gi km : chuyn truy vn sang mt servlet hay trang jsp khc. : thc thi hay hin th mt i tng, i tng ny c th l mt applet hay bean. Trong tr li di dng HTML, th th ny c chuyn thnh th hay : ni dung hin th nu pha khch khng h tr applet, dng km vi : ly gi tr mt thuc tnh ca mt JavaBean. 40. Lp trnh JSP, Servlet Trang 40 / 164 Chng II: Tng quan v HTTP, Servlet v JSP : gn gi tr cho mt thuc tnh ca mt JavaBean. : khi to hay ti s dng mt JavaBean tn ti dng trong trang. 2.5. Thit k ng dng web theo m hnh MVC K t khi ra i cng ngh JSP v Servlet, c hai m hnh chnh ca Phng php thit k MVC trong Java l MVC model 1 v MVC model 2. a. S ca MVC model 1 Trong MVC model 1, cc trang JSP ng vai tr hin th (View) v iu khin (Controller). C th c nhiu trang JSP khc nhau ng cc vai tr khc nhau. Khi ngi s dng dng cc nt bm, menu hoc link trn trnh duyt Web (Web browser) thc hin mt thao tc, mt lnh (c th km theo cc tham s) c gi ti mt trang JSP tng ng. Trang JSP ny s khi to mt hoc nhiu JavaBeans (nu cn thit), truyn cc lnh cn thi hnh ti JavaBeans. Sau khi JavaBeans thc hin xong vic truy xut hoc cp nht d liu, trang JSP ban u c th hin th d liu ly t Beans (JSP ban u ng lun vai tr View), hoc chn mt trang JSP khc hin d liu t Beans (JSP ban u ng lun vai tr Controller). Trong mt thit k tt, bo m vic tch ri phn trnh by v logic ca chng trnh, trang JSP nhn request ch ng vai tr iu khin (Controller). MVC model 1 c mt nhc im l phn logic iu khin c vit trong trang JSP, nh vy phn chng trnh Java phc tp dng iu khin s b ln vo trong m HTML dng trnh by. phc tp ca chng trnh cng cao, th trang JSP cng kh bo tr. Hn na trong cc d n phn mm phc tp, th phn hin th ca trang JSP thng 41. Lp trnh JSP, Servlet Trang 41 / 164 Chng II: Tng quan v HTTP, Servlet v JSP c lm bi ngi thit k Web, gii v HTML v ha, cn phn chng trnh Java c vit bi lp trnh vin chuyn v lp trnh. Trong cc d n phc tp, dng JSP lm phn iu khin s lm ln ln vic phn chia ranh gii trch nhim gia nhm thit k ha v nhm lp trnh, i khi dn n vic bo tr v pht trin tr nn rt kh khn, gn nh khng th lm c. khc phc nhc im ny, MVC model 2 ra i. b. S ca MVC model 2 Trong MVC model 2, mt hoc nhiu servlet (thng l mt) ng vai tr iu khin, cc JavaBeans ng vai tr m hnh v cc trang JSP ng vai tr hin th. Trong model 2, cc logic phc tp ca chng trnh c vit hon ton trong cc servlet, l cc chng trnh Java. Phn hin th ch gm cc trang JSP vi mt vi m n gin ly d liu c sn, khng c logic phc tp, v th hon ton c th c to ra bng nhng ngi thit k Web. Cc yu cu ca ngi dng c gi t trnh duyt Web ti servlet. Servlet s khi to JavaBeans (nu cn thit), ra lnh thu thp, cp nht thng tin. Khi JavaBeans hon thnh cng vic, servlet s chn trang JSP thch hp hin th thng tin trong JavaBeans cho ngi dng. y chnh l mt cch s dng MVC rt hiu qu trong Java. Tt nhin l s dng MVC model 2 mt cch hon ton cng nhc, phn iu khin ch dng servlet, phn hin th ch dng JSP s dn n mt vi trng hp km hiu qu, nht l khi c cc request t trnh duyt Web ch i hi vic hin th thng tin. c. u im MVC Pht trin phn mm: C tnh chuyn nghip ha, c th chia cho nhiu nhm c o to nhiu k nng khc nhau, t thit k m thut cho n lp trnh n t chc database. Bo tr: Vi cc lp c phn chia theo nh ni, th cc thnh phn ca mt h thng d c thay i, nhng s thay i c th c c lp trong tng lp, hoc ch 42. Lp trnh JSP, Servlet Trang 42 / 164 Chng II: Tng quan v HTTP, Servlet v JSP nh hng n lp ngay gn k ca n, ch khng pht tn no lon trong c chng trnh. M rng: Vi cc lp c chia theo ba lp nh ni, vic thm chc nng vo cho tng lp s d dng hn l phn chia theo cch khc. Tin v bug li, kim sot code, workflow d dng hn v nhiu ngi c th tham gia pht trin cng trn 1 module. d. Nhc im MVC: i vi d n nh: Cng knh, tn thi gian pht trin. Trade-off l performance, do tn thi gian trung chuyn DTO (Data Transfer Object) gia cc layers Tm tt bi hc HTTP request bao gm hai thnh phn quan trng l URL v Verb (phng thc), c gi t client. pha ngc li, server tr v HTTP response trong cha Status code v Message body. JSP c xy dng hon ton trn nn tng Servlet. Trong thc t, JSP lun c s dng kt hp vi Servlet to ra cc ng dng Web. Mt servlet l mt chng trnh Java, c th hn, n l mt th hin ca mt lp, lp ny thc thi Interface javax.servlet.Servlet. Interface Servlet tha k (extends) t 2 Interface javax.servlet.GenericServlet, javax.servlet.http.HttpServlet. Vng i ca Servlet gm 6 trng thi nh sau To ra: web container to mt thc th servlet Sn sng phc v: gi method init() ca servlet Phc v: nu c mt request th container s gi method service() ca servlet. Hu: container gi method destroy() ca servlet. Khng sn sng: thc th c nh du cho garbage collection. Trong MVC model 1, cc trang JSP ng vai tr hin th (View) v iu khin (Controller). Trong MVC model 2, mt hoc nhiu servlet (thng l mt) ng vai tr iu khin, cc JavaBeans ng vai tr m hnh v cc trang JSP ng vai tr hin th. Trong model 2, cc logic phc tp ca chng trnh c vit hon ton trong cc servlet, l cc chng trnh Java. Phn hin th ch gm cc trang JSP vi mt vi m n gin ly d liu c sn, khng c logic phc tp, v th hon ton c th c to ra bng nhng ngi thit k Web. 43. Lp trnh JSP, Servlet Trang 43 / 164 Chng II: Tng quan v HTTP, Servlet v JSP Bi tp S dng cc khai bo Scriptlet thc hin cc yu cu sau 1. Tnh ton tng cc gi tr ca dy s lin tip t 1 n 99 v hin th kt qu ln trang Web 2. Hin th thi gian, ngy thng hin ti ca h thng ln trang Web 3. Hin th s lng cc phn t ca mng 1 chiu kiu double v chuyn i gi tr ca cc phn t v kiu String v hin th chng 4. Hin th gi tr cc phn t ca mng 2 chiu kch thc 3x4 kiu double (gi tr bn t khi to) 5. Hin th kt qu thc hin vic ni 2 chui 6. Chuyn i chui String sang mng cc phn t kiu char v hin th danh sch cc phn t ca mng 7. Hy xy dng hm thay th chui khai bo nh sau public String replaceString(String strSource,String oldStr,String newStr) Hm s thay th chui oldStr trong chui strSource bi cc chui newStr. Kim tra kt qu thc thi hm trn v hin th kt qu t c 44. Lp trnh JSP, Servlet Trang 44 / 164 Chng III: Xy dng Web ng vi JSP CHNG III: Xy dng Web ng vi JSP 1. Quy trnh xy dng v trin khai ng dng Web vi JSP 1.1. To mi Web application project vi Netbeans To mi Web application project t tn JspWebApplication theo hng dn ca phn trc. Gii nn 3 th mc css, js, image ca Twitter Bootstrap theo hng dn ca phn trc v t cng th mc vi WEB-INF v META-INF. To mi file t tn design-global.css cha cc style chnh sa ca cc class Twitter Bootstrap v t trong th mc css, nhp ni dung sau vo file @import url("bootstrap.min.css"); To mi th mc v t tn pages cha cc trang JSP. 1.2. To mi trang login.jsp To mi th mc ch3 nm trong th mc pages v to mi file login.jsp. Chn chut phi vo th mc ch3, chn New > JSP nh sau Mc tiu: Sau khi kt thc chng ny, bn c th: Nm vng y mt quy trnh xy dng mt ng dng Web vi JSP bng Netbeans, cho ti vic trin khai ng dng ra bn ngoi qua vic ci t ng dng ti trnh ch Web c th nh Tomcat Hiu r cc vn v JSP directive, template text v gi th vin JSTL 45. Lp trnh JSP, Servlet Trang 45 / 164 Chng III: Xy dng Web ng vi JSP Ca s mi m ra, ta in tn file login vo mc File Name, n Finish. Ca s lp trnh m ra vi ni dung mc nh sn cho trang login.jsp. Ta sa li ni dung cho trang login.jsp nh sau: Khai bo s dng Bootstrap: thm ng dn ti file *.css v *.js To mi 1 form, t tn l loginForm, s du ng phng th c POST va gi servlet x l thng qua khai bo ${pageContext.request.contextPath}/checkLogin (action tn la checkLogin s c khai bo trong file cu hnh web.xml, khai ba o ${pageContext.request.contextPath} s gip ly v URL gc ca ng dng ta se tim hi u v khai ba o na y ph n sau) 46. Lp trnh JSP, Servlet Trang 46 / 164 Chng III: Xy dng Web ng vi JSP Trong form khai ba o 2 tr ng co name l username v password (name se giu p servlet ly c gi tr client gi ln thng qua i tng Request ). Trong vi du , ta s dng sn vic validate form ca Bootstrap kim tra email Khi ng i du ng nh p u ng username va password ([email protected] admin), ng i du ng se c chuy n t i trang welcome .jsp ; n u khng u ng , ng i dng s c yu cu nhp li thng tin M trnh duyt v g URL xem kt qu http://localhost:8084/JspWebApplication/pages/ch3/login.jsp 1.3. To mi trang welcome.jsp 47. Lp trnh JSP, Servlet Trang 47 / 164 Chng III: Xy dng Web ng vi JSP To mi trang welcome.jsp tr v kt qu hnh ng ng nhp trn. Khi thng tin ngi dng, mt khu nhp vo trang login.jsp khp s chuyn ngi dng ti trang welcome.jsp. Trang s hin th thng tin tn ngi dng nh sau 1.4. Khai bo Servlet To mi package v t tn vn.edu.designglobal.ch3 nh sau 48. Lp trnh JSP, Servlet Trang 48 / 164 Chng III: Xy dng Web ng vi JSP To mi servlet v t tn Login nh sau 49. Lp trnh JSP, Servlet Trang 49 / 164 Chng III: Xy dng Web ng vi JSP Ca s mi s hin th ni dung c sinh sn cho file Login.java. Ta chnh sa li ni dung file ny nh sau: Thm m i 2 bi n url_success va url_fail chuyn hng ngi dng sang trang ph h p khi a ki m tra thng tin username, password Thm mi hm getUser, init Chnh sa li hm processRequest: ki m tra thng tin username , password; n u kh p s tr v chui DesignGlobal hoc tr v chui trng v t vo i tng Request (s c l y ra trong file welcome.jsp ; hm s chuyn hng ngi dng ti trang tng ng Khi ng i du ng nh p u ng thng tin , s c chuyn ti trang hin th kt qu nh bn d i 50. Lp trnh JSP, Servlet Trang 50 / 164 Chng III: Xy dng Web ng vi JSP 1.5. Khai ba o c u hinh web.xml Khai ba o c u hinh web.xml l bc cui cng ng dng c th hot ng theo u ng mong mu n va la b c quan tro ng nh t trong ng du ng Web vi t b ng JSP. Khai ba o action tn checkLogin chuyn yu c u x ly cu a Form t i u ng servlet Login.java trong mu c Tn servlet se c so kh p trong mu c tm ti servlet x l tng ng 1.6. Tri n khai ng du ng ln Tomcat S du ng cng cu Deploy ca Netbeans to ra file *.war nh sau Chu t pha i va o tn Web application va cho n Deploy , Netbeans s to ra file JspWebApplication.war trong th mu c dist ca project 51. Lp trnh JSP, Servlet Trang 51 / 164 Chng III: Xy dng Web ng vi JSP Copy file JspWebApplication.war vo th mc webapps tng ng cu a Tom cat (v d C:Program FilesApache Software FoundationTomcat 7.0webapps) V y la ta a hi u ton b cc bc pht trin 1 ng dng web vi JSP t bc to project t i tri n khai project ln mi tr ng Web Server (Apache Tomcat 7.0). 2. S dng cc thnh phn JSP directive C 3 loi JSP directive l page, include v taglib. Trong chng 2, ta cu ng a c p t i ca c directive na y ; chng ny, ta se t p trung no i v ca c thu c tinh cu a ca c khai ba o ny. a. Page Trang JSP c b t u b i khai ba o page directive xa c inh loa i n i dung cu a trang. Tn cc thuc tnh v gi tr ca chng c phn bit ch hoa, ch thng ; gi tr thuc tnh phi c t trong cp du nhy n hoc nhy kp. 52. Lp trnh JSP, Servlet Trang 52 / 164 Chng III: Xy dng Web ng vi JSP Gi tr mc nh (khi khng khai bo) cho thuc tnh contentType l text/html. Bn cnh cn c cc gi tr khc nh text/plain, text/xml, text/vnd.wap.xml c s dng trong cc mi trng ph hp. Mt s thuc tnh khc nh errorPage, isErrorPage, session, pageEncoding, buffer v autoFlush. import: kt qu l cu lnh import ca Java c chn vo trong tp tin. contentType: Ch nh ni dng ca tp tin c khi to. Chng ta nn dng ch phi ny nu chng ta khng dng HTML, hoc b k t (character set) c dng khng phi l b k t mc nh. errorPage: Ch nh rng trang web s c hin th nu c mt ngoi l (exception) xy ra trong qu trnh x l yu cu HTTP. isErrorPage: Nu nh gi tr l true th n ni rng trang ny l trang bo li (error page). isThreadSafe: Ch nh cho bit servlet to ra c tnh an ton v lung x l (threadsafe) hay khng. //example import //example contentType //example for non error page //example for a thread safe JSP b. Include Khai bo s thng bo cho b bin dch JSP cho nhp ton b ni dung ca mt tp tin vo trong ni dung hin c. JSP cho php chia trang thnh nhiu phn (fragment) v sau s dng khai bo include gp chng li. Li ch ln mang li l tnh ti s dng cao, lm gn cc on m chng trnh. c. Taglib Khai bo taglib cho php s dng th vin th m rng h tr bn cnh th vin th ca JSP. Thuc tnh uri cha chui nh danh duy nht th vin th m rng. Thuc tnh prefix nh ngha tn rt gn ca th vin th ny c gi khi s dng tp th m rng. d. Comment 53. Lp trnh JSP, Servlet Trang 53 / 164 Chng III: Xy dng Web ng vi JSP Chui k t t trong cp th , JSP s xem l comment cho chng trnh v s khng c a vo trong qu trnh bin dch trang. 3. S dng Template text trong JSP Bn cnh cc thnh phn JSP, trong trang JSP cn c cc thnh phn theo chun HTML gi l Template text. Cc khai bo thuc v Template text, JSP s nguyn trong qu trnh bin dch v s gi v trnh khch trong phn hi ca n. JSP is Easy JSP is as easy as ... 1 + 2 + 3 = 4. S dng cc thnh phn JSP action (JSTL) Cc JSP action chnh l thnh phn mang li tnh ng cho cc ng dng Web ng. Cc action c thc thi khi trang JSP c yu cu. Action c th c s dng ghi ra file trn server, gi email hoc ly d liu t database, JSP is Easy JSP is as easy as ... 1 + 2 + 3 = 54. Lp trnh JSP, Servlet Trang 54 / 164 Chng III: Xy dng Web ng vi JSP C php chnh khai bo mt action nh sau action_body Action c khai bo ging nh mt thnh phn HTML. Nu action c phn body, khai bo s c th m cha cc cp attribute=value, tip n l body, kt thc l th ng. Body c th l dng text hoc cha cc khai bo action khc. Khi action khng c body, khai bo c th c rt gn nh sau Cc action hoc th (tags) c th c nhm vo cc th vin (tag libraries). Khi mun s dng cc tag libraries, ta s s dng khai bo taglib vi tn nh danh rt gn nh sau ... Action c th chia vo 3 nhm chnh l standard, custom v JSP Standard Tag Library (JSTL). a. Standard actions Mc nh trong trang JSP ta c th s dng cc standard actions m khng cn khai bo, chng c tin t l jsp: : Tng t nh mc ch s dng mt th tc con (subroutine), Java servlet tm thi trao nhim v t yu cu v hi m cho trang JavaServer (JavaServer Page) ch nh no y. Quyn khng ch s c hon li cho trang JSP hin ti, mt khi trang JSP kia hon thnh nhim v ca n. Dng phng php ny, m trang JSP c chia s vi nhiu trang JSP, thay v phi sao m. : m trang JSP c chia s vi nhiu trang JSP, thay v phi copy m : C th c dng bn trong khi jsp:include, khi hoc khi . N c dng xc nh mt thng s, v thng s ny s c cng thm vo chui cc thng s hin c ca yu cu. : c dng trao nhim v t yu cu v hi m sang cho mt trang JSP khc, hoc cho mt servlet khc. Quyn khng ch s c hon tr li cho trang JSP hin ti. 55. Lp trnh JSP, Servlet Trang 55 / 164 Chng III: Xy dng Web ng vi JSP : Nhng phin bn c ca Netscape Navigator v Internet Explorer dng nhng th khc nhng mt chng trnh nh (applet). Hnh ng ny to nn th thuc trnh duyt web cn thit bao gm mt chng trnh nh. : Phn ni dung s c hin th nu trnh duyt web khng h tr chng trnh nh (applets). : get of property ca mt JavaBean ch nh. : set Property value s hu ca mt JavaBean ch nh. : Kin to hoc dng li mt JavaBean, l ci c th dng c trong trang JSP. b. Custom actions c t JSP nh ngha tp cc lp Java cho php ngi lp trnh to ra cc action mi s dng li cho cc d n. c. JSTL Th vin th ca JSTL c chia lm 4 loi nh sau: Core (c): Cha cc hnh ng c bn nh if, forEach. Formatting (fmt): nh dng v quc t ha SQL (sql): Truy xut CSDL XML (x): Phn tch v c d liu t XML Bng tp hp Tag Core action Catch nhng exception xy ra trong code body Chn 1 trong nhiu on m thi hnh khi tha mn iu kin no Vng lp qut ht tp hp no Vng lp qut ht 1 chui no theo chui phn cch Thi hnh on code khi tha mn iu kin Import mt URL no Xc nh gi tr mc nh cho Gi output cho JspWriter hin hnh Xc nh 1 tham s URL cho hay iu hng request sang URL mi Xa 1 i tng trong 1 scope no 56. Lp trnh JSP, Servlet Trang 56 / 164 Chng III: Xy dng Web ng vi JSP To 1 i tng trong 1 scope no To 1 URL Khai bo iu kin trong Bng tp hp Tag ca Format action Xc nh resoure bundle cho cc messge i km trong th fmt:bundle Xc nh resoure bundle v gn vo 1 bin dng sau ny nh dng ngy theo 1 vng a l no nh dng s theo 1 vng a l no Truy xut vo 1 message trong bundle Tm tt bi hc Ta c gii thiu v hng dn cc bc lm c th pht trin mt ng dng Web s dng cng ngh JSP bng cng c Netbeans. V t trin khai ng dng ln trn trnh ch Web nh Tomcat. Ta cng c hc v cc thnh phn ca JSP nh cc directive, th script, scriptlet, cc bin ngm nh. Action c th chia vo 3 nhm chnh l standard, custom v JSP Standard Tag Library (JSTL). Standard action: Mc nh trong trang JSP ta c th s dng cc standard actions m khng cn khai bo, chng c tin t l jsp: Custom action: c t JSP nh ngha tp cc lp Java cho php ngi lp trnh to ra cc action mi s dng li cho cc d n. JSTL action: Th vin th ca JSTL c chia lm 4 loi nh sau: o Core (c): Cha cc hnh ng c bn nh if, forEach. o Formatting (fmt): nh dng v quc t ha o Formatting (fmt): nh dng v quc t ha o XML (x): Phn tch v c d liu t XML Bi tp 57. Lp trnh JSP, Servlet Trang 57 / 164 Chng III: Xy dng Web ng vi JSP Tham kho v d trong mc 1 v trong m ngun project (xem Ph Lc 1) xy dng cc ng dng nh sau 1. ng dng c trang login.jsp cha 1 Text nhp tn ngi dng, sau khi Submit, ngi dng s c chuyn hng ti trang welcome.jsp hin th li cho ngi dng 2. ng dng cho php ngi dng nhp thng tin userName/password ti trang user.jsp, nu thng tin khp design/global th chuyn hng ngi dng ti trang introduce.jsp gii thiu thng tin v Hc vin Design Global; tri li yu cu ngi dng nhp li thng tin userName/password 3. ng dng s hin th danh sch 10 lp hc ca Hc vin Design Global trong file list.jsp, mi lp hc hin th trn 1 dng gm cc trng: 1 checkbox, trng ClassID (tng dn t 0-9), trng ClassName. Ngi dng s la chn cc lp trong cng lnh vc ca mnh (thi trang, ha, lp trnh) v s Submit thng tin. ng dng s chuyn hng ngi dng ti trang confirm.jsp hin th danh sch cc lp hc c chn. 58. Lp trnh JSP, Servlet Trang 58 / 164 Chng IV: Javabeans trong JSP CHNG IV: JavaBeans trong JSP 1. JavaBeans l g ? 1.1. Khi nim JavaBeans hay Bean, l mt lp Java n gin m tn ca cc thnh phn c t theo qui c ca cc c t c php JavaBeans. Ging nh bt k lp Java no, cc th hin ca bean n thun l cc i tng Java. Ta c th s dng trc tip qua m Java tham chiu ti i tng, phng thc ca bean hoc c th s dng Scriptlet. 1.2. Cc quy c ca Bean Cc quy tc khi khai bo bean bao gm: Tn lp bean phi c tip v ng Bean cui nh CustomerBean, StudentBean, Bean phi c hm khi to khng tham s Cc thuc tnh ca bean khng nn khai bo public Gi tr cc thuc tnh nn c truy cp thng qua cc phng thc getXXX, setXXX i vi server-side, bean khng nn s dng cc th vin ha 2. Khai bo, khi to v thao tc vi cc i tng bean trong JSP 2.1. Cc JSP element dng cho bean a. jsp:useBean Khai bo cho php ti bean vi tn ch nh v thit lp phm vi s dng vo trang JSP. C php Mc tiu: Sau khi kt thc chng ny, bn c th: Nm bt c vai tr ca JavaBeans i vi JSP v cc quy c i km Hiu r cc bc khai bo, khi to, s dng mt i tng bean Nm bt c ch Introspector ca cng ngh JSP Hiu v phm vi hot ng ca bean 59. Lp trnh JSP, Servlet Trang 59 / 164 Chng IV: Javabeans trong JSP id: tham chiu ti i tng bean s c s dng trong trang JSP scope: l mt trong cc phm vi nh application, session, page, request ( cp trong phn sau) typeSpec: c th l mt trong cc khai bo sau o class=className o class=className type=typeName o beanName=beanName type=typeName o type=typeName b. jsp:setProperty Gn gi tr cho thuc tnh ca bean. C php options: c th l mt trong cc khai bo sau o property=propertyName o property=propertyName param=paramName o property=propertyName value={ | String} c. jsp:getProperty Ly gi tr ca thuc tnh bean. C php 2.2. Phng php chuyn kiu t ng ca JSP vi JavaBeans Cc thuc tnh ca mt thnh phn JSP khng gii hn gi tr chui. V cc gi tr thuc tnh c ly thng qua th s c chuyn i thnh kiu chui. Tuy nhin cc phng thc getXXX trong bean khng cn tr v kiu String v JSP Container t ng tin hnh vic chuyn kiu. i vi cc kiu d liu c bn ca Java, s chuyn i c th hin trong bng sau: Property Type Conversion to String boolean java.lang.Boolean.toString(boolean) byte java.lang.Byte.toString(byte) char java.lang.Character.toString(char) int java.lang.Integer.toString(int) float java.lang.Float.toString(float) 60. Lp trnh JSP, Servlet Trang 60 / 164 Chng IV: Javabeans trong JSP double java.lang.Double.toString(double) long java.lang.Long.toString(long) Tng t, tt c cc phng thc setter ca thuc tnh c truy cp vi th s c t ng chuyn t String sang mt kiu gc thch hp bi JSP Container. S chuyn i ny c th hin trong bng sau: Property Type Conversion to String boolean or Boolean Java.lang.Boolean.valueOf(String) byte or Byte Java.lang.Byte.valueOf(String) char or Character Java.lang.Character.valueOf(String) int or Integer Java.lang.Integer.valueOf(String) float or Float Java.lang.Float.valueOf(String) double or Double Java.lang.Double.valueOf(String) long or Long Java.lang.Long.valueOf(String) 3. Introspector trong JSP a. Introspector l g ? Introspector l b phn phn tch h tr Java trong vic tm ra tng phng thc c p dng cho tng thuc tnh v tnh hung c th t on m chng trnh. public void setAge(int iAge) public int getAge() Da vo , Java s bit chng trnh mun to ra thuc tnh age kiu int. b. Thit k cc phng thc mu dng cho thuc tnh i vi thuc tnh mang gi tr n, hai phng thc getter/setter phi c khai bo nh sau public void setAttributeName (AttributeType param) public AttributeType getAttributeName() i vi thuc tnh kiu boolean, phng thc getter/setter s dng tip u ng is thay cho get. public void setAttributeName (boolean param) public boolean isAttributeName() 61. Lp trnh JSP, Servlet Trang 61 / 164 Chng IV: Javabeans trong JSP i vi thuc tnh l kiu tp hp, ta c th s dng c 2 cp khai bo sau public void setAttributeName (AttributeType param) public AttributeType getAttributeName() public void setAttributeName (AttributeType[] param) public AttributeType[] getAttributeName() c. Khai bo cc phng thc tng minh Nu khng mun s dng ngm nh ca Introspector, ta c th khai bo tng minh thng qua vic to lp ph v thc thi BeanInfo Interface. Khi bean c tn l xxx c bin dch th Bean Container s tm n lp c tn l xxxBeanInfo; khi ny cc phng thc c tm thy s c u tin p dng, tri li Introspector s s dng ngm nh. 4. Phm vi hot ng ca JavaBeans 4.1. Application i tng bean vi phm vi ng dng c vng i hot ng cng vi ng dng. i tng ny c gii phng khi mi trng thc thi to mi i tng ServletContext. i tng beans vi phm vi ng dng c s dng khi cn chia s thng tin gia JSP v servlet trong sut vng i ca ng dng. Phm vi ng dng c thng dch vi hng s PageContext.APPLICATION_SCOPE i tng c gn vi javax.servlet.ServletContext y l phm vi hot ng cao nht. i tng ny c lu trong i tng ServletContext s dng phng thc setAttribute(String key, Object value) Cc trnh duyt khch truy cp cng ti mt i tng trong vng i ng dng V d: Trang th nht . . . 62. Lp trnh JSP, Servlet Trang 62 / 164 Chng IV: Javabeans trong JSP An Application bean: The First Example The current count for the counter bean is: . . . Trang th hai . . . An Application bean: The Second Example The current count for the counter bean is: . . . C hai trang ny s dng i tng bean Counter ging nhau. Mi trang s tng gi tr m ln 1. Vic chia s ny s kt thc khi JSP engine b ngng hot ng. 4.2. Session Cc bean c phm vi session c truy cp trong trang thuc cng session . Bean khng th to ra c khi trang s dng thuc tnh session=false. Tham chiu ti bean c phm vi session c lu tr trong i tng session. Phm vi session c thng dch vi hng PageContext.SESSION_SCOPE. i tng bean ny c gn vo i tng javax.servlet.jsp.PageContext. Sever s dng phng thc ca i tng HttpSession l setAttribute(String key, Object value) lu tr gi tr. Cc i tng bean l khc nhau vi mi session. V d: Trang th nht . . . 63. Lp trnh JSP, Servlet Trang 63 / 164 Chng IV: Javabeans trong JSP A Session bean: The First Example The current count for the counter bean is: . . . Trang th hai . . . A Session bean: The Second Example The current count for the counter bean is: . . . Khi bn duyt trang JSP th nht ln u, bin m l 1. Khi ban duyt trang JSP th 2 vi cng trnh duyt web, bin m s tng gi tr hin c ca trang th nht ln 1 n v. Nu mt th hin mi ca trnh duyt web c m, bin m hin ti s c thit lp li (phin mi). 4.3. Pages Bean s trong trang hin hnh. Tham chiu ti bean s gii phng sau khi i tng response c gi cho client. Cc bean vi phm vi trang c lu tr trong pageContext. c bin dch bng: PageContext.PAGE_SCOPE Sau khi kt thc hm Servlet.service() hin hnh th cc bean b gii phng. o Bean c to trong hm service(). o Bean tn ti cho mi client. V d: . . . The current count for the counter bean is: . . . 4.4. Request Th hin bean s tn ti cng vi i tng request. Tham chiu ti i tng ny c gii phng khi x l Request xong. i tng ny c lu tr trong i tng request. Phm vi request c thng dch nh l PageContext.REQUEST_SCOPE i tng ny c gn vi javax.servlet.jsp.PageContext Tham chiu ti i tng sng cng vi i tng HttpRequest, thm ch khi i tng c gi sang mt trang khc. c lu trong i tng Request ging nh dng phng thc setAttribute(String key, Object value). V d: Trang th nht . . . . . . Trang th hai . . . The current count for the 65. Lp trnh JSP, Servlet Trang 65 / 164 Chng IV: Javabeans trong JSP counter bean is: . . . Tm tt bi hc JavaBeans hay Bean, l mt lp Java n gin m tn ca cc thnh phn c t theo qui c ca cc c t c php JavaBeans. Ging nh bt k lp Java no, cc th hin ca bean n thun l cc i tng Java. Ta c th s dng trc tip qua m Java tham chiu ti i tng, phng thc ca bean hoc c th s dng Scriptlet. : Khai bo cho php ti bean vi tn ch nh v thit lp phm vi s dng vo trang JSP. : Gn gi tr cho thuc tnh ca bean : Ly gi tr ca thuc tnh bean Cc gi tr thuc tnh c ly thng qua th s c chuyn i thnh kiu chui. Tuy nhin cc phng thc getXXX trong bean khng cn tr v kiu String v JSP Container t ng tin hnh vic chuyn kiu. Introspector l b phn phn tch h tr Java trong vic tm ra tng phng thc c p dng cho tng thuc tnh v tnh hung c th t on m chng trnh. Bean c th c cc phm vi hot ng sau: Application, Session, Page v Request. Bi tp 1. Khai bo lp JavaBeans mi t tn StudentBean: Vi cc thuc tnh sau: FirstName, LastName, BirthDate, Identity, Email, Gender. Khai bo cc hm getter, setter tng ng. To mi trang sample1.jsp, khai bo s dng i tng StudentBean trn c phm vi Session. V thit lp gi tr ban u cho cc thuc tnh ca i tng bean. To mi trang sample2.jsp, khai bo s dng i tng StudentBean trn c phm vi Session (id cng tn) hin th gi tr ca cc thuc tnh i tng bean. To mi trang sample3.jsp, khai bo s dng i tng StudentBean trn c phm vi Session (id cng tn) v cp nht li gi tr ca cc thuc tnh i tng bean. M li trang sample2.jsp xem kt qu sau khi cp nht. 66. Lp trnh JSP, Servlet Trang 66 / 164 Chng IV: Javabeans trong JSP 2. Khai bo lp JavaBeans mi t tn ClassBean: Vi cc thuc tnh sau: Name, Quantity v khai bo cc hm getter, setter tng ng. To mi trang sample4.jsp, khai bo s dng i tng ClassBean trn c phm vi Request. V thit lp gi tr ban u cho cc thuc tnh ca i tng bean. To mi trang sample5.jsp, khai bo s dng i tng ClassBean trn c phm vi Request (id cng tn) hin th gi tr ca cc thuc tnh i tng bean. Quan st kt qu hin th trn trang sample5.jsp v so snh vi kt qu trn trang sample2.jsp. 67. Lp trnh JSP, Servlet Trang 67 / 164 Chng V: X l nhp-xut trong JSP CHNG V: X l nhp-xut trong JSP 1. Thao tc vi d liu t i tng Request HTML nh ngha sn tp hp cc thnh phn (th) biu din cc trng thng tin trong form cho php ngi dng nhp ni dung hoc la chn t cc gi tr t sn. Ta cng xem v d ph bin s dng form trong HTML nh sau User Info Entry Form Name: Birth Date: Mc tiu: Sau khi kt thc chng ny, bn c th: Nm bt cch tng tc vi i tng Request trong JSP thng qua JSTL v JavaBeans Hiu v cch kim tra xc thc d liu thng qua JSTL v JavaBeans 68. Lp trnh JSP, Servlet Trang 68 / 164 Chng V: X l nhp-xut trong JSP (Use format yyyy-mm-dd) Email Address: (Use format [email protected]) Gender: Male
Female Lucky number: (A number between 1 and 100) Favorite Foods: Pizza
Pasta
Chinese 69. Lp trnh JSP, Servlet Trang 69 / 164 Chng V: X l nhp-xut trong JSP Form l v d cho mt trang cho ngi dng ng k nhn tin tc mi trn website. Form yu cu ngi dng nhp vo cc thng tin nh ngy sinh, gii tnh, mn n yu thch, cng vi h tn v email ng k. Th bao ngoi cng, thuc tnh action cha URI ti ti nguyn server (process.jsp - x l yu cu t client), thuc tnh method khai bo rng client s dng phng thc HTTP POST yu cu. Trong th t cc khai bo cho php ngi dng nhp v la chn cc thng tin ca mnh. hon tt, ngi dng s click vo nt Submit gi cc thng tin va nhp ln server thng qua i tng Request. i tng Request s cha cc cp khai bo attribute-value, vi attribute l cc thuc tnh name ca cc th HTML cho php ngi dng nhp, la chn trn v value chnh l cc gi tr c ngi dng nhp, la chn. chnh l cch m trnh duyt x l vi d liu trong th hon tt vic gi d liu ngi dng cn trao i ln server. tm hiu k hn v i tng Request, ti liu s cp chng sau. Trong chng ny, ta s cng xem vic x l nhng d liu ny trn server thng qua JSTL tin hnh c th ra sao. 1.1. S dng JSTL ly d liu t i tng Request Trong v d, ta c s dng th vin bn ngoi http://java.sun.com/jsp/jstl/core, i vi phin bn JSP 1.2 tr i c s thay i nh vi vic gi th vin. Ta s cn download th vin JSTL 1.2 ti http://download.java.net/maven/1/jstl/jars/jstl-1.2.jar v include vo project c th s dng nh sau 70. Lp trnh JSP, Servlet Trang 70 / 164 Chng V: X l nhp-xut trong JSP Chn chut phi vo mc Libraries v chn Add JAR/Folder Tm ti ng dn cha file va download, v add vo project Thay i uri="http://java.sun.com/jstl/core" bng cch thm jsp vo nh sau uri="http://java.sun.com/jsp/jstl/core" Vy mi th sn sng, ta s xem xt v d tng t, to trang input_jstl.jsp v khai bo vi vic x l d liu trao i client-server s c m nhim bi chnh n. User Info Entry Form Please enter information about an employee below

Name:
Birth Date: 71. Lp trnh JSP, Servlet Trang 71 / 164 Chng V: X l nhp-xut trong JSP
(Use format yyyy-mm-dd)
Email Address:
(Use format [email protected])
Gender:
Male Female
Lucky number:
(A number between 1 and 100)
Favorite Foods:
Pizza Pasta 72. Lp trnh JSP, Servlet Trang 72 / 164 Chng V: X l nhp-xut trong JSP Chinese
Send Data
Name: Birth Date: Email Address: Gender: Lucky Number: Favorite Food:   73. Lp trnh JSP, Servlet Trang 73 / 164 Chng V: X l nhp-xut trong JSP

Chy ng dng trn trnh duyt, ta s thy hin th cc biu mu cho php ngi dng nhp v la chn cc thng tin. Sau khi n Submit, ton b thng tin ngi dng va nhp s c hin th cui trang. By gi, ta s xem xt k hn vic x l thng tin Request gi ln: a. Trong v d trn, ta s dng cc JSTL action hin th thng tin ngi dng nh h tn, ngy sinh, email, gii tnh. Thng qua vic s dng khai bo Expression Language (EL) ly d liu c trong Request. Name: Trong param l bin ngm nh kiu tp hp (java.util.Map) truy xut tt c cc tham s c gi ln t trong i tng Request. Vic ly ra cc gi tr cc thuc tnh 74. Lp trnh JSP, Servlet Trang 74 / 164 Chng V: X l nhp-xut trong JSP trong bin param thc hin theo cch thng thng truy cp mt trng ca i tng trong Java. Bng cc thuc tnh ca action Tn thuc tnh Kiu d liu Thuc tnh M t value any type bt buc Gi tr phn hi escapeXml boolean ty chn Nu server phn hi d liu c k t c bit cn phi c chuyn i (trnh cc li injection) s thit lp l true. Mc nh ca trng ny l true. default any type ty chn Gi tr c thay th khi trng value c gi tr l null b. Trong v d trn, khi ngi dng la chn nhiu checkbox (cng tn cng gi tr thuc tnh name) th trong Request s cha nhiu tham s cng tn; hoc nu ngi dng khng la chn checkbox no th trong Request s khng cha tham s . hin th cc la chn ca ngi dng, ta s ly tt c cc gi tr ca tham s v phn tch chng ra. Trong JSTL, ta c th s dng th thng qua bin paramValues x l vn ny. Bng cc thuc tnh ca th Tn thuc tnh Kiu d liu Thuc tnh M t items java.util.Collection, java.util.Iterator, java.util.Enumeration, java.util.Map, String, Object[] hoc mng cc kiu d liu nguyn thy ty chn L tp hp cc gi tr c ly qua cc vng lp. Nu gi tr l null s khng c vng lp no c thc thi. Nu khng c thuc tnh ny, cc thuc tnh begin, end phi c thit lp. var String ty chn Tn bin gi gi tr hin ti ca vng lp varStatus String ty chn Tn bin gi gi tr ca i tng LoopTagStatus 75. Lp trnh JSP, Servlet Trang 75 / 164 Chng V: X l nhp-xut trong JSP begin int ty chn Phn t u tin (tnh t 0) end int ty chn Phn t cui cng (tnh t 0) step int ty chn Bc nhy ch s, sau mi vng lp Bin ngm nh paramValues l tp hp cc gi tr ca tham s gi ti trang x l. Vi mi tham s, cc gi tr s c biu din dng mng (khng phi gi tr n). Kt hp vi th , ta c th d dng duyt qua tp cc gi tr ny. Favorite Food:   1.2. Truy cp d liu khc ca i tng Request Cc tham s nm trong phn Header c th c truy cp thng qua i tng header v bin headerValues. Cc tham s nm trong phn Cookies c th c truy cp thng qua bin cookie. Cc tham s khc c th c truy cp bng cch s dng EL ti i tng request ngm nh l thuc tnh ca bin pageContext. Bng di y cho ta bit cch thao tc vi d liu trong i tng request Tn thuc tnh Kiu d liu Access M t authType String Read Tn phng thc xc thc bo v request characterEncoding String Read nh dng m ha k t dng trong request contentLength int Read Kch thc phn body contentType String Read Kiu MIME d liu trong phn body contextPath String Read ng dn yu cu cookies javax.servlet.http.Cookie[] Read Cookies c trong request locale java.util.Locale Read Ngn ng xut ca client locales java.util.Enumeration Read Danh sch th t ngn ng 76. Lp trnh JSP, Servlet Trang 76 / 164 Chng V: X l nhp-xut trong JSP xut method String Read Phng thc vd: GET, POST protocol String Read Phin bn giao thc vd: HTTP 1.1 remoteAddr String Read a ch IP client remoteHost String Read a ch chuyn tip t client remoteUser String Read Tn ngi dng to request i vi cc trang yu cu bo v hoc null nu tri li requestURI String Read URI yu cu vd: /page.jsp requestURL StringBuffer Read URL yu cu vd: http://server/app/page.jsp scheme String Read vd: http, https servletPath String Read ng dn tng i ca request vd: /page.jsp serverName String Read Tn server mun ti serverPort int Read Port ca server secure boolean Read Nu c s dng SSL l true userPrincipal java.security.Principal Read Ch s dng i vi trang c bo v Ct Access c 2 gi tr l Read-Write c ngha l thuc tnh c th c gi tr hoc thit lp gi tr. V d to mi trang reqinfo.jsp hin th cc thng tin i tng Request Request Info 77. Lp trnh JSP, Servlet Trang 77 / 164 Chng V: X l nhp-xut trong JSP The following information was received:

  • Request Method:
  • Request Protocol:
  • Context Path:
  • Servlet Path:
  • Request URI:
  • Request URL:
  • Server Name:
  • Server Port:
  • Remote Address:
  • Remote Host:
  • Secure:
  • Cookies:
      :
  • Headers:
      :
         78. Lp trnh JSP, Servlet Trang 78 / 164 Chng V: X l nhp-xut trong JSP

Kt qu ta nhn c nh sau 79. Lp trnh JSP, Servlet Trang 79 / 164 Chng V: X l nhp-xut trong JSP 1.3. S dng Javabeans lu gi gi tr i tng Request Trong phn trc, ta bit kh nng lu gi gi tr sinh bi server vo trong cc bean v hin th chng pha trnh duyt khch. Bn cnh , bean cn c kh nng lu gi cc gi tr do ngi dng nhp vo t trnh khch gi ln. lm r hn, ta s khai bo bean vn.edu.designglobal.ch5.UserInfoBean vi cc thnh phn c m t trong bng sau Tn thuc tnh Kiu d liu Access M t userName String Read- write H tn ngi dng birthDate String Read- write Ngy sinh theo nh dng yyyy- mm-dd emailAddr String Read- write Email theo nh dng [email protected] gender String Read- write Gii tnh M hoc F luckyNumber String Read- write S ngu nhin (t 1-100) food String[] Read- write Mn n yu thch Ta s dng li v d trn nhng thay v s dng JSTL ta s s dng bean nh sau ... Name: Birth Date: 80. Lp trnh JSP, Servlet Trang 80 / 164 Chng V: X l nhp-xut trong JSP Email Address: Gender: Lucky Number: Favorite Food:   Action to 1 bean v gn tn cho bean thng qua thuc tnh id, thuc tnh class xc nh chnh xc lp khai bo cho bean. Trong thn ca action , ta s dng khai bo cho php thit lp cc gi tr cho bean t cc tham s i tng Request. Khai bo property=* cho php Bean Container t ng gn cc thuc tnh ca i tng UserInfoBean vi cc gi tr tham s ph hp. Bn cnh , ta cng c cch khai bo khc vi thng qua thit lp gi tr cho thuc tnh param. Khi , Bean Container s da vo tham s param thit lp gi tr thuc tnh ca bean vi tham s Request tng ng someOtherParam nh sau 81. Lp trnh JSP, Servlet Trang 81 / 164 Chng V: X l nhp-xut trong JSP Ta vn s dng action hin th cc gi tr phn hi ti trnh khch. Khc bit y, EL s s dng bean ly ra gi tr thay v ly gi tr t bin param Name:
EL s truy cp ti i tng userInfo v c gi tr thuc tnh userName c lu gi theo cch thng thng. i vi action cng ging vy Favorite Food:   2. Kim tra xc thc d liu u vo (Input) C mt iu chc chn rng, d liu ngi dng gi ln nhiu khi khng ng nh dng ta yu cu. Nn, ta cn phi kim tra tnh ng n ca d liu ngi dng trc khi chng c gi i vd: nh dng ngy thng yu cu mm-dd-yy, trong khi ngi dng li nhp yyyy-mm-dd, Cc trng thng tin t trong thnh phn Form cn phi c kim tra tnh ng n: tn ngi dng phi c nhp, ngy sinh hp l, email phi ng nh dng, gii tnh phi ng yu cu, Cc d liu n gin, ta c th s dng cc action ca JSTL. Tuy nhin, nhng d liu phc tp hn th bean l s la chn tt. Ta s xem xt c 2 phng n ngay sau y. 2.1. S dng JSTL Bn cnh mc ich kim tra tnh ng n, ta cng s h tr ngi dng nhp ng nh dng thng tin thng qua vic thit lp sn gi tr mu trong cc trng thng tin. Da vo ngi dng s bit khi mnh nhp sai, ng thi, thng bo li s hin th ngay trn trng thng tin b li, vic ny s lm form ca ta thn thin hn vi ngi dng. Ta to trang validate_jstl.jsp kim tra thng tin h tn ngi dng nh sau User Info Entry Form 82. Lp trnh JSP, Servlet Trang 82 / 164 Chng V: X l nhp-xut trong JSP

Name:
Please enter your Name
Trong v d trn Ta khai bo thm thnh phn input kiu hidden, trnh duyt khng hin th thng tin nhng vn gi gi tr ln nh l tham s ca i tng Request. Ta s dng trng hidden ny s ch hin th thng tin khi ngi dng nhp sai nh dng yu cu. Action JSTL s dng EL kim tra thng tin submitted, gi tr s l true khi tham s submitted trong i tng Request l true v tham s userName l rng. o Khi ln u trang c np, th tham s submitted khng c nn EL s tr v false, khi body ca s b b qua o Sau khi form c ngi dng submit th tham s submitted s l true v EL s tr v gi tr true khi trng h tn ngi dng l rng v phn body ca s c x l v a thng bo li ra mn hnh. Bng cc thuc tnh ca action Tn thuc tnh Kiu d liu Thuc tnh M t test boolean bt buc Biu thc kiu boolean var String ty chn Tn bin lu gi gi tr kt qu Boolean scope String ty chn Phm vi ca bin, mc inh l page 83. Lp trnh JSP, Servlet Trang 83 / 164 Chng V: X l nhp-xut trong JSP Ch vi khai bo empty trong EL, s kim tra trng thng tin l c null v chui rng ; i vi java.util.List v java.util.Map th empty kim tra empty array. Khai bo trn s c vit y nh sau Trong biu thc EL, ta c th s dng cc khai bo tng ng sau &&, ||, ! thay bng and, or, not ==, !=, = thay bng eq, ne, lt, le, gt, ge Tip tc vi v d trn, ta s kim tra xc thc i vi ton b cc trng thng tin cn li nh sau
Birth Date:
Please enter a valid Birth Date (Use format yyyy-mm-dd)
Email Address:
Please enter a valid Email Address (Use format [email protected])
i vi trng thng tin gii tnh, kim tra gi tr ngi dng nhp vo hoc M (male) hoc F (female), ta s khai bo nh sau
84. Lp trnh JSP, Servlet Trang 84 / 164 Chng V: X l nhp-xut trong JSP Gender:
Male Female Male Female Please select a valid Gender
Khi form c submit, ta kim tra trn tham s gender ca i tng Request vi 2 gi tr l M hoc F. Thnh phn gender l kiu radio button, ta nn thit lp sn la chn cho ngi dng thng qua s dng action . Action ny khng c thuc tnh v ch c nhim v nhm v iu khin cc thnh phn ging nhau. Action v ch kt hp vi . Khai bo ny tng t khi lnh iu kin switch-case. Trong phn body ca s m bo cho vic cu kim tra iu kin u tin s qua ln lt cc khai bo , khi iu kin khai bo trong thuc tnh test s c kim tra. Nu true th phn thn ca s c thc thi, tri li false th phn thn ca s c thc thi. kim tra ta c th s dng URL trn trnh duyt http://localhost:8084/pages/ch5/validate_jstl.jsp?submitted=true&gender=x Khi ny gi tr tham s gender s khng khp v thng bo li s c hin th. 85. Lp trnh JSP, Servlet Trang 85 / 164 Chng V: X l nhp-xut trong JSP Tip theo, ta s kim tra cho trng thng tin Lucky Number nm trong di 1-100
Lucky number:
Please enter a Lucky Number between 1 and 100 (A number between 1 and 100)
y, ta ch cn kim tra gi tr tham s luckyNumber trong i tng Request, nu khng khp s hin th thng bo li. Tip theo, ta s thc hin vic kim tra phc tp nht trong v d ny. Trng thng tin food phi nhn cc gi tr trong tp hp z (Pizza), p (Pasta), c (Chinese).
Favorite Foods:
86. Lp trnh JSP, Servlet Trang 86 / 164 Chng V: X l nhp-xut trong JSP Pizza Pasta Chinese Please select only valid Favorite Foods
Ta s dng vng lp kim tra tt c cc trng thng tin c ngi dng submit thng qua bin paramValues. Gi tr tham s food s c kim tra vi cc gi tr z, p, c thng qua cc action , , . Nu iu kin kim tra khng khp vi mt trong cc gi tr z, p, c n s khng vo nhnh no m s vo nhnh . Ti , bin invalidSelectionvariable s c thit lp gi tr l true thng qua action . Thuc tnh ca action xem trong bng sau Tn thuc tnh Kiu d liu Thuc tnh M t value any type bt buc Thit lp gi tr var String ty chn Tn bin cn thit lp gi tr. Nu khng khai bo, thuc tnh target v property phi khai bo scope String ty chn Phm vi s dng, mc nh l phm vi page target JavaBeans object hoc java.util.Map ty chn i tng bean hoc Map, c thuc tnh trong property cn thit lp gi tr property String ty chn Tn thuc tnh ca i tng trong target c thit lp gi tr Nu bin invalidSelectionvariable l true, thng bo li s c hin th nh sau 87. Lp trnh JSP, Servlet Trang 87 / 164 Chng V: X l nhp-xut trong JSP 2.2. S dng Javabeans Phn hi t server khi ngi dng nhp sai cc gi tr nh sau Do bean c thc thi bng cc on m Java v c th s dng cc th vin Java API cung cp, nn bean l la chn tuyt vi thc thi vic xc thc d liu phc tp. Lp UserInfoBean c s dng khai bo cc thuc tnh kim tra hp l d liu, c m t trong bng sau. Tham kho on m thc thi lp UserInfoBean phn mc lc. Tn thuc tnh Kiu d liu Access M t userNameValid boolean Read Kim tra tn ngi dng hp l ? birthDateValid boolean Read Kim tra ngy sinh hp l ? emailAddrValid boolean Read Kim tra email hp l ? 88. Lp trnh JSP, Servlet Trang 88 / 164 Chng V: X l nhp-xut trong JSP genderValid boolean Read Kim tra gii tnh hp l ? luckyNumberValid boolean Read Kim tra s lucky hp l ? foodValid boolean Read Kim tra mn n yu thch hp l ? valid boolean Read Kim tra tt c thuc tnh hp l ? pizzaSelected boolean Read C phi l thnh phn pizza ? pastaSelected boolean Read C phi l thnh phn pasta ? chineseSelected boolean Read C phi l thnh phn chinese ? Tt c cc thuc tnh u ch c th c gi tr, v bean s t ng thit lp cc gi tr ny da trn gi tr ngi dng gi ln. Ta cng xem cch bean x l n gin hn JSTL nh th no qua v d validate_bean.jsp sau User Info Entry Form
Name:
89. Lp trnh JSP, Servlet Trang 89 / 164 Chng V: X l nhp-xut trong JSP Please enter your Name
Ging vi v d trc y, ta s dng cc action , ct gi cc gi tr tham s ca i tng Request truyn ln. V khi action ny c khai bo u tin trc khi cc khai bo s dng ti cc bin kim tra d liu. Khc vi v d trc, ta khng kim tra trc tip trn cc trng thng tin ngi dng truyn ln m thay bng cc thuc tnh tng ng ca bean vd: thay v kim tra userName l empty, ta s kim tra userNameValid l false. Nhn qua, ta s thy vic khai bo v s dng bean thay JSTL khng h lm on m chng trnh gn hn, d nhn hn; tuy nhin, sau ny khi cc x l nghip v kim tra xc thc thay i, ta ch cn thay i thc thi trong bean v cc trang JSP s c cp nht tc thi; thay v ta phi vo tng trang chnh sa cc on JSTL. y l li ch trc tin, bean mang li cho chng ta. Tng t vi cc on kim tra xc thc d liu cn li
Birth Date:
Please enter a valid Birth Date (Use format yyyy-mm-dd)
Email Address:
Please enter a valid Email Address 90. Lp trnh JSP, Servlet Trang 90 / 164 Chng V: X l nhp-xut trong JSP (Use format [email protected])
Gender:
Male Female Male Female Please select a valid Gender
Lucky number:
Please enter a Lucky Number between 1 and 100 (A number between 1 and 100)
91. Lp trnh JSP, Servlet Trang 91 / 164 Chng V: X l nhp-xut trong JSP
Favorite Foods:
Pizza Pasta Chinese Please select only valid Favorite Foods
Send Data
Ton b on chng trnh thay v s dng JSTL, ta chuyn qua dng bean. Vic lp trnh cng khng thay i qu nhiu. Qua , ta hiu r hn v li ch khi s dng JSTL cng nh s dng bean trong pht trin ng dng Web vi JSP. 3. nh dng d liu u ra (Output) Khi ngi dng nhp vo k t nhy kp trong trng Name trong file validate_jstl.jsp hoc validate_bean.jsp vd: Nguyen Duc Hoa v submit thng tin. Khi ny, thng tin hin th trn trnh khch s ging thng tin ngi dng nhp, nhng khi View Source ca trang ta s thy nh sau Name: Vy k t nhy kp c thay bi " v vic ny c thc hin bi tun theo chun m cc trnh duyt hin nay yu cu cho vic hin th ni dung cng nh trnh vic Hacker s dng cc th thut tn cng trang web (gi l cross site scripting 92. Lp trnh JSP, Servlet Trang 92 / 164 Chng V: X l nhp-xut trong JSP attack). Bn cnh , ta cn thy nhiu k t c bit khc nh ', ", , v &. Trong mt vi tnh hung t gp, action c th gy ra li v hin th, khi ta c th s dng thuc tnh escapeXml v thit lp gi tr false server gi v ni dung m khng qua chuyn i nh trn. Tm tt bi hc i tng Request s cha cc cp khai bo attribute-value, vi attribute l cc thuc tnh name ca cc th HTML cho php ngi dng nhp, la chn trn v value chnh l cc gi tr c ngi dng nhp, la chn. Trong param l bin ngm nh kiu tp hp (java.util.Map) truy xut tt c cc tham s c gi ln t trong i tng Request. Vic ly ra cc gi tr cc thuc tnh trong bin param thc hin theo cch thng thng truy cp mt trng ca i tng trong Java. Bin ngm nh paramValues l tp hp cc gi tr ca tham s gi ti trang x l. Vi mi tham s, cc gi tr s c biu din dng mng (khng phi gi tr n). Kt hp vi th , ta c th d dng duyt qua tp cc gi tr ny. Cc tham s nm trong phn Header c th c truy cp thng qua i tng header v bin headerValues. Cc tham s nm trong phn Cookies c th c truy cp thng qua bin cookie. Cc tham s khc c th c truy cp bng cch s dng EL ti i tng request ngm nh l thuc tnh ca bin pageContext. Trong phn trc, ta bit kh nng lu gi gi tr sinh bi server vo trong cc bean v hin th chng pha trnh duyt khch. Bn cnh , bean cn c kh nng lu gi cc gi tr do ngi dng nhp vo t trnh khch gi ln. C mt iu chc chn rng, d liu ngi dng gi ln nhiu khi khng ng nh dng ta yu cu. Nn, ta cn phi kim tra tnh ng n ca d liu ngi dng trc khi chng c gi i vd: nh dng ngy thng yu cu mm-dd-yy, trong khi ngi dng li nhp yyyy-mm-dd, Cc d liu n gin, ta c th s dng cc action ca JSTL. Tuy nhin, nhng d liu phc tp hn th bean l s la chn tt. Bi tp 1. Khai bo i tng JavaBeans v t tn ClassBean v StudentBean. 93. Lp trnh JSP, Servlet Trang 93 / 164 Chng V: X l nhp-xut trong JSP Khai bo cc thuc tnh lp StudentBean gm: FirstName, LastName, BirthDate, Email, Gender v cc phng thc getter, setter tng ng. To mi trang get_student.jsp hin th thng tin sinh vin ca i tng bean c phm vi Request (s dng action ). To mi trang register_student.jsp, c form cha cc trng Textbox cho php ngi dng nhp thng tin Student v n Submit cp nht thng tin sinh vin vo bean. M li trang get_student.jsp xem kt qu sau khi cp nht Student. 2. M rng v d trn thm tnh nng xc thc d liu u vo s dng JSTL nh sau: Form ng k sinh vin s chuyn hng ti trang validate_jstl.jsp xc thc d liu: b trng thng tin, email khng hp l, ngy thng khng hp l, Nu khng hp l s chuyn hng ti trang register_student.jsp hin th thng tin khng hp l; nu hp l s chuyn hng ti trang get_student.jsp hin th thng tin sinh vin mi cp nht. 3. M rng v d trn thm tnh nng xc thc d liu u vo s dng Javabeans nh sau: Form ng k sinh vin s chuyn hng ti trang validate_bean.jsp xc thc d liu: b trng thng tin, email khng hp l, ngy thng khng hp l, Nu khng hp l s chuyn hng ti trang register_student.jsp hin th thng tin khng hp l; nu hp l s chuyn hng ti trang get _student.jsp hin th thng tin sinh vin mi cp nht. 94. Lp trnh JSP, Servlet Trang 94 / 164 Chng VI: Thao tc vi i tng Page-Request-Session CHNG VI: Chia s d liu gia cc trang JSP, Request v gia cc ngi dng Cc ng dng Web thc t gm rt nhiu trang, cng nhu cu chia s chung thng tin, ti nguyn. Khi nhiu trang cng x l mt Request vd: 1 trang x l d liu ngi dng yu cu, trang khc th hin th thng tin, ), vy gia cc trang phi c s trao i d liu vi nhau. Trong chng ny, ta s xem v cc thc qun l phm vi (scope) chia s d liu trong JSP. V ta cng se xem cch nhiu trang cng x l yu cu gip ng dng d dng bo tr v m rng; cng nh cch s dng cc action iu khin vic trao i d liu gia cc trang khc nhau. 1. Trao i iu khin v d liu gia cc trang Nh ta tm hiu v cc m hnh MVC (Model-View-Control) trong cng ngh JSP, Servlet. Trong chng ny, ta s ch s dng JSP cho c chc nng View v Control; Model th do Bean hoc JSP m nhn. y khng phi cch tt nht, nhng s gip ta tp trung hn vo chc nng ca JSP thay v vic lp trnh Java. Trong chng ny, ta s xy dng ng dng cho php qun l thng tin ngi dng (UserInfo). M hnh n gin nh sau Trang hin th thng tin, cho php ngi dng nhp vo (tng Presentation) Trang kim tra xc thc d liu ngi dng (x l request v logic nghip v) Trang hin th kt qu (tng Presentation) Mc tiu: Sau khi kt thc chng ny, bn c th: Nm bt cch chuyn i iu khin v trao i d liu gia cc trang JSP Nm bt cch chia s d liu gia cc Session Nm bt cch s dng d liu chung trong mi ng dng Web vi JSP 95. Lp trnh JSP, Servlet Trang 95 / 164 Chng VI: Thao tc vi i tng Page-Request-Session Trang userinfoinput.jsp hin th thng tin, cho php ngi dng nhp vo. Form sau khi submit s c chuyn ti trang userinfovalidate.jsp kim tra xc thc d liu. Trang ny x l d liu gi ln thng qua vic s dng UserInfoBean v chuyn ti trang userinfoinput.jsp (khi d liu l khng hp l) hoc tp trang userinfovalid.jsp (khi d liu l hp l). Nu hp l, trang userinfovalid.jsp s hin th thng bo thank you. UserInfoBean s ng vai tr Model, userinfovalidate.jsp ng vai tr Control v userinfoinput.jsp, userinfovalid.jsp ng vai tr View. Khi s dng nhiu trang JSP ng vai tr Control, View ngha l c nhiu trang cng x l yu cu, qua ta thc hin cc ni dung sau Chuyn quyn iu khin t mt trang JSP ti trang JSP khc Trao i d liu t mt trang JSP ti trang JSP khc 1.1. Chuyn quyn iu khin t mt trang JSP ti trang JSP khc chuyn t trang userinfovalidate.jsp ti trang userinfovalid.jsp hoc trang userinfoinput.jsp da trn d liu ngi dng nhp vo, JSP s dng action . Bng sau m t cc thuc tnh ca action 96. Lp trnh JSP, Servlet Trang 96 / 164 Chng VI: Thao tc vi i tng Page-Request-Session Tn thuc tnh Kiu d liu Thuc tnh M t page String bt buc Trang mun chuyn ti Action s dng x l ca trang hin ti bt u x l trang chuyn tip xc nh bi thuc tnh page (gi l target page) v khng quay li trang trc . Trang target c th truy cp ti tt c thng tin request, gm tt c thuc tnh ca i tng Request. Ngoi ra, ta c th thm cc thuc tnh mi vo i tng Request trc khi chuyn sang trang target, nh khai bo . Bng khai bo cc thuc tnh cho Tn thuc tnh Kiu d liu Thuc tnh M t name String bt buc Tn tham s value String bt buc Gi tr tham s Nu tham s mi c thm vo i tng Request tn ti trc th gi tr ca n s c thm vo phn u ca danh sch cc gi tr. Ch , ta s khng c php s dng EL i vi thuc tnh page ca v thuc tnh value ca . Thuc tnh page l v tr tng i vi trang hin ti nu gi tr khng bt u bi /. Khi ny, n cng c gi l page-relative path. Nu trang target cng th mc vi trang gc th page ch cn khai bo tn trang l Nu trang target khc th mc vi trang gc th page c th khai bo nh sau: ../foo/bar.jsp hoc foo/bar.jsp Nu page khai bo bt u vi /, n s c hiu l th mc gc ca ng dng Web hoc gi l context-relative path V d: nu th mc gc ca ng dng l C:Tomcatwebappsmyapp v nu trang hin ti c ng dn l C:Tomcatwebappsmyappregistrationuserinfo khi page= bar.jsp tng ng C:Tomcatwebappsmyappregistrationuserinfobar.jsp 97. Lp trnh JSP, Servlet Trang 97 / 164 Chng VI: Thao tc vi i tng Page-Request-Session page = ../foo/bar.jsp tng ng C:Tomcatwebappsmyappregistrationfoobar.jsp page = /foo/bar.jsp tng ng C:Tomcatwebappsmyappfoobar.jsp 1.2. Trao i d liu t mt trang JSP ti trang JSP khc JSP cng cung cp phm vi hot ng khc cho vic chia s d liu gia cc trang, cc request v ngi dng. Phm vi nh ngha thi gian sn sng, v khi no sn sng ch cho 1 ngi dng hoc c ng dng. Cc phm vi bao gm: application, session, request, page. Phm vi mc nh cho cc object l page (tc l ch sn sng truy cp i vi chnh trang ). Phm vi request cho bit object sn sng truy cp i vi cc trang trong cng mt ln x l request. Phm vi session tc l object sn sng truy cp cho tt c cc request trong cng 1 phin lm vic ca trnh duyt. Phm vi application l phm vi ln nht, tt c object ny u sn sng truy cp bi ton b ngi dng ca ng dng bt c thi gian no. c t JSP ch cho php tn object l duy nht tn ti trong tt c cc scope, nu c 2 object tn ging nhau th object th 1 s b xa i. 98. Lp trnh JSP, Servlet Trang 98 / 164 Chng VI: Thao tc vi i tng Page-Request-Session Action c thuc tnh scope ch nh phm vi hot ng ca bean. i tng bean c tn ti hoc cha c th s c to mi v t trong ng phm vi ch nh. Bean Container s tm kim bean vi tn c ch nh trong thuc tnh id, nu bean tn ti (to bi khai bo khc trong cng scope) th n khng cn lm g hoc nu khng thy n s to mt th hin mi ca lp ch nh trong thuc tnh class v sn sng truy cp trong phm vi . Nu ch mun thc thi action no trong qu trnh to bean, ta khai bo action trong phn body ca . on m trn thng bo cho JSP s thit lp gi tr cho tt c cc thuc tnh ca bean ngay khi to; nu bean c to t trc th on m trn s khng c thc thi. Truy cp