Upload
duc-hoa
View
742
Download
11
Embed Size (px)
DESCRIPTION
Giáo trình JSP
Citation preview
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
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:
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