TRNG I HC KHOA HC T NHIÊN KHOA CÔNG NGH THÔNG TIN
BÁO CÁO SEMINAR
CHUYÊN JAVA GV. Nguyn Hoàng Anh TÀI
SPRING MVC
Thông tin nhóm: MSSV
H và Tên
in thoi
0841048
Nguyn Thanh Hi
0974513040 097451 3040
0841171
Lê Nguyn Thanh Thân 0907730712 090773 0712
Email
[email protected] [email protected]
TP H Chí Minh, Tháng 11 Nm 2010
Báo Cáo Seminar- Spring MVC Mc Lc
I. T
............................... ............ ........................ ................................ ........ .................... .............................. ............ .. 4 quan v Spri Spring Framework .....................
. Gii Gii thi thi u v Spri Spring Framework ..................... ............................... ............ ....................... ................................ ......... .................... ............................. ......... 4
1
............................... ............ ....................... ................................ ......... .................... ............................. ......... 4 2. Spri Spring vi vi Enterpris nterprisee Java Bean .....................
2.1. Spri Spring .................... .............................. ............ .. ....................... ................................ ......... .................... ............................... ............. ....................... ................................ ......... 4 ............................... ............. ........................ ................................ ........ ..................... .............................. ......... 4 2.2. EJB (E (Enterpris nterprisee Java Bean)....................
2.3. So Sánh Spri Spring và EJB ..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ..... 5 ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................ ................ 6 3. Mc ích ca Spri Spr ing ....................
4. Các phi ph i n bn ca Spri Spr i ng MVC ..................... ............................... ............ ....................... ................................ ......... .................... ........................ .... 6 .............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ .............. .............. 6 5. Yêu cu v k thut ....................
6. Yêu cu cài cà i t..................... ............................... ............ ....................... ................................ ......... .................... ............................... ............. ........................ .......................... 6 ............................... ............ ...................... ................................ .......... .................... ........................... ....... 6 7. Modul Module trong Spri Spring Framework ..................... .............................. ............ .. ........................ ................................ ........ ..................... ............................... ............ ...... 8 7.1. Spri Spring Core Contai Conta iner .................... ............................... ............ ....................... ................................ ......... ................ ................ 8 7.2. Spri Spring Context/ Appli Applicat catiion Context .....................
7.3. Spri Spring AOP(As AOP(Aspect- Ori Oriented) .................... .............................. ............ .. ........................ ................................ ........ .................... ......................... ..... 8 ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ....................... ....................... 8 7.4. Spri Spring DAO .....................
7.5. Spri Spring ORM .................... .............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ...................... ...................... 9 ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. .......... 9 7.6. Spri Spring Web Modul Module ..................... ............................... ............ ....................... ................................ ......... .................... ............................... ............. .. 9 7.7. Spri Spring MVC Framework .....................
8. K in in trúc MVC(Model MVC(Model ± Vi View- Controll Controller) er) .................... ............................... ............. ........................ ................................ ........ ............ ............ 9 ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ....... 9 8.1. Thành phn ca MVC .....................
8.2. Moti Motivati vation for MVC..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ........ 10 .............................. ............ .. ....................... ................................ ......... .................... ............................... ............. .......... 10 8.3. MVC trong Spri Spring ....................
9. C ch ch Vali Validat datiion.................... ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................... ................... 10 ............................... ............ ..... 11 . K in in trúc l u tr d li d li u trên Databas Database(Data access access with JDBC) .....................
10
. . Gii Gii thi thi u v Spri Spring Framework JDBC ..................... ............................... ............ ....................... ................................ ......... ....... 11
10 1
............................... ............. ........................ ................................ ........ ............... ............... 12 .2. K im im soát các k t ni ni c s c s d d li li u ....................
10
. K in in trúc ORM(Object Rel Re lati ations onship Mappi Mapping) ..................... ............................... ............ ....................... ................................ ......... . 12
11
............................... ............ ....................... ................................ ......... .................... .................... 12 . . Gii Gii thi thi u v ORM trong MVC .....................
11 1
.............................. ............ .. ........................ ................................ ........ ..... 13 .2. General General ORM integrati ntegration consi considerat deratiions ons ....................
11
.............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ............ 13 II. Web MVC FrameWork ....................
. Gii Gii thi thi u v Web MVC framework .................... .............................. ............ .. ....................... ................................ ......... ..................... ..................... 14
1
............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................... ................... 14 2. Dis DispatcherServ patcherServllet ....................
3. Impl Implementi ementing Controll Controller erss..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ...... 18 0841048- 0841171
Trang 1
Báo Cáo Seminar- Spring MVC 3.1. nh ngha Controll Contro ller erss v i @Controll @Controller erss .................... .............................. ............ .. ....................... ................................ ......... ...... 19 ................................ ........... ....................... ............................ ..... 19 3.2. Lp bn các yêu cu vi v i @ Reques RequestMappi tMapping .....................
4. Handl Handler Mappi Mapping.................... ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................... ................... 20 5. Res Resolving vi views ews .................... .............................. ............ .. ........................ ................................ ........ ..................... ............................... ............ ...................... ...................... 23 ............................... ............ ....................... .......................... ... 23 5.1. Gi Gii quy quyt các vi view bng gi giao di di n Vi ViewRes ewResolver.....................
5.2. Chai Chaining Vi ViewRes ewResolvers vers .................... ............................... ............. ........................ ................................ ........ ..................... ............................... ............ . 25 ............................... ............ ....................... ................................ ......... .................... ............................... ............. ............. 26 5.3. Chuy Chuyn n vi view .....................
5.4. ContentNegoti ContentNegotiati atingVi ngViewRes ewResolver ..................... ............................... ............ ....................... ................................ ......... ................... ................... 27 ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ....................... ........................... .... 29 6. Usi Using ng local ocales ....................
6.1. AcceptHeaderL AcceptHeaderLocal ocaleRes eResolver ..................... ............................... ............ ...................... ................................ .......... .................... ......................... ..... 29 ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ..... 30 6.2. Cook ieLocal ocaleRes eResolver .....................
6.3. Sessi Session onL Local ocaleRes eResolver..................... ............................... ............ ....................... ................................ ......... .................... ............................... ............. ..... 30 .............................. ............ .. ........................ ................................ ........ ..................... ............................... .......... 30 6.4. Local ocaleChangeInterceptor ....................
7. Usi Using ng themes themes ..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ....................... .......................... ... 31 .............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ....... 31 7.1. Tng Tng quan v themes theme s .................... ............................... ............ ........................ ................................ ........ .................... .............................. ............ .. ........... 31 7.2. nh ngha themes theme s .....................
7.3. Phân gi gii Theme .................... ............................... ............. ........................ ................................ ........ ..................... ............................... ............ .............. .............. 32 ............................... ............ ....................... ................................ ......... ................. ................. 33 8. Spri Spring¶s ng¶s mul multipart(f ileup ileuplload) support .....................
8.1. Gii Gii thi thi u .................... .............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ....................... ......................... .. 33 8.2. S dng Mul MultipartRes partResolver.................... .............................. ............ .. ....................... ................................ ......... .................... ............................. ......... 33 8.3. X lý X lý mt tp ti tin ti ti lên trong mt bi biu u mu ..................... ............................... ............ ....................... ................................ ......... . 34 .............................. ............ .. ....................... ................................ ......... .................... ............................... ............. ............... ............... 35 9. Handli Handling ng excepti exceptions ons ....................
9.1. Handl HandlerE erExcepti xceptionRes onResolver .................... .............................. ............ .. ....................... ................................ ......... .................... ............................. ......... 35 ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ........ 36 9.2. @E @Excepti xceptionHandl onHandler .....................
. Conventi Convention over conf igurati guration support ..................... ............................... ............ ....................... ................................ ......... .............. .............. 37
10
.............................. ............ .. ...................... ...................... 37 . . Controll Controller-Contro er-Controll llerC erCllassNameHand ssNameHandllermappi ermapping....................
10 1
.2. The Model Model Model ModelMap (Model (ModelAndVi AndView) ew) .................... .............................. ............ .. ....................... ................................ ......... ...... 38
10
............................... ............ ....................... ............................... ........ 39 .3. The Vi View ± Reques RequestToVi oViewNameT ewNameTransl ranslator ator .....................
10
. Etag support .................... .............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ....................... ......................... .. 40
11
.............................. ............ .. ........................ ................................ ........ ..................... ............................... ............ .... 41 2. Conf iguri guring Spri Spring MVC ....................
1
2.1. mvc:annotati mvc:annotation-dri on-driven .................... .............................. ............ .. ........................ ................................ ........ ..................... ............................... ............ .. 41
1
.............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ............ 42 2.2. mvc:i mvc:interceptors nterceptors ....................
1
2.3. mvc:vi mvc:view-controll ew-contro ller er.................... .............................. ............ .. ....................... ................................ ......... ..................... ............................... ............ ....... 43
1
............................... ............. ....................... ................................ ......... .................... .............................. ............ .. ................ ................ 43 2.4. mvc:res mvc:resources ources ....................
1
0841048- 0841171
Trang 2
Báo Cáo Seminar- Spring MVC 2.5. mvc:defaul mvc:default-s t-servl ervlet-handl et-handler .................... .............................. ............ .. ....................... ................................ ......... ..................... .......................... ..... 43
1
.............................. ............ .. ....................... ................................ ......... .................... ............................... ............. .......... 44 III. Demo Hell HelloSpr oSpriingMVC ....................
. B B c 1: T o Project .................... .............................. ............ .. ....................... ................................ ......... .................... ............................... ............. ............... ............... 44
1
2. B B c 2: T o Servi Service .................... .............................. ............ .. ....................... ................................ ......... .................... ............................... ............. ............... ............... 46 .............................. ............ .. ....................... ................................ ......... .................... ............................... ............. .......... 46 3. B B c 3: T o Controll Controller er ....................
4. B B c 4: T o Vi View.................... ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................... ................... 48 ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................... ................... 49 5. B B c 5: Cu hình ....................
IV. ng Dng: án Java Lý thuy thuyt: Ch L Ch L nn- Gi Gia Dng .................... ............................... ............. ........................ ........................ 50 ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ........................ ............................... ....... 50 V. Tham Kho .....................
0841048- 0841171
Trang 3
Báo Cáo Seminar- Spring MVC I. Tng Tng quan v Spri Spring Framework thi u v Spri Spring Framework 1. Gii thi - Spr i l t framework ng dng mã ngun m, c gii gii t iu iu vào nm 2002. R od od Johnson ã a ra ý tng này t k inh nghi nghim m làm vi vicc vi vi k in in trúc J2EE. - Johnson ã vit vit cun sách vi vi tiêu tiêu : ³J2EE Devel Develoment oment Withou ithoutt Usi Using EJB´ EJB´ gii g ii thiu iu khái khái nim im trình (li (ligh ghttwei weight ght cont container). Vi Vi lý lun:³EJB un:³EJB thì có gi giá tr ca nó, nhng không phi phi lúc nào cng cn thit và phù hp cho tt c các ng dng.´ dng. ´ - Tuy Spr ing Framework không bt bt bu buc ng i ta phi phi tuân theo mt mt mô hình lp trình(programmi rình(programming model model) c th nào, song nó lan truyn r ng rãi rãi t rong c cng ng nhng ng i vit chng trình dùng Java, nh mt m t hình thc ch y yu thay th cho mô hình Ent Enterpr ise JavaB JavaBean. Theo thit k , b khung hình này gi gi i phóng lp trình viê viênn dùng Java, cho phép h nhi nh iu quyn t do hn, và ng th i cung c c p mt gii pháp tin tin l i, y dn chng bng tài liu, liu, d dàng s dng, phù hp vi nhng thc hành thông dng trong công ngh ngh phn mm. - Bên Bên cnh nhng c trng nn t ng ca Spr ing Framework l Framework là nhng cái cái có th dùng c trong bt bt c mt chng trình ng dng Java nào, r t t nhi nhiu các m r ng và tin tin b trong vi vicc k in in to các trình ng dng dành cho nn t ng mng web (web-based appli applica cati tion) on) d da tr ên nn Java Ent Enterpr ise cng tn ti na. Spr ing Framework ni ni ting ting cng mt mt phn do chí chính c thù k tr ên và c gii g ii thng mii công nhn nh mt m mt nn t ng k in in trúc có tm quan trng trong chi chinn lc k in in to phn mm. 2. Spri Spring vi vi Enterpris nterprisee Java Bean 2.1. Spri Spring - Spr ing không phi phi là mt k thut hut persi persistence nhng nó cho phép tích tích hp vi vi các k thut hut khác. EJB EJB thì tp trung vào k thut hut persi persistence và bây gi gi nó ã c c ng tác vi vi H bernat i bernate, mt mt ORM tt nht nht ngày nay. Nó ang d nh c cng tác vi vi mt k thut hut ORM tt khác là JDO (cung c c p cho Object Object Dat Database). - Trong Spr ing, chúng ta có th s dng Java Bean rút rút tr ích các th mà lúc tr r c ch có th vi EJB EJB. Mc tiêu tiêu chí chính ca Spr ing là n gi gin vic ic phát phát tr in J2EE và testi esting. ng. 2.2. EJB (E ( Enterpris nterprisee Java Bean) - EJB EJB c xut xu t hin in vào 1988 và là mt chun, c t trong th gii Ent Enterpr ise. Mc dù có mt mt s k thut hut Java gn ây, nhng không có k thut hut nào áng k so vi EJB EJB v mc tng các c tính tính ca nó. 0841048- 0841171
Trang 4
Báo Cáo Seminar- Spring MVC - Theo R od Johnson thì EJB không phc tp nhng nó c gng cung c p cách gii quyt cho các vn phc tp. - EJB c phát tr in chính cho các giao dch, i tng c phân phát tr ên máy khác. Nhng mt s enterpr ise project không có mc phc tp và vn s dng EJB và thm chí các ng dng n gin tr nên phc tp. Trong trng hp này thì Spr ing là mt s chn la. - T lúc Spr ing h tr các dch v mc enterpr ise, thì nó tuyên b là mt s la chn khác i vi EJB. - Thun l i ca EJB: o Transaction Management o Declarative Transaction suppor t o Persistence ( CMP & BMP) ity o Declarative Secur i buted Computing (Container managed R PC) o Distr - Spr ing không làm mi th nhng nó h tr nhng k thut tt nht cho mi yêu cu.Thay vì CMP(Circuits Multi-Projects) & BMP, nó h tr mt vài k thut persistence khác nh JDO, Hi berbate và OJB. Các ORM tool này thì có nhiu kh nng cài t hn CMP. n gin coding JDBC, có mt tool là iBatis và Spr ing cng h tr nó. 2.3. So Sánh Spring và EJB - Spr ing s dng Acegi, mt secur ity f ramework mã ngun m và cung c p khai báo secur ity thông qua cu hình Spr ing hoc class metadata, trong khi EJB khai báo secur ity c cu hình thông qua mô t deployment. - Spr ing cung c p proxying cho RM (k thut remoting c bit nh Bur lap) JAXR PC & web-service, trong khi EJB cung c p l i gi phng thc xa c qun lý b i container. - Spr ing có th cung c p khai báo transaction nh EJB. Hn na, Spr ing còn cung c p khai báo th tc roll back cho các phng thc và exception. - EJB thì cng và c gng làm mi th, mt vài công vic tt nhng mt s thì không. Spr ing ch s dng Java Bean và thông qua mt s k thut c bit cung c p nhiu chc nng nh EJB, bng cách tích hp vi mt s k thut open source khác. - Sping cung c p mt vài thun l i hn EJB nh: o Testing d dàng hn - không cn kh i ng EJB container test. ing da vào quy c ca chun Java Bean, nên các lp trình viên d dàng o Spr làm vic vi nó. 0841048- 0841171
Trang 5
Báo Cáo Seminar- Spring MVC Spr ing s dng AOP(Aspect-Or iented Programming), mô hình hu ích b sung vào OOP truyn thng và bo toàn tính nguyên vn ca OOP. o Spr ing uyn chuyn. 3. Mc ích ca Spring - Mc ích ca Spr ing là tr thành mt f ramework ng dng. Các f ramework ph bin khác nh Struts, Tapestry, JSF,...là các f ramework tt cho tng web nhng khi chúng ta s dng các f ramework này, chúng ta phi cung c p thêm f ramework khác gii quyt tng enterpr ise mà tích hp tt vi các f ramework này. Spr ing làm gim bt vn này bng cách cung c p mt f ramework toàn din bao gm: o Core bean container o MVC f ramework ramework o AOP integration f ramework o JDBC integration f ramework. o EJB integration f 4. Các phiên bn ca Spring MVC - Tháng 10/2006: phát hành Spr ing 2.0 - Tháng 11/2007: phát hành Spr ing 2.5 - Hin ti: Spr ing 3.0 - Download: - Document: 5. Yêu cu v k thut - tr in khai ng dng web s dng Spr ing f ramework cn cài t PHP 5.1.0 tr lên - Hiu rõ phng pháp lp trình h ng i tng(OOP) vì ây là mt f ramework c thit k theo phng pháp h ng i tng thun túy. - Hiu rõ v mô hình MVC 6. Yêu cu cài t - Operating System: Windows 7 - NetBeans IDE: 6.9 hoc 6.9.1, phiên bn Java - Java Development K it(JDK) Phiên bn 6 - GlassFish Server Edition ngun m 3.0.2, yêu cu JDK 6 - PHP: 5.3.0 - Máy ch c s d liu MYSQL: 5.1.3 - Spr ing Framework 3.5 7. Module trong Spring Framework o
0841048- 0841171
Trang 6
Báo Cáo Seminar- Spring MVC - Spr ing Framework gm có quy mô ca 20 modules, c chia thành các nhóm Core Container, Data Access/Intergration, Web, AOP(Aspect Or iented Programing), Instrumentation, and Test nh mô hình d i ây:
- Spr ing cng cung c p module tích hp vi O/R tool nh Hi bernate và JDO. Spr ing có th c xem nh mt k in trúc cha 7 module. Chc nng ca mi thành phn nh sau:
0841048- 0841171
Trang 7
Báo Cáo Seminar- Spring MVC
7.1. Spring Core Container - Core container cung c p chc nng c bn ca Spr ing. Thành phn chính ca nó là Bean Factory, mt cài t ca Factory pattern. BeanFactory áp dng IoC pattern c t s ph thuc t code ca ng dng. 7.2. Spring Context/ Application Context - Spr ing context là mt file cu hình cung c p thông tin ng cnh ca Spr ing. Spr ing context cung c p các service nh JNDI access, EJB integration, e-mail, internalization, validation, và scheduling f unctionality. 7.3. Spring AOP(Aspect- Oriented) - Spr ing AO P module tích hp chc nng lp trình h ng khía cnh vào Spr ing f ramework thông qua c u hình ca nó. Spr ing AO P module cung c p các dch v qun lý giao dch cho các i tng trong bt k ng dng nào s dng Spr ing. Vi Spr ing AO P chúng ta có th tích hp declarative transaction management vào trong ng dng mà không cn da vào EJB component. - Spr ing AO P module cng a lp trình metadata vào trong Spr ing. S dng cái này chúng ta có th thêm chú thích vào source code h n g dn Spr ing làm th nào liên h vi aspect. 7.4. Spring DAO - Tng JDBC và DAO a ra mt cây phân c p exception qun lý k t ni n database, iu khin exception và thông báo li ca database. Tng exception n 0841048- 0841171
Trang 8
Báo Cáo Seminar- Spring MVC gin iu khin li và gim khi lng code mà chúng ta cn vit nh m và óng k t ni. Module này cng cung c p các dch v qun lý giao dch cho các i tng trong ng dng Spr ing. 7.5. Spring ORM - Spr ing có th tích hp vi mt vài ORM f ramework cung c p Object R elation tool bao gm: JDO, Hi bernate, Oracle TopLink, JPA và iBatis SQL Maps 7.6. Spring Web Module - Tr ên application context module, cung c p context cho các ng dng web. Spr ing cng h tr tích hp vi Struts, JSF và Webwork. Web module cng làm gim bt các công vic iu khin nhiu request và gn các tham s ca request vào các i tng domain. 7.7. Spring MVC Framework - MVC Framework thì cài t y c tính ca MVC pattern xây dng các ng dng Web. MVC f r amework thì cu hình thông qua giao din và cha c mt s k thut view bao gm: JS P, Velocity, Tiles và generation of P DF và Excel fi le. - Ví d: Có mt s k thut c bit cho tng web nh: Spr ing MVC f ramework, Struts, JSF, WebWork, JS P, Tapestry, FreeMarker, ... Developer s b lúng túng i chiu nhng im mnh và xu ca tt c chúng. Mi khi h chn mt k thut và bt u cài t, thì sau ó nu h mun thay i mt k thut khác thì r t khó. Nhng Spr ing a ra các module cho tt c các k thut tr ên, và r t n gin thay i file cu hình. - Vi phng pháp này, nó có kh nng cho c team và test th tt c các hình thc tr ê n và xem nh hng cùng tc tr c khi quyt nh chn la. JS P là mt view template mc nh. "InternalR esouceViewR eso lver" có th c s dng cho mc ích này. 8. K in trúc MVC(Model ± View- Controller) - Phân nh rõ ràng các b c k t ni, chuyn h ng và log ic hin th - Chng minh c ch xây dng web tng l p(Web- tier) 8.1. Thành phn ca MVC - Có 3 thành phn chính ng và tng tác vi các dch v c o Controller: qun lý logic chuyn h cung c p t logic k t ni. o Model: p gia Controller và View. Là l 0841048- 0841171
Trang 9
Báo Cáo Seminar- Spring MVC N i
cha d liu cn x lý và a lên View. N i nh c ca Controller. o View: áp ng hin th theo yêu cu R út và xut d liu t Model 8.2. Motivation for MVC - Bo trì d dàng hn o Thay i logic k t ni ít có kh nng phá v logic hin th o Ngc li: Tng kh nng làm vic nhóm - Giúp Developers có th chú trng nhiu hn n vic phát tr in code liên tc, mà không cn lo lng n vic phá v các th hin ban u. - Giúp Designers có th chú trng nhiu hn vào vic xây dng giao din sao cho tin dng và bt mt mà không cn lo lng v code Java. - S dng công c tt nht cho công vic o Java thích hp to code logic k t ni o ánh du hay ngôn ng mu phù hp to HTML - D k im tra t ni và chuyn h ng c phân cách rõ ràng vi logic hin th, o Logic k ngha là có th áp dng nhng th nghim r iêng bit. im tra code bên ngoài servlet o Thc t: ta có th k 8.3. MVC trong Spring - Front Controller: servlet là các Controller r iêng bit áp ng mt yêu cu nào ó. o Chng minh mô hình trong Struts và Core J2EE Patterns - Yêu cu nh tuyn là hoàn toàn iu khin b i Front Controller L khác o Các Controller r iêng bit có th s dng iu khin cho nhiu UR nhau. - Controller là POJOs - Controller c là qun lý tr c ti p ging nh bt k Bean khác trong Spr ing ApplicationContext 9. C ch Validation - Validation s dng giao din Spr ing¶s Validator xác nhn i tng, chng thc, báo cáo các li xác thc cho Errorobject. - Ví d: xem xét mt i tng d liu nh:
0841048- 0841171
Trang 10
Báo Cáo Seminar- Spring MVC
- Cung c p các hành vi xác nhn cho l p Person bng cách thc thi hai phng thc ca org.spr ingf ramework.validation ts(class) o Suppor ramework.validation.Errors o Validate(object, org.spr ingf - Thc hin mt Validator n gin, s dng class ValidationUtilshel per do Spr ing f ramework cung c p.
10.
K in trúc l u tr d li u trên Database(Data access with JDBC) 10.1. Gii thi u v Spring Framework JDBC - Giá tr c cung c p b i Spr ing Framework JDBC tr u tng th hin b i các chui hành ng c nu trong bng sau. Bng này cho thy nhng action Spr ing quan tâm Action Spring You Xác nh thông s k t ni X M các k t ni X Xác nh các câu l nh SQL X Khai báo các thông s và giá tr cung cp tham s X Chun b và thc hi n các statement X Thit lp vòng lp chuyn i thông qua k t qu(nu có) X Làm vi c cho mi ln lp Quy trình các ngoi l 0841048- 0841171
X X Trang 11
Báo Cáo Seminar- Spring MVC X lý giao dch X óng k t ni báo cáo và statement và resultset X - Các cách ti p cn truy cp c s d liu JDBC o JdbcTemplate o NamedParameterJdbcTemplate o SimpleJdbcTemplate o SimpleJdbcInser t and SimpleJdbcCall DBMS Objects including MappingSqlQuery, SqlUpdate and o R StoredProcedure - Gói phân c p: Khung JDBC tr u tng ca Spr ing Framework bao gm bn gói khác nhau: core, datasource, object, suppor t ingf ramework.jdbc.core o Org.spr ingf ramework.jdbc.datasource o Org.spr ingf ramework.jdbc.object o Org.spr ingf ramework.jdbc.suppor t o Org.spr 10.2. K im soát các k t ni c s d li u - DataSource - DataSourceUtils - Smar tDataSource - AbstractDataSource - SingleConnectionDataSource - Dr iver ManagerDataSource - TransactionAwareDataSourceProxy - DataSourceTransactionManager - NativeJdbExtractor 11. K in trúc ORM(Object Relationship Mapping) 11.1. Gii thi u v ORM trong MVC - Spr ing Framework h tr tích hp vi Hi bernate, Java Persistence API (JPA), Java Data Object và iBATIS SQL Maps dành cho qun lý tài nguyên, truy cp d liu i tng (DAO) tr in khai thc hin, và chin lc giao dch. Ví d, i vi Hi bernate có l p u tiên h tr. - Có th cu hình - tt c các tính nng h tr cho O / R (i tng quan h) các công c lp mapping thông qua Dependency Injection. - Spr ing thêm nhng ci tin áng k cho s la chn các l p ORM khi to truy cp d liu ng dng. Có th tn dng càng nhiu các h tr hi nhp nh ý mun 0841048- 0841171
Trang 12
Báo Cáo Seminar- Spring MVC và có th so sánh. S dng nhiu h tr ca ORM nh là th vin, bt k công ngh b i nó c thit k nh mt tp hp các JavaBeans có th tái s dng. ORM trong mt container IoC Spr ing to iu k in cu hình và tr in khai. - L i ích ca vic s dng Spr ing Framework to ra DAO ORM: bernate, o D dàng k im tra. Thay i cu hình ca SessionFactory Hi JDBC DataSource. o X lý các ngoi l o Qun lý tài nguyên, tích hp qun lý giao dch. 11.2. General ORM integration considerations - Mc tiêu ca Spr ing¶s ORM intergration là l p ng dng rõ ràng vi bt k truy cp d liu và giao dch công ngh. Không có dch v business da vào vic truy cp d liu hoc chin lc giao dch. - Tt c các tính nng truy cp d liu cá nhân c s dng r iêng nhng tích hp vi Spr ing, cung c p các cu hình da tr ên XML và tham chiu chéo ca JavaBean. - Trong mt ng dng Spr ing, nhiu i tng quan trng nh JavaBean: truy cp d liu mu, dch v business có s dng truy cp d liu h ng i tng và qun lý giao dch, phân gii tr ên web, iu khin web có s dng dch v business. - Khi s dng Hi bernate, JPA hoc JDO trong DAO, phi quyt nh làm th nào x lý handle the persistence ca các l p ngoi l. II. Web MVC FrameWork
0841048- 0841171
Trang 13
Báo Cáo Seminar- Spring MVC
1.
Gii thi u v Web MVC framework - Spr ing MVC(Model-View-Controller) f ramework c thit k xung quanh mt DispatcherServlet g i thông i p yêu cu x lý vi các cu hình handler mappings, view resolution, local and theme resolution, h tr uploading files. - Vic x lý mc nh là da tr ên iu khin @Controller và @R equestMapping cung c p mt lot x lý linh hot. Vi s ra i ca Spr ing 3.0, các @Controller iu khin c ch cng cho phép bn to các trang web R ESTf ul Web và ng dng, thông qua các chú thích @ PathVar iable và các tính nng khác. - Phân chia rch ròi 3 công vic business logic, presentation logic và navigation logic. o Model: chu trách nhim óng gói d liu ca ng dng o Views: có nhim v hin th thông tin tr v cho ng i dung i dung và gi các dch v o Controllers: chu trách nhim nhn request t ng bên di x lý. - Nhng thun l i trong Spr ing MVC f ramework orm-back ing. o Bn có th s dng bt k i tng nh là mt lnh hoc f ramework c th hoc là mt l p c s. o Bn không cn phi to ra mt f o D liu ràng buc ca Spr ing là r t linh ng 2. DispatcherServlet 0841048- 0841171
Trang 14
Báo Cáo Seminar- Spring MVC - Spr ing f ramework web MVC cng ging nh nhiu web MVC f ramework khác yêu cu iu khin xung quanh mt servlet chính, dispatches yêu cu ti controller và các chc nng khác to iu k in phát tr in ng dng web. - Vic x lý yêu cu công vic ca Spr ing web MVC DispatcherServlet c minh ho trong mô hình sau.
- DispatcherServlet thc cht là mt servlet(nó tha k t l p c s Htt pServlet) - Ti p nhn tt c các request t Browser. iu khin lung x lý và trung chuyn gia các thành phn trong MVC. c khai báo trong web.xml ca ng dng web ca bn. Bn mun DispatcherServlet x lý map(biu ) mà bn mong mun bng cách s dng mt ánh x UR L trong file web.xml nh nhau. Nh ví d di ây:
0841048- 0841171
Trang 15
Báo Cáo Seminar- Spring MVC
- Trong ví d tr ên, tt c các yêu cu k t thúc bng f orm s c x lý b i các DispatcherServlet. iu này ch là b c u tiên trong vic thit lp Spr ing Web MVC. Bây gi bn cn phi cu hình các bean khác nhau c s dng b i các Spr ing Web MVC f ramework. - Trong khuôn kh Web MVC, mi DispatcherServlet WebApplicationContext ca r iêng mình, mà tha hng tt c các bean ã c xác nh trong WebApplicationContext gc. Nhng bean c tha k có th thay i trong phm vi servlet-c th.
- Sau khi kh i to ca mt DispatcherServlet, khung hình cho mt tp tin có tên [Tên servlet-]-servlet.xml trong th mc WEB-INF ca ng dng web ca bn và to ra các ht c xác nh ó, trng các nh ngha ca bt k ht c xác
0841048- 0841171
Trang 16
Báo Cáo Seminar- Spring MVC nh vi cùng mt tên trong scope.Consider cu hình DispatcherServlet servlet sau ây(trong các file web.xml):
- Vi cu hình servlet tr ên bn s cn phi có mt tp tin gi là / WEB-INF/golfing-servlet.xml trong ng dng ca bn, tp tin này s cha tt c các thành phn ca bn Spr ing Web MVC-c th (bean). Bn có th thay i v tr í chính xác ca tp tin cu hình thông qua mt tham s kh i to servlet . - WebApplicationContext là mt phn m r ng ca ApplicationContext nhng có thêm mt s tính nng b sung cn thit cho các ng dng web. Nó khác vi mt ApplicationContext bình thng ch nó có kh nng gii quyt các ch (theme)và nó bit nó là servlet liên quan .Các WebApplicationContext là ràng buc trong ServletContext, và bng cách s dng phng pháp t nh tr ên l p R equestContextUtils bn luôn có th tìm các WebApplicationContext nu bn cn truy cp vào nó. - The Spr ing DispatcherServlet s dng bean c bit x lý yêu cu và a ra các quan im thích hp. Bean là mt phn ca Spr ing Framework. Bn có th cu hình chúng trong WebApplicationContext này, cng ging nh bn cu hình bt k bean khác. Tuy nhiên, i vi hu ht các loi bean, giá tr mc nh c cung c p ban u bn không cn phi cu hình chúng. Nhng bean này c mô t trong Bng sau ây. - Bean trong WebApplicationContext K iu bean Gii thích controllers Form C ca MVC handler mappings X lý vic thc hin mt danh sách các b vi x lý tr c và sau x lý và controller mà s c thc thi. view resolvers Gii quyt name view n view locale resolver Mt locale resolver là mt thành phn 0841048- 0841171
Trang 17
Báo Cáo Seminar- Spring MVC
Theme resolver multi par t file resolver handler exception resolvers
có kh nng gii quyt các locale a client ang s dng, có th cung c p cho view. Mt Theme resolver có kh nng gii quyt các theme ng dng web ca bn có th s dng. Có chc nng x lý file uploads t HTML. Có chc nng khác là bn (map) xem hoc thc hin chúc nng khác phc tp hn.
- Sau khi bn thit lp mt DispatcherServlet, và yêu cu n DispatcherServlet c th, các DispatcherServlet bt u x lý yêu cu nh sau: o WebApplicationContext là tìm k im và ràng buc trong các yêu cu nh là mt thuc tính có controller và các yu t khác trong quá trình này có th s dng. ó là b ràng buc b i mc nh theo khoá DispatcherServlet.WEB_ APPLICATION _CONTEXT _ ATTR IBUTE. o Các locale resolver gii quyt yêu cu cho phép các yu t trong quá trình gii quyt các locale s dng khi x lý yêu cu (render ing the view, prepar ing data, and so on). Nu bn không cn phi gii quyt các locale. o Các theme có ngha v gii quyt yêu cu cho các yu t nh view xác nh theme s dng. Nu bn không s dng các theme, bn có th b qua nó. o Nu bn ch nh mt tp tin gii quyt nhiu ln, yêu cu c k im tra cho multi par ts, nu multi par ts c tìm thy, yêu cu c bao bc trong mt Multi par tHtt pServletR equest ch bin ti p b i các yu t khác trong quá trình này. im. Nu x lý c tìm thy, các dây chuyn o Mt b x lý thích hp là tìm k thc hin liên quan n vic x lý (preprocessors, post processors, và controllers) c thc hin chun b mt model or render ing. o Nu model tr v view, view s gi k t qu ra. Nu nh model không c tr li nên view cng không c tr v. 3. Implementing Controllers - Controller cung c p truy cp vào các ng dng mà bn thng xác nh thông qua mt service inter fa ce. Controller iu khin ng i dùng nhp vào và chuyn qua model và cui cùng ng i dùng s vào view xem li. Spr ing thc hin controller mt cách r t tr u tng cho phép bn to ra mt lot các controller mi. 0841048- 0841171
Trang 18
Báo Cáo Seminar- Spring MVC - Spr ing 2.5 gii thiu mt mô hình lp trình model t MVC controllers có s dng các chú thích nh @R equestMapping, @R equestParam, @ModelAttr i bute. S h tr này có sn cho c hai Servlet MVC và Por tlet MVC. Controller thc hin theo k iu này không cn m r ng các l p c s c th hoc các giao din c th. Hn na, h thng không có ph thuc tr c ti p tr ên Servlet hoc Por tlet API, mc dù bn có th d dàng cu hình truy cp n các c s Servlet hoc Por tlet. 3.1. nh ngha Controllers vi @Controllers - @Controllers có mt l p server phc v cho vai trò ca Controllers. Spr ing không yêu cu bn m r ng các l p c s controllers hoc tham kho các API Servlet. Tuy nhiên, bn vn có th tham kho các tính nng Servlet-c th nu bn cn. - Các @Controllers hot ng nh mt khuôn mu cho l p, nó ch ra vai trò ca mình. Dispatcher s quét các l p cho các methods và detects @ R equestMapping annotations. - Bn có th nh ngha c rõ ràng bean controllers. S dng mt nh ngha tiêu chun bean Spr ing. Tuy nhiên các iu khin @controllers cng cho phép t ng phát hin phù hp vi h tr chung cho s «. - k ích hot tính nng t ng phát hin các controllers bn có thêm thành phn scan cu hình ca bn. S dng lc Spr ing nh trong các on mã XML sau:
3.2. Lp bn các yêu cu vi @ RequestMapping - Bn có th s dng các chú thích nh là ng dn ca bn . Thông thng thì các bn s có mt chú thích c th hoc là mt ng dn mu cho mt f orm controllers, vi các phng thc nh là GET/POST hoc các Htt p request parameters. 0841048- 0841171
Trang 19
Báo Cáo Seminar- Spring MVC
4. Handler Mapping - Trong các phiên bn tr c ca Spr ing, ng i dùng ã c yêu cu xác nh Hander Mappings trong các ng dng web, yêu cu mapping x lý web thích hp. Vi s gii thiu Spr ing 2.5, DispatcherServlet cho phép Def aultAnnotationHandler Mapping, tìm k im @R equestMapping gii thích tr ên @Controllers. Bình thng, bn không cn phi thay i các mapping mc nh, tr khi bn cn thay i các giá tr ca thuc tính mc nh. Các thuc tính ó là: - interceptors: danh sách ca chc nng b chn s dng, HandlerInterceptors ã c tho lun các phn ³Interceptingrequests-the HandlerInterceptor inter fa ce´. - defaultHandler: quyn iu khin c mc nh s dng, khi mapping controller không dn ti k t qu tìm k im tng ng. - order: da vào giá tr ca thuc tính(nh trong giao din org.spr ingf ramework.core.Ordered) - alwaysUseFullPath(luôn s dng ng dn tuyt i): nu úng thì Spr ing s dng ng dn tuyt i bên trong các servlet hin ti tùy theo tìm k im thích hp ca iu khin. Nu sai(mc nh) ng dn bên trong các mappingservlet hin ti c s dng. Ví d: nu bn servlet ang c s dng /testing/* và 0841048- 0841171
Trang 20
Báo Cáo Seminar- Spring MVC luôn là ng dn tuyt i, thuc tính s luôn úng thì s dng /testing/viewPage.html. Ngc li nu thuc tính là sai, s dng /viewPage.html. - urlDecode: mc nh là úng vi Spr ing 2.5. Nu bn so sánh gia các ng dn c mã hóa, thit lp này s sai. Tuy nhiên, Htt pServletR equest luôn luôn thy nhiu ng i dng gii mã. - lazyInitHandlers: cho phép kh i to ca b x lý lazyInitHanders. Các giá tr này mc nh là sai. - Chú ý: Các alwaysUseFullPath, ur lDecode, và lazyInitHandlers là thuc tính duy nht, có cha sn các l p con org.spr ingf ramework.web.servlet.handler.AbstractUr lHandler Mapping. Ví d sau ch ra làm sao ghi è lên các mapping mc nh và thêm mt interceptor - Chn yêu cu- giao din HandlerInterceptor - C ch x lý mapping ca Spr ing bao gm iu khin interceptors, nó s hu ích khi bn mun áp dng các chc nng c th vi các yêu cu nht nh. - Interceptors t ti các mapping x lý phi c thc hin HandlerInterceptor t org.spr ingf ramework.web.servlet. Giao din này xác nh ba phng thc: c khi x lý thc t c thc thi o Mt là gi tr o Hai là c gi sau khi x lý c thc thi o Ba là gi khi yêu cu hoàn thành ã hoàn tt. Ba phng thc cung c p s linh hot, hoàn tt các tin x lý và sau x lý. - preHandle(..) phng thc tr v giá tr Boolean. Bn có th s dng phng thc này thoát hoc ti p tc thc hin chui iu khin. Khi phng thc này tr v true, chui thc thi s x lý ti p tc, ngc li khi phng thc tr v f alse DispatcherServlet gi s ã chn và tr v mt view thích hp và không ti p tc thc hin chui interceptors - Ví d sau nh ngha mt ánh x x lý mà các mapping yêu cu phù hp vi mu UR L ³/*.f orm´ và ³/*.view´ vào mt controller c bit, editAccountFormController. Mt interceptor ã c thêm vào chn các yêu cu này và reroutes chuyn ng i dùng n mt trang c th nu th i gian không gia 9a.m và 6 a.m.
0841048- 0841171
Trang 21
ca
Báo Cáo Seminar- Spring MVC
- Bt c yêu cu x lý nào ca mapping b chn b i các TimeBasedAccessInterceptor. Nu th i gian hin ti nm ngoài th i gianthc thi, ng i dùng s c chuyn h ng n mt tp tin HTML t nh, có ni dung thông báo: bn ch có th truy cp vào các trang web trong th i gian quy nh.
0841048- 0841171
Trang 22
Báo Cáo Seminar- Spring MVC - Nh các bn có th thy, Spr ing chuyn i l p HandlerInterceptorAdapter làm cho nó d dùng hn có th m r ng giao din HandlerInterceptor. 5. Resolving views - Tt c f ramework MVC cho nhng ng dng web cung c p cách gi các view. Spr ing cung c p view, nhng b phân tích cho phép bn tr li model bng trình duyt không có nhng công ngh c bit. Ngoài ra Spr ing cho phép x dng JSPs, template velocity và XSLT view. - Hai giao din mà quan trng i vi cách Spr ing x lý view là ViewR esolver và View. ViewR esolver cung c p mt mapping gia name và view thc t. Giao din View gi nhng yêu cu ca handler ti mt trong nhng view. 5.1. Gii quyt các view bng giao di n ViewResolver - Nh ã tho lun tr ên, nhng ³Implementing Controllers´ mi phng pháp handler trong iu khin Spr ing Web MVC các controller phi gii quyt ti name ca view rõ ràng(bng vic tr li mt chui, view hay ModelAndView) hay tuyt i(da vào nhng quy c). Views trong Spr ing c gi b i tên view và gii quyt b i view resolver . Spr ing a n khá nhiu cách gii quyt. View resolvers ViewR esolver AbstractCachingViewR esolver
XmlViewR esolver
R esourceBundleViewR esolver
Ur lBasedViewR esolver
InternalR esourceViewR esourcer 0841048- 0841171
Descr i ption View tr u tng gii quyt b i các caches views. Thng vi các views cn chun b tr c khi s dng. M r ng các view này bng cách cung c p caching. Thi hành ca ViewR esolver là ch p nhn cu hình c vit XML vi cùng DTD(Document Type Definitions) là Spr ing¶s XML bean f actor ies. Mc nh cu hình file là /WEB-INF/views.xml. S thi hành ca ViewR esolver s s dng nhng nh ngha bean trong R esourceBundle, c ch rõ ràng b i tên. in hình, bn nh ngh bundle trong thuc tính, v tr í trong ng dn l p. Mc nh tên file là views.proper t ies. Giao din ViewR esolver thc thi n gin, a ra nhng quyt nh tr c ti p ca tên view logic ti UR Ls ngoài nh ngha rõ ràng ca mapping. iu này là phù hp vi s logic ca tên, ca các tài nguyên view mà không rc ri. Thun l i cho l p con ca Trang 23
Báo Cáo Semi
r Spri
MVC
Ur lBasedViewResolver h tr Inter nalResourceView (hi u ng, Ser vlets, JSPs) và các lp con nh JstlView và TilesView. Bn có th ch nh lp view cho t t c các quan im c to r a bng cách gii quy t nó vi setViewClass(..) VelocityViewResolver / Thun ti n lp con ca Fr eeMarker ViewResolver Ur lBasedViewResolver h tr VelocityView (hi u ng, tc ca templates) hoc Fr eeMaKer View, tùy chnh vi các lp con ca chúng. ContentNegotiatingViewResolver Th c thi các giao di n ViewResolver , gii quy t d a trên tên ile yêu cu hoc ch p nhn tiêu . - Ví d, vi JSP là m t công ngh view, bn có th s dng Ur lBasedViewResolver . Cái này s gii quy t name view t m t URL và yêu cu t handler cho các RequestDispatcher tr li trên view.
- Khi quay v kim tr a vi t ên h p lý, view này chuyn ti p gii quy t các yêu cu cho RequestDispatcher , sau ó s gi yêu cu n / EB-INF/jsp/test. jsp - Khi bn kt h p các công ngh view khác trên ng dng web, bn có th s dng ResourceBundleViewResolve r :
- Các ResourceBundleViewResolver kim tr a vi c ResourceBundle xác nh b i các basename và t ng view nó là cách h tr gii quyt, nó s dng các giá tr ca thu c tính [viewname]. (class) là lp view và giá t r ca thu c tính [viewname].u r l là view ur l. Có th xác nh m t view par ent t t t c các view tr ong thu c tính ile m rng. Bng cách này, bn có th xác nh c mt class de ault view.
08410 48- 08411 71
Tr
24
Báo Cáo Semi
r- Spri
MVC
: Các lp con ca Abstr actCachingViewResolver , cache view s gii quyt tr ng h p này. Cache ci thi n hi u su t ca các công ngh view nh t nh. Nó có th tt b nh cache bng cách thit lp các thuc tính cache sai. H n na, nu bn phi làm mi mt s view t r ong th i gian chy (ví d nh khi tc chy mt mu c sa i), bn có th s dng r emoveFr omCache (Str ing viewName, Locale lo c) - Chú
5.2. Chaining ViewRe olver - Spr ing h tr a cách gii quyt View. Bn có th gii quyt chui, ví d ghi è các ph ng thc view c bi t tùy t ng tr ng h p nh t nh.
Tr ong ví d sau, các chui ca view có hai cách gii quyt, mt là Inter nalResourceViewResolve r , luôn t ng nh v nh là gii quyt cui cùng tr ong chui, và XmlViewResolver xác nh các view Excel. Các view Excel không c h tr b i Inter nalResourceViewResolve r .
- Nu cách gii quyt rõ r àng không cho r a kt qu mt view, Spr ing s xem xét cách gii quyt khác. Nu gii quyt thêm view tn ti, Sp r ing ti p tc kim tr a chúng cho n khi c gii quyt. N u không có cách gii quyt t r li mt view, Spr ing a r a mt Ser vletException. - Gii quyt v n ca view t r v null nu view có th không c tìm th y. Không phi t t c các cách gii quyt u làm c iu này, tuy nhiên, b i tr ong mt s t r ng h p, vi c gii quyt n gin là không th phát hi n có hoc không th y tn ti. Ví d: Inter nalResourceViewResolve r s dng RequestDispatcher bên tr ong, và là cách duy nh t tìm hiu xem JSP là tn ti, nhng th c thi này ch có th th c hi n mt ln. T ng t cng cho VelocityViewResolver và mt s cách khác. Kim tr a Javadoc gii quyt view, xem view tn ti cha. Vì vy vi c a r a mt Inter nar lResourceViewResolve r tr ong chui mt n i khác là cui cùng, 08410 48- 08411 71
Tr
25
Báo Cáo Seminar- Spring MVC k t qu trong chui không c k im tra y , b i các InternalR esourceViewR esoler s luôn luôn tr li view. 5.3. Chuyn n view - Nh ã cp tr c ây, mt controller thông thng tr v mt view tng ng , có mt gii quyt cho mt k thut view c th. i vi các k thut view nh là JSP c biên dch thông qua Servlet hay JSP , s thông dch này thng c x lý thông qua s k t hp ca InternalR esourceViewR esolver và InternalR esourceView, mà vn là mt tin b hay bao gm thông qua R equestDispatcher.f orward các API ca phng thc Servlet (..)hoc phng thc R equestDispatcher.include(). i vi các công ngh view khác, chng hn nh Velocity, XSLT, view s t cho ni dung vào tng dòng. - RedirectView ng là k t qu ca controller tr v o Mt cách thc hin chuyn h controller ã to và tr v mt View ca Spr ingR edirectView. Trong trng hp này, DispatcherServlet không s dng các c ch View phân gii bình thng. Thay vì nó ã c tr v view ã có, DispatcherServlet n gin ch th nhm làm vic vi R edirectView. edirect () gi tr v cho trình duyt o Vn mt Htt pServletR esponse.sendR ca client nh là mt HTTP chuyn h ng. Tt c các thuc tính mô hình c th hin nh các tham s truy vn HTTP. iu này có ngha là các model phi có các i tng (thng Str ings hoc các i tng chuyn i sang mt i din Str ing), mà có th d dàng chuyn i sang mt parameter. Nu truy vn vn bn HTTP bn s dng R edirectView và view là c to ra b i controller chính nó, nó cnh cáo bn cu hình các UR L chuyn h ng c thêm vào controller nó không phi là thêm vào controller, nhng cu hình cùng vi tên View. - The redirect: pref ix p c bit: tin t cho name view có o Nó cng có th s dng mt chuyn ti gii quyt bng Ur lBasedViewR esolver và các l p con. iu này to ra mt InternalR esourceView (mà cui cùng không mt R equestDispatcher.f orward ()) tr ên phn còn li ca view name, c xem là mt UR L. esourceViewR esolver và o Do ó, tin t này không hu ích vi InternalR InternalR esourceView. Nhng các tin t có th hu ích khi bn ang s dng mt công ngh view khác, nhng vn mun các ngun tài nguyên c x lý b i Servlet JSP /. i vi các redirect: prefix, nu name view vi redirect: 0841048- 0841171
Trang 26
Báo Cáo Seminar- Spring MVC prefix c thêm vào controller, controller s không phát hin bt c iu gì c bit xy ra trong vic x lý phn ng - The forward: pref ix Itisalsopossi bletouseaspecial f orward: prefixf orviewnamesthatareultimatelyresolvedby Ur lBasedViewR esolver andsubclasses.Thiscreatesan InternalR esourceView (which ultimatelydoesa R equestDispatcher.f orward())aroundtherestoftheviewname,whichis consideredaUR L.Theref ore,thisprefixisnotusef ulwith InternalR esourceViewR esolver and InternalR esourceView (f orJSPsf orexample).Buttheprefixcanbehel pf ulwhenyouare pr imar ilyusinganotherviewtechnology,butstillwanttof orceaf orwardof aresourcetobehan dledby theServlet/JSPengine.(Notethatyoumayalsochainmulti pleviewresolvers,instead.) Aswiththe redirect: prefix,iftheviewnamewiththe f orward: prefixisinjectedintothe controller,thecontrollerdoesnotdetectthatanythingspecialishappeningintermsof handling the response. 5.4. ContentNegotiatingViewResolver - Các Content NegotiatingViewR esolver không gii quyt c chính nó mà f i cn có 1 i din khác xem phn gii ca nó. Chn ch View tng t nh các i din theo yêu cu ca phía client. Tn ti hai chin lc cho client yêu cu mt i din t máy ch. I r iêng bit cho mi tài nguyên, thông thng bng cách s o S dng mt UR dng mt phn m r ng tp tin khác nhau trong các UR L. o S dng UR L tng t cho các client xác nh v tr í các ngun lc, nhng thit lp các tiêu ch p nhn yêu cu HTTP vào danh sách các loi phng tin truyn thông mà nó hiu c. Ví d, mt yêu cu HTTP cho htt p://www.example.com/users/f red vi mt tiêu Ch p nhn t application / pdf yêu cu mt i din ca ng i s dng PDF f red, trong khi htt p://www.example.com/users/f red vi mt tiêu Ch p nhn thit lp text / xml yêu cu mt i din XML - Ghi chú: 0841048- 0841171
Trang 27
Báo Cáo Seminar- Spring MVC h tr nhiu i din ca mt tài nguyên, Spr ing cung c p Content NegotiatingViewR esolver gii quyt view da tr ên phn m r ng tp tin hoc ch p nhn tiêu ca yêu cu HTTP. trong firef ox nó c c nh o
- Content NegotiatingViewR esolver không thc hin vic gii quyt View chính nó mà thay vào ó các delegate cho mt danh sách các phân gii View mà bn ch nh thông qua các thuc tính bean ViewR esolvers.The Content NegotiatingViewR esolver la chn mt View thích hp x lý các yêu cu bng cách so sánh các yêu cu loi truyn thông (s) vi các loi truyn thông (còn gi là Content-Type) h tr các View liên k t vi nhau ca ViewR esolvers. View u tiên trong danh sách có mt Content-Type tng thích vi các i din cho client. Nu mt View tng thích có th không c cung c p b i các chui ViewR esolver, sau ó danh sách các im quy nh thông qua các thuc tính s c Def aultViews ly ý k in. Di ây là ví d v cu hình mt Content NegotiatingViewR esolver:
- Chú ý :
0841048- 0841171
Trang 28
Báo Cáo Seminar- Spring MVC Nu trong Content NegotiatingViewR esolver danh sách các ViewR esolvers không c cu hình mt cách rõ ràng, nó s t ng s dng bt k ViewR esolvers quy nh trong ng dng p d liu R SS o Các mã iu khin tng ng tr v mt Atom, ngun c cho mt UR I có dng htt p://localhost/content.atom hoc htt p://localhost/content: o
6. Using locales - Hu ht các b phn ca k in trúc quc t ca Spr ing c h tr, cng nh khuôn kh Spr ing MVC web. DispatcherServlet cho phép bn t ng gii quyt các thông tin s dng locales ca client. iu này c thc hin vi các i tng LocaleR esolver. - Khi yêu cu n, DispatcherServlet s tìm mt LocaleR esolver, và nu nó tìm thy mt LocaleR esolver, nó c gng s dng LocaleR esolver t 1 locale S dng phng pháp R equestContext.getLocale (), bn có th luôn ly các locale ã c gii quyt bng các LocaleR esolver. - Ngoài phân gii locales t ng, bn cng có th ính kèm mt s chn x lý, thay i locale trong nhng hoàn cnh c th, ví d, da tr ên vào mt tham s trong yêu cu. - V tr í phân gii và s chn c nh ngha ti các gói org.spr ingf ramework.web.servlet.i18n và c cu hình trong ng dng ca bn theo cách thông thng. ây là mt s chn lc ca LocaleR esolver trong Spr ing. 6.1. AcceptHeaderLocaleResolver - B LocaleR esolver k im tra tiêu accept-language trong yêu cu ã c gi ca client (Ví d, mt trình duyt web). Thông thng l nh vc này tiêu cha các locale ca h iu hành ca client. 0841048- 0841171
Trang 29
Báo Cáo Seminar- Spring MVC 6.2. Cook ieLocaleResolver - Nu locale c ch nh thì LocaleR esolver này có th thy c s tn ti ca Cook ie tr ên các client bng vic k im tra Cook ie . Nu vy, nó s dng locale quy nh. S dng các tính cht ca LocaleR esolver này, bn có th ch nh tên ca cook ie cng nh dài ti a. Di ây mt ví d v xác nh mt Cook ieLocaleR esolver.
Bng Nhng thuc tính ca Cook ieLocaleResolver Thuc tính cook ieName cook ieMaxAge
cook iePath
Mc nh classname + LOCALE Integer.MAX _ INT
Mô t Tên ca cook ie Th i gian ti a mt cook ie s li lâu dài i vi client. Nu -1 là quy nh, các cook ie s không tn ti, nó s ch có sn cho n khi client tt trình duyt ca mình. Gii hn kh nng hin th ca các tp tin cook ie cho mt phn nào ó ca trang web. Khi cook iePath c quy nh, các cook ie s ch c hin th cho con ng và các ng dn bên di.
6.3. SessionLocaleResolver - SessionLocaleR esolver cho phép bn ly a im locale t session có th c k t hp vi yêu cu ca ng i dùng. 6.4. LocaleChangeInterceptor - Bn có th cho phép thay i ca locale bng cách thêm các LocaleChangeInterceptor mt trong các s Handler .Nó s phát hin mt s yêu cu và thay i locale. Nó gi setLocale () tr ên LocaleR esolver ó cng tn ti trong trng hp ó. Ví d sau ây cho thy rng cách gi n tt c các ngun tài 0841048- 0841171
Trang 30
Báo Cáo Seminar- Spring MVC nguyên *.view có cha mt tham s siteLanguage c t tên s thay i local. Vì vy, ví d, mt yêu cu cho các UR L, htt p://www.sf .net/home.view?siteLanguage=nl s thay i ngôn ng trang web thành ting Hà lan.
7. Using themes 7.1. Tng quan v themes - Bn có th áp dng Spr ing Web MVC f ramework themes thit lp khuôn kh tng th cái nhìn và cm nhn ca ng dng ca bn, qua ó nâng cao k inh nghim ng i dùng. Theme là tp hp các tài nguyên t nh, thng là phong cách sheets and images, có nh hng n phong cách tr c quan ca ng dng. 7.2. nh ngha themes - s dng các theme trong ng dng web ca bn, bn phi thit lp mt giao din thc hin org.spr ingf ramework.ui.context.ThemeSource. Các giao din WebApplicationContext m r ng ThemeSource nhng u quyn nhng trách nhim (ca) nó cho mt phiên thc hin. Theo mc nh các y quyn s là mt org.spr ingf ramework.ui.context.suppor t.R esourceBundleThemeSource thc hin có tính cht ti file t th mc gc ca classpath này. s dng thc hin ThemeSource tùy chnh hoc cu hình các tin t tên c s ca các R esourceBundleThemeSource, bn có th ng ký mt bean trong tng trng hp
0841048- 0841171
Trang 31
Báo Cáo Seminar- Spring MVC ng dng vi tên themeSource c bo lu. Tng trng hp ng dng web t ng phát hin mt bean vi tên ó và s dng nó. - Khi s dng R esourceBundleThemeSource, theme c nh ngha trong mt tp tin thuc tính n gin. Các thuc tính tp tin lit k ê các ngun tài nguyên to nên theme. ây là mt ví d: styleSheet=/themes/cool/style.css background=/themes/cool/img/coolBg.jpg - Các khoá ca các thuc tính là tên tham chiu n các themes element t view code. i vi JSP, bn thng làm c iu này bng cách s dng Spr ing: theme custom tag,tng t nh Spr ing: message tag. Các JSP sau s dng các theme c nh ngha trong ví d tr c tùy chnh cái nhìn và cm nhn:
- Theo mc nh, R esourceBundleThemeSource s dng empty base name prefix. K t qu là, các thuc tính tp tin c ti t th mc gc ca classpath này. Vì vy, bn s t các nh ngha theme cool.proper ties trong mt th mc gc ca classpath, ví d, trong / WEB-INF/classes. R esourceBundleThemeSource s dng các gói Java resource bundle chun ti c ch, cho phép quc t hóa y ca theme. Ví d, chúng ta có th có mt WEB-INF/classes/cool_ nl.proper ties / , các tài liu tham kho mt hình nn c bit vi vn bn ca Hà Lan v nó. 7.3. Phân gii Theme - Sau khi bn xác nh theme, nh trong phn tr c, bn quyt nh theme s dng. Các DispatcherServlet s tìm mt bean có tên themeR esolver tìm ra s thi hành ThemeR esolver s dng. Mt b phân tích theme làm vic trong nhiu cách tng t nh LocaleR esolver. Nó nhn din các theme s dng cho mt yêu cu c th và cng có th thay i theo yêu cu ca theme. Vic phân gii theme sau ây c cung c p b i Spr ing: L p 0841048- 0841171
Bng 15.5. S thi hành ThemeR esolver Mô t Trang 32
Báo Cáo Seminar- Spring MVC FixedThemeR esolver SessionThemeR esolver Cook ieThemeR esolver
FixedThemeR esolverSelects là mt theme c nh, thit lp bng cách s dng các thuc tính def aultThemeName. Theme này c duy trì trong HTTP session ca ng i dùng. Nó ch cn c thit lp mt ln cho mi session, nhng không tn ti gia session. Các theme c chn là lu tr trong mt cook ie tr ên client.
- Spr ing cng cung c p mt ThemeChangeInterceptor cho phép thay i theme tr ên tt c các yêu cu vi mt request parameter n gin. 8. Spring¶s multipart(f ileupload) support 8.1. Gii thi u - Spr ing c tích hp trong h tr nhiu phn x lý tp tin ti lên trong các ng dng web. Bn k ích hot tính nng này nhiu ln h tr vi các i tng Multi par tR esolver, c xác nh trong gói org.spr ingf ramework.web.multi par t. Spr ing cung c p Multi par tR esolver s dng vi Commons FileUpload . - Theo mc nh,Spr ing không x lý nhiu multi par t, b i vì mt s nhà phát tr in mun x lý chính multi par ts. Bn cho phép x lý nhiu multi par t d liu Spr ing bng cách thêm mt multi par t resolver các ng dng web. Mi yêu cu c k im tra xem nu nó có cha nhiu multi par t. Nu không có nhiu multi par t c tìm thy, các yêu cu ti p tc. Nu mt multi par t c tìm thy trong yêu cu, các Multi par tR esolver ã c khai báo trong context ca bn là c s dng. Sau ó, các thuc tính nhiu multi par t trong yêu cu ca bn c x lý nh các thuc tính khác. 8.2. S dng MultipartResolver - Ví d sau ây cho thy làm th nào s dng CommonsMulti par tR esolver:
- Tt nhiên bn cng cn phi t các jar thích hp trong classpath ca bn làm vic vi b phân tích nhiu phn. Trong trng hp ca CommonsMulti par tR esolver, bn cn phi s dng commons-fileupload.jar. - Khi Spr ing DispatcherServlet nhn din mt yêu cu nhiu multi par t, nó k ích hot b phân tích c khai báo trong resoler (ca) các bn và s trao tay ca bn 0841048- 0841171
Trang 33
Báo Cáo Seminar- Spring MVC tr ên yêu cu. Gii quyt sau ó k t thúc bao bc dòng Htt pServletR equest thành mt Multi par t Htt pServletR equest tp tin h tr nhiu phn ti lên. S dng Multi par tHtt pServletR equest, bn có th nhn c thông tin v các multi par ts có theo yêu cu này và thc s có c quyn truy cp vào các tp tin nhiu ln mình trong b controller ca bn. 8.3. X lý mt tp tin ti lên trong mt biu mu - Sau khi Multi par tR esolver hoàn thành, yêu cu c x lý nh bt k công vic khác. u tiên, to mt f orm vi mt u vào tp tin ó s cho phép ng i dùng ti lên mt f orm. Các thuc tính mã hóa (Enctype = "multi par t / f orm-data") cho phép trình duyt bit làm th nào mã hóa các hình thc theo yêu cu nhiu multi par t
- B c ti p theo là to ra mt controller x lý các tp tin ti lên. Controller này tng t nh mt normal annotated @Controller, ngoi tr vic chúng tôi s dng Multi par tHtt pServletR equest hoc Multi par tFile trong các method parameters:
0841048- 0841171
Trang 34
Báo Cáo Seminar- Spring MVC
- Lu ý @R equestParam method parameters nhp vào khai báo trong f orm. Trong ví d này, không có gì c thc hin vi byte[], nhng tr ên thc t bn có th lu nó vào c s d liu, lu tr nó tr ên h thng tp tin và nhiu hn na. - Cui cùng, bn s phi khai báo b controller and the resolver trong context ng dng.
9. Handling exceptions 9.1. HandlerExceptionResolver - Spr ing HandlerExceptionR esolvers gim thiu sai sót ca trng hp exception bt ng xy ra khi bn yêu cu c x lý b i mt controller nào phù hp yêu cu. HandlerExceptionR esolvers phn nào ging vi s ngoi tr bn có th nh ngha trong web.xml trong b mô t ng dng web. Tuy nhiên, h cung c p mt cách linh hot hn x lý các trng hp exception. H cung c p thông tin v nhng x lý ã c thc hin khi exception c a ra. Hn na, mt chng trình x lý exception cho bn tùy chn hn cho phn ng thích hp tr c khi yêu cu c chuyn ti p n mt UR L (k t qu cui cùng nh khi bn s dng s exception c th servlet). 0841048- 0841171
Trang 35
Báo Cáo Seminar- Spring MVC - Bên cnh vic thc hin các giao din HandlerExceptionR esolver, ch là vn thc hin phng thc resolveException (exception, Handler) và tr v mt ModelAndView, bn cng có th s dng các SimpleMappingExceptionR esolver. R esolver này cho phép bn ly tên class ca bt k trng hp exception có th c a ra và s này tên cho view. ây là chc nng tng ng vi các tính nng lp s exception t Servlet API, nhng nó cng có th thc hin 1 s rõ ràng hn ca các exception t nhng x lý khác nhau. - Theo mc nh, DispatcherServlet ng ký vic Def aultHandlerExceptionR esolver. B phân tích này gii quyt mt s tiêu chun x lý ca Spr ing MVC exceptions bng cách thit lp mt mã phn hi trng thái c th: Exception ConversionNotSuppor tedException Htt pMediaTypeNotAcceptableException Htt pMediaTypeNotSuppor tedException Htt pMessageNotR eadableException Htt pMessageNotWr itableException Htt pR equestMethodNotSuppor tedException MissingServletR equestParameterExceptio NoSuchR equestHandlingMethodException TypeMismatchException
Mã Tình trng HTTP 500 (Internal Server Error) 406 (Not Acceptable) 415 (Unsuppor ted Media Type) 400 (Bad R equest) 500 (Internal Server Error) 405 (Method Not Allowed) 400 (Bad R equest) 404 (Not Found) 400ad R equest)
9.2. @ExceptionHandler - Mt thay th cho các giao din HandlerExceptionR esolver là chú thích @ExceptionHandler. Bn s dng các chú thích phng pháp @ExceptionHandler trong vòng controller mt xác nh các phng pháp c gi khi mt Exception ca mt loi hình c th c a ra trong khi thc hin các phng pháp controller. Ví d:
0841048- 0841171
Trang 36
Báo Cáo Seminar- Spring MVC
S gi phng pháp "handlerIOException ' khi java.io.IOException c a ra. - Các giá tr @ExceptionHandler có th c thit lp mt lot các loi exception. Nu exception c a vào phù hp vi mt trong các loi trong danh sách, sau ó các phng pháp chú thích vi các k t hp @ ExceptionHandler s c gi li. Nu giá tr annotation không c thit lp sau ó lit k ê các loi exception nh các i s phng pháp c s dng. - Cng ging nh các phng pháp controller methods annotated vi mt chú thích @R equestMapping, phng pháp i s và giá tr tr v ca phng pháp @ExceptionHandler là r t linh hot. Ví d, Htt pServletR equest có th c truy cp trong môi trng Servlet và các Por tletR equest ti môi trng Por tlet. Các k iu tr v có th là mt Str ing. 10. Convention over conf iguration support - i vi nhiu project, vic gn k t thit lp các quy c và nhng mc nh hp lý ch là nhng gì mà chúng cn«theme v quy c tr ên cu hình này bây gi ã c h tr rõ ràng trong Spr ing Web MVC. iu này có ngha là nu bn thit lp các quy c t tên tng t nh vy, v cn bn bn có th cut down 1 trong s nhng cu hình mà òi hi cài t b iu khin ánh x, xem li các view, ví d nh ModelAndView,« - Vic h tr quy c tr ên cu hình ó là 3 vn ct lõi ca MVC² model, view và controller 10.1. Controller-ControllerClassNameHandlermapping - Class Controller ClassNameHandler Mapping c b sung cho Handler Mapping, s dng quy c xác nh ánh x gia các request UR L và các Controller truy cp các request
0841048- 0841171
Trang 37
Báo Cáo Seminar- Spring MVC
- ây là on mã gi t file cu hình Spr ing Web MVC
- Controller ClassNameHandler Mapping tìm ra các x lý khác nhau (hoc Controller), beans c nh ngha trong các ng dng ng cnh và làm toát lên tên Controller c nh ngha ánh x x lý ca nó. Theo cách ó, các ánh x ViewShoppingCar tController n /viewshoppingcar t* request o WelcomeController maps to the /welcome* request UR L L o HomeController maps to the /home* request UR o IndexController maps to the /index* request UR L egister Controller maps to the /register* request UR L o R - Trong trng hp các l p x lý MultiActionController, các ánh x c to ra h i phc tp hn. Tên các Controller trong ví d sau c cho rng nó là s b sung cho MultiActionController: L o AdminController maps to the /admin/* request UR o CatalogController maps to the /catalog/* request UR L 10.2. The Model ModelMap (ModelAndView) - Class ModelMap v c bn là 1 Map có th add thêm các object hin th trong 1 View tham gia vào theo 1 quy c t tên chung. Xem thêm các b sung Cotroller; chú ý rng các object c thêm vào ModelAndView không có bt k tên k t hp nào c ch nh
0841048- 0841171
Trang 38
Báo Cáo Seminar- Spring MVC
- Class ModelAndView s dng 1 class ModelMap là s b sung ca 1 Map tùy chn có th t ng generate 1 key cho 1 object c add vào nó. Các chin l t xác nh add thêm 1 object ó là, trong trng hp object vô h ng nh là User, dùng tên ngn ca 1 class ca 1 class object. Các ví d sau ây là nhng cái tên c to ra cho các object vô h ng t trong 1 ModelMap o Trng hp x.y.User c add thì tên user s c to ra. egistration c add thì tên registration s c to ra. o Trng hp x.y.R oo c to ra. o Trng hp x.y.Foo c add thì tên f o Trng hp java.util.HashMap c add thì tên hashMap c to ra. Trong trng hp này có th bn mun rõ ràng hn v tên b i vì v tr c giác thì hashMap nh hn. o Add null thì k t qu tr ra s là IllegalArgumentException c a ra. Nu nh object (hoc các object) c add null thì chúng ta cng cn làm rõ v tên. - to ra 1 name sau khi add thêm 1 object Set, List hoc array là tham kho trong collection, ly tên ngn class ca i tng u tiên trong collection và s dng nó gn vi tên List . Ví d: x.y.User c add s có tên o 1 mng x.y.User[] vi 1hoc nhiu phn t userList c to. có tên o 1 mng x.y.Foo[] vi 1 hoc nhiu phn t x.y.User c add s f ooList c to ra. - Mt java.util.ArrayList vi 1 hoc nhiu phn t x.y.User c add s có tên userList c to. - Mt java.util.HashSet vi 1 hoc nhiu phn t x.y.Foo c add s có tên f ooList c to. - Mt java.util.ArrayList rng s không c add vào tt c (trong eff ect, addObject(..) khi gi v c bn s là 1 no-op). 10.3. The View ± RequestToViewNameTranslator 0841048- 0841171
Trang 39
Báo Cáo Seminar- Spring MVC - Khi không có tên View logic thì Giao din R equestToViewNameTranslator s xác nh 1 cách rõ ràng. Def aultR equestToViewNameTranslator ch là 1 l p b sung. - Các ánh x Def aultR equestToViewNameTranslator yêu cu các UR L n tên các view logic, nh trong ví d:
- Chú ý trong vic thc hin b sung các phng thc handleR equest(..) không View hoc tên view logic bao gi cng c t vào ModelAndView và c tr v. Các Def aultR equestToViewNameTranslator c thao tác vi vic to ra 1 tên view logic t UR L ca yêu cu. Trong trng hp phía tr ên các R egistrationController c dùng liên k t vi các Controller ClassNameHandler Mapping, mt request UR L ca http://localhost/registration .html tr v k t qu trong tên 1 view local ca registration bt u c to ra bng Def aultR equestToViewNameTranslator. Tên View logic này sau ó c gii quyt bên trong view /WEB-INF/jsp/registration.jsp bng bean InternalR esourceViewR esolver. 11. Etag support 0841048- 0841171
Trang 40
Báo Cáo Seminar- Spring MVC - Mt ETag (entity tag) là 1 header phn hi HTTP c tr v b i 1 lnh HTTP/1.1 ca web server, dùng xác nh rõ nhng thay i trong ni dung ti 1 UR L c a lên. Nó có th c coi là s k tha tinh vi i vi header LastModified. Khi server tr v 1 i din vi 1 header ETag, client có th dùng header này trong GET ti p theo, trong 1 header If -None-Match. Nu ni dung không thay i thì server tr v 304: No Modified. - H tr cho ETag thì c cung c p b i b lc servlet ShallowEtagHeaderFilter. Nó là 1 Servlet Filter, và do ó có th c s dng k t hp bt k f ramework web nào. B lc ShallowEtagHeaderFilter to ra cái gi là ETag cn (trái ngc vi ETag sâu, s tìm hiu sau). B lc lu tr ni dung tr v JSP (hoc ni dung khác), to ra 1 MD5 bm tr ên ó, và tr v nh 1 header Etag trong phn hi. Ln sau, 1 client gi 1 yêu cu vi tài nguyên tng t nh th, nó s dng bm giá tr If -None-Match. B lc dò tìm giá tr này , tr v li 1 view và so sánh gia 2 ln bm. Nu chúng bng nhau, s tr v giá tr 304. B lc này s không lu các x lý ly tha b i vì view hãy còn c hoàn tr li. Nó ch lu li bng thông vì phn hi tr li không c gi tr v wire - Bn có th cu hình ShallowEtagHeaderFilter trong Web.xml :
12.
Conf iguring Spring MVC - Spr ing 3 gii thiu mvc XML cu hình namespace làm n gin hóa quá trình cài t Spr ing MVC vào trong ng dng web ca bn. Thay vì ng ký các bean c p th p nh là AnnotationMethodHandlerAdapter, n gin là chúng ta có th dùng namespace và nhn g thit lp c p cao. - Các namespace mvc bao gm 3 tag: mvc: annotation-dr iven, mvc:interceptors và mvc: view-controller. Mi tag này cghi di ây và trong lc XML: 12.1. mvc:annotation-driven - Tag này ng ký các bean Def aultAnnotationHandler Mapping và AnnotationMethodHandlerAdapter, ây là yêu cu ca Spr ing MVC gi request n @Controllers. Tag cu hình 2 bean ó vi giá tr mc nh là nhng gì có trong classpath. Các giá tr mc nh là: 0841048- 0841171
Trang 41
Báo Cáo Seminar- Spring MVC - H tr cho Spr ing 3 là k i u ConversionService c b sung thêm vào JavaBeans Proper t yEditors trong Data Binding. Ví d v ConversionService c thit lp ra b i org.spr ingf ramework.f ormat.suppor t.FormattingConversionServiceFactoryBean c dùng mc nh. Cái này có th c ghi è bng cách thit lp các thuc tính conversion-service. - H tr cho f ormatting các trng Number s dng din gii @NumberFormat - H tr cho f ormatting các trng Date, Calendar, Long, và Joda Time s dng din gii @DateTimeFormat - H tr cho validating các u vào @Controller vi @Valid, nu JSR -303 Provider hin hu trong classpath. Xác thc h thng có th c cu hình 1 cách rõ ràng bng cách thit lp các thuc tính validator. - H tr cho vic c và vit XML, nu JAXB hin hu trong classpath. - H tr c và vit JSON, nu Jackson hin hu trong classpath. Mt cách s dng in hình c hin th di ây:
12.2.
mvc:interceptors - Tag này cho phép bn ng ký tùy chn HandlerInterceptors hoc WebR equestInterceptors cn c áp dng vào trong các bean Handler Mapping. Bn cng có th gii hn ng dn UR L b chn c th c áp dng. - Sau ây là ví d v vic ng ký ngn chn áp dng cho các ng dn UR L:
- Mt ví d v vic ng ký ngn chn có gii hn 1 ng dn UR L c th: 0841048- 0841171
Trang 42
Báo Cáo Seminar- Spring MVC
12.3.
mvc:view-controller - Tag này là 1 shorcut nh ngha 1 Parameter izableViewController , khi c gi ngay lp tc chuyn ti p 1 view - Mt ví d ca view-controller c chuyn n trang home c hin th di ây
12.4.
mvc:resources - Tag này cho phép các yêu cu resource static theo sau 1 mu UR L liên quan phc v b i 1 R esourceHtt pR equestHandler t bt k 1 list các R esource. - Ví d, phc v các yêu cu resource vi 1mu UR L ca /resources/** t th mc public-resources trong root ng dng ca web, tag s c s dng nh sau:
- Các thuc tính mapping phi là 1mu Ant , có th c dùng b i SimpleUr lHandler Mapping và các thuc tính v tr í phi c ch nh 1 hoc nhiu giá tr resource v tr í th mc. a s các resource u có th c ch nh s dng du phy ngn cách gia list các các giá tr . Các v tr í quy nh s c check vào order cho s hin hu ca resource cho bt k yêu cu nào. - Ví d, có th phc v các resource t c 2 th mc root ng dng web và t 1 ng dn ã có /META-INF/public-web-resources/ trong bt k file jar tr ên classpath, tag s c ch nh nh sau:
12.5.
mvc:default-servlet-handler - Th tag này cho phép mapping DispatcherServlet n "/" (theo nh cách ghi è mapping ca Servlet mc nh), trong khi vn cho phép các yêu cu static resource c x lý b i các Servlet mc nh. Nó cu hình 1 0841048- 0841171
Trang 43
Báo Cáo Seminar- Spring MVC Def aultServletHtt pHandler vi UR L mapping ca "/**". X lý này s chuyn tt c các yêu cu n Servlet mc nh. k ích hot tính nng này thì dùng cài t mc nh, ch cn include tag trong f orm: - Thông báo tr c ghi è "/" Servlet mapping là R equestDispatcher cho Servlet mc nh nên c ly theo tên hn là ly theo path. Def aultServletHtt pHandler s c gng t ng detect các Servlet mc nh cho các container ti th i gian kh i ng, s dng 1 danh sách các tên c bit n nh là hu ht các container Servlet(bao gm Tomcat, Jetty, Glassfish, JBoss, R esin, WebLogic, và WebSphere). Nu Servlet mc nh ã c tùy chnh cu hình vi 1 tên khác nhau, hoc nu khác nhau Servlet d dng n i mà Sevlet mc nh Servlet cha bit, thì tên servlet mc nh phi c nêu rõ ràng nh sau:
III. Demo HelloSpringMVC 1. B c 1: To Project
- Click the Configuration tab, ch nh tên ca dispatcher servlet Spr ing 0841048- 0841171
Trang 44
Báo Cáo Seminar- Spring MVC
- Th vin m r ng
- Nhn F6 chy th project trong IDE 0841048- 0841171
Trang 45
Báo Cáo Seminar- Spring MVC
- Ni dung ca trang (/WEB-INF/jsp/idex.jsp)
2. B c 2: To Service
3. B c 3: To Controller
0841048- 0841171
Trang 46
Báo Cáo Seminar- Spring MVC
- To class HelloController
0841048- 0841171
Trang 47
Báo Cáo Seminar- Spring MVC
- To class Name vi ni dung
4. B c 4: To View - To helloView
- To nameView 0841048- 0841171
Trang 48
Báo Cáo Seminar- Spring MVC
- Run Project
- Nhp tên, helloView hin th:
5. B c 5: Cu hình - Thit lp cu hình trong f ile applicationContext.xml
- Thit lp cu hình trong f ile dispatcher-servlet.xml 0841048- 0841171
Trang 49