Professional Documents
Culture Documents
NG
I H C KHOA H C T
NHIN
BO CO SEMINAR
CHUYN
JAVA
TI
SPRING MVC
Thng tin nhm: MSSV 0841048 0841171 H v Tn Nguy n Thanh H i i n tho i 0974513040 Email thanhhaik5@gmail.com lenguyenthanhthan@gmail.com
7. Module trong Spring Framework ................................ ................................ ........................... 6 7.1. Spring Core Container ................................ ................................ ................................ ...... 8 7.2. Spring Context/ Application Context................................ ................................ ................ 8 7.3. Spring AOP(Aspect- Oriented) ................................ ................................ ......................... 8 7.4. Spring DAO ................................ ................................ ................................ ....................... 8 7.5. Spring ORM ................................ ................................ ................................ ...................... 9 7.6. Spring Web Module ................................ ................................ ................................ .......... 9 7.7. Spring MVC Framework ................................ ................................ ................................ .. 9 8. Ki n trc MVC(Model View- Controller) ................................ ................................ ............ 9 8.1. Thnh ph n c a MVC................................ ................................ ................................ ....... 9 8.2. Motivation for MVC................................ ................................ ................................ ........ 10 8.3. MVC trong Spring ................................ ................................ ................................ .......... 10 9. C ch Validation................................ ................................ ................................ ................... 10 10. Ki n trc l u tr d li u trn Database(Data access with JDBC) ................................ ..... 11 10.1. Gi i thi u v Spring Framework JDBC ................................ ................................ ....... 11 10.2. Ki m sot cc k t n i c s d li u ................................ ................................ ............... 12 11. Ki n trc ORM(Object Relationship Mapping) ................................ ................................ . 12 11.1. Gi i thi u v ORM trong MVC ................................ ................................ .................... 12 11.2. General ORM integration considerations ................................ ................................ ..... 13 II. Web MVC FrameWork ................................ ................................ ................................ ............ 13 1. Gi i thi u v Web MVC framework ................................ ................................ ..................... 14 2. DispatcherServlet ................................ ................................ ................................ ................... 14 3. Implementing Controllers................................ ................................ ................................ ...... 18
0841048- 0841171
Trang 1
4. Handler Mapping ................................ ................................ ................................ ................... 20 5. Resolving views ................................ ................................ ................................ ...................... 23 5.1. Gi i quy t cc view b ng giao di n ViewResolver................................ .......................... 23 5.2. Chaining ViewResolvers ................................ ................................ ................................ . 25 5.3. Chuy n n view ................................ ................................ ................................ ............. 26
5.4. ContentNegotiatingViewResolver ................................ ................................ ................... 27 6. Using locales ................................ ................................ ................................ ........................... 29 6.1. AcceptHeaderLocaleResolver ................................ ................................ ......................... 29 6.2. CookieLocaleResolver ................................ ................................ ................................ ..... 30 6.3. SessionLocaleResolver................................ ................................ ................................ ..... 30 6.4. LocaleChangeInterceptor ................................ ................................ ............................... 30 7. Using themes ................................ ................................ ................................ .......................... 31 7.1. T ng quan v themes ................................ ................................ ................................ ....... 31 7.2. nh ngh a themes ................................ ................................ ................................ ........... 31
7.3. Phn gi i Theme ................................ ................................ ................................ .............. 32 8. Springs multipart(fileupload) support ................................ ................................ ................. 33 8.1. Gi i thi u ................................ ................................ ................................ ......................... 33 8.2. S d ng MultipartResolver................................ ................................ ............................. 33 8.3. X l m t t p tin t i ln trong m t bi u m u ................................ ................................ . 34 9. Handling exceptions ................................ ................................ ................................ ............... 35 9.1. HandlerExceptionResolver ................................ ................................ ............................. 35 9.2. @ExceptionHandler ................................ ................................ ................................ ........ 36 10. Convention over configuration support ................................ ................................ .............. 37 10.1. Controller-ControllerClassNameHandlermapping................................ ...................... 37 10.2. The Model ModelMap (ModelAndView) ................................ ................................ ...... 38 10.3. The View RequestToViewNameTranslator ................................ ............................... 39 11. Etag support ................................ ................................ ................................ ......................... 40 12. Configuring Spring MVC ................................ ................................ ................................ .... 41 12.1. mvc:annotation-driven ................................ ................................ ................................ .. 41 12.2. mvc:interceptors ................................ ................................ ................................ ............ 42 12.3. mvc:view-controller................................ ................................ ................................ ....... 43 12.4. mvc:resources ................................ ................................ ................................ ................ 43
0841048- 0841171
Trang 2
ng D ng:
0841048- 0841171
Trang 3
c gi i t i u vo n m 2002.
Rod Johnson a ra t ng ny t kinh nghi m lm vi c v i ki n trc J2EE. - Johnson vi t cu n sch v i tiu : J2EE Develoment Without Using EJB gi i thi u khi ni m trnh (lightweight container). V i l lu n:EJB th c gi tr c a n, nh ng khng ph i lc no c ng c n thi t v ph h p cho t t c cc ng d ng. - Tuy Spring Framework khng b t bu c ng i ta ph i tun theo m t m hnh l p trnh(programming model) c th no, song n lan truy n r ng ri trong c ng ng nh ng ng i vi t ch ng trnh dng Java, nh m t hnh th c ch y u thay th cho m hnh Enterprise JavaBean. Theo thi t k , b khung hnh ny gi i phng l p trnh vin dng Java, cho php h nhi u quy n t do h n, v ng th i cung c p m t gi i php ti n l i, y d n ch ng b ng ti li u, d dng s d ng, ph h p v i nh ng th c hnh thng d ng trong cng ngh ph n m m. - Bn c nh nh ng c tr ng n n t ng c a Spring Framework l nh ng ci c th dng c trong b t c m t ch ng trnh ng d ng Java no, r t nhi u cc m r ng v ti n b trong vi c ki n t o cc trnh ng d ng dnh cho n n t ng m ng web (web-based application) d a trn n n Java Enterprise c ng t n t i n a. Spring Framework n i ti ng c ng m t ph n do chnh c th k trn v c gi i th ng m i cng nh n nh m t n n t ng ki n trc c t m quan tr ng trong chi n l c ki n t o ph n m m. 2. Spring v i Enterprise Java Bean 2.1. Spring - Spring khng ph i l m t k thu t persistence nh ng n cho php tch h p v i cc k thu t khc. EJB th t p trung vo k thu t persistence v by gi n c ng tc v i Hibernate, m t ORM t t nh t ngy nay. N ang d nh c ng tc v i m t k thu t ORM t t khc l JDO (cung c p cho Object Database). - Trong Spring, chng ta c th s d ng Java Bean rt trch cc th m lc tr c ch c th v i EJB. M c tiu chnh c a Spring l n gi n vi c pht tri n J2EE v testing. 2.2. EJB (Enterprise Java Bean) - EJB c xu t hi n vo 1988 v l m t chu n, c t trong th gi i Enterprise. M c d c m t s k thu t Java g n y, nh ng khng c k thu t no ng k so v i EJB v m c t ng cc c tnh c a n.
0841048- 0841171
Trang 4
- Spring khng lm m i th nh ng n h tr nh ng k thu t t t nh t cho m i yu c u.Thay v CMP(Circuits Multi-Projects) & BMP, n h tr m t vi k thu t persistence khc nh JDO, Hiberbate v OJB. Cc ORM tool ny th c nhi u kh n ng ci t h n CMP. n gi n coding JDBC, c m t tool l iBatis v Spring c ng h tr n. 2.3. So Snh Spring v EJB - Spring s d ng Acegi, m t security framework m ngu n m v cung c p khai bo security thng qua c u hnh Spring ho c class metadata, trong khi EJB khai bo security c c u hnh thng qua m t deployment. - Spring cung c p proxying cho RM (k thu t remoting c bi t nh Burlap) JAXRPC & web-service, trong khi EJB cung c p l i g i ph ng th c xa c qu n l b i container. - Spring c th cung c p khai bo transaction nh EJB. H n n a, Spring cn cung c p khai bo th t c rollback cho cc ph ng th c v exception. - EJB th c ng v c g ng lm m i th , m t vi cng vi c t t nh ng m t s th khng. Spring ch s d ng Java Bean v thng qua m t s k thu t c bi t cung c p nhi u ch c n ng nh EJB, b ng cch tch h p v i m t s k thu t open source khc. - Sping cung c p m t vi thu n l i h n EJB nh : o Testing d dng h n - khng c n kh i ng EJB container test. o Spring d a vo quy c c a chu n Java Bean, nn cc l p trnh vin d dng lm vi c v i n.
0841048- 0841171 Trang 5
sung vo OOP truy n th ng v b o ton tnh nguyn v n c a OOP. o Spring uy n chuy n. 3. M c ch c a Spring - M c ch c a Spring l tr thnh m t framework ng d ng. Cc framework ph bi n khc nh Struts, Tapestry, JSF,...l cc framework t t cho t ng web nh ng khi chng ta s d ng cc framework ny, chng ta ph i cung c p thm framework khc gi i quy t t ng enterprise m tch h p t t v i cc framework ny. Spring lm gi m b t v n ny b ng cch cung c p m t framework ton di n bao g m: o Core bean container
o MVC framework o AOP integration framework o JDBC integration framework o EJB integration framework.
4. Cc phin b n c a Spring MVC - Thng 10/2006: pht hnh Spring 2.0 - Thng 11/2007: pht hnh Spring 2.5 - Hi n t i: Spring 3.0 - Download: - Document: 5. Yu c u v k thu t tri n khai ng d ng web s d ng Spring framework c n ci t PHP 5.1.0 tr ln - Hi u r ph ng php l p trnh h ng i t ng(OOP) v y l m t framework c thi t k theo ph ng php h - Hi u r v m hnh MVC ng it ng thu n ty.
6. Yu c u ci t - Operating System: Windows 7 - NetBeans IDE: 6.9 ho c 6.9.1, phin b n Java - Java Development Kit(JDK) Phin b n 6 - GlassFish Server Edition ngu n m 3.0.2, yu c u JDK 6 - PHP: 5.3.0 - My ch c s d li u MYSQL: 5.1.3 - Spring Framework 3.5 7. Module trong Spring Framework
0841048- 0841171
Trang 6
Hibernate v JDO.
0841048- 0841171
Trang 7
7.1. Spring Core Container - Core container cung c p ch c n ng c b n c a Spring. Thnh ph n chnh c a n l Bean Factory, m t ci t c a Factory pattern. BeanFactory p d ng IoC pattern c t s ph thu c t code c a ng d ng. 7.2. Spring Context/ Application Context - Spring context l m t file c u hnh cung c p thng tin ng c nh c a Spring. Spring context cung c p cc service nh JNDI access, EJB integration, e-mail, internalization, validation, v scheduling functionality. 7.3. Spring AOP(Aspect- Oriented) - Spring AOP module tch h p ch c n ng l p trnh h ng kha c nh vo Spring framework thng qua c u hnh c a n. Spring AOP module cung c p cc d ch v qu n l giao d ch cho cc i t ng trong b t k ng d ng no s d ng Spring. V i Spring AOP chng ta c th tch h p declarative transaction management vo trong ng d ng m khng c n d a vo EJB component. - Spring AOP module c ng a l p trnh metadat a vo trong Spring. S d ng ci ny chng ta c th thm ch thch vo source code h ng d n Spring lm th no lin h v i aspect. 7.4. Spring DAO - T ng JDBC v DAO a ra m t cy phn c p exception qu n l k t n i database, i u khi n exception v thng bo l i c a database. T ng exception
0841048- 0841171
n n
Trang 8
ng tc v i cc d ch v
Trang 9
a ln View.
ng c phn cch r rng v i logic hi n th , ngh a l c th p d ng nh ng th nghi m ring bi t. o Th c t : ta c th ki m tra code bn ngoi servlet
8.3. MVC trong Spring - Front Controller: servlet l cc Controller ring bi t p ng m t yu c u no . o Ch ng minh m hnh trong Struts v Core J2EE Patterns - Yu c u nh tuy n l hon ton i u khi n b i Front Controller
o Cc Controller ring bi t c th s d ng
nhau. - Controller l POJOs - Controller c l qu n l tr c ti p gi ng nh b t k Bean khc trong Spring ApplicationContext 9. C ch Validation - Validation s d ng giao di n Springs Validator xc nh n bo co cc l i xc th c cho Errorobject. - V d : xem xt m t i t ng d li u nh : it ng, ch ng th c,
0841048- 0841171
Trang 10
- Cung c p cc hnh vi xc nh n cho l p Person b ng cch th c thi hai ph ng th c c a org.springframework.validation o Supports(class) o Validate(object, org.springframework.validation.Errors - Th c hi n m t Validator n gi n, s d ng class ValidationUtilshelper do Spring framework cung c p.
10. Ki n trc l u tr d li u trn Database(Data access with JDBC) 10.1. Gi i thi u v Spring Framework JDBC - Gi tr c cung c p b i Spring Framework JDBC tr u t ng th hi n b i cc chu i hnh ng c n u trong b ng sau. B ng ny cho th y nh ng action Spring quan tm Action Xc Xc nh thng s k t n i X X X X X X X
Trang 11
Spring
You X
M cc k t n i nh cc cu l nh SQL Khai bo cc thng s v gi tr cung c p tham s Chu n b v th c hi n cc statement Thi t l p vng l p chuy n i thng qua k t qu (n u c)
X X
Objects including MappingSqlQuery, SqlUpdate and StoredProcedure - Gi phn c p: Khung JDBC tr u t ng c a Spring Framework bao g m b n gi khc nhau: core, datasource, object, support o Org.springframework.jdbc.core
o Org.springframework.jdbc.datasource o Org.springframework.jdbc.object o Org.springframework.jdbc.support
o RDBMS
10.2. Ki m sot cc k t n i c s d li u - DataSource - DataSourceUtils - SmartDataSource - AbstractDataSource - SingleConnectionDataSource - DriverManagerDataSource - TransactionAwareDataSourceProxy - DataSourceTransactionManager - NativeJdbExtractor 11. Ki n trc ORM(Object Relationship Mapping) 11.1. Gi i thi u v ORM trong MVC - Spring Framework h tr tch h p v i Hibernate, Java Persistence API (JPA), Java Data Object v iBATIS SQL Maps dnh cho qu n l ti nguyn, truy c p d li u i t ng (DAO) tri n khai th c hi n, v chi n l c giao d ch. V d , i v i Hibernate c l p u tin h tr . - C th c u hnh - t t c cc tnh n ng h tr cho O / R ( i t ng quan h ) cc cng c l p mapping thng qua Dependency Injection. - Spring thm nh ng c i ti n ng k cho s l a ch n cc l p ORM khi t o truy c p d li u ng d ng. C th t n d ng cng nhi u cc h tr h i nh p nh mu n
0841048- 0841171 Trang 12
0841048- 0841171
Trang 13
1. Gi i thi u v Web MVC framework - Spring MVC(Model-View-Controller) framework c thi t k xung quanh m t DispatcherServlet g i thng i p yu c u x l v i cc c u hnh handler mappings, view resolution, local and theme resolution, h tr uploading files. - Vi c x l m c nh l d a trn i u khi n @Controller v @RequestMapping cung c p m t lo t x l linh ho t. V i s ra i c a Spring 3.0, cc @Controller i u khi n c ch c ng cho php b n t o cc trang web RESTful Web v ng d ng, thng qua cc ch thch @PathVariable v cc tnh n ng khc. - Phn chia r ch ri 3 cng vi c business logic, presentation logic v navigation logic.
o Model: ch u trch nhi m ng gi d li u c a ng d ng o Views: c nhi m v hi n th thng tin tr v cho ng o Controllers: ch u trch nhi m nh n request t ng
i dung i dung v g i cc d ch v
ng
2. DispatcherServlet
0841048- 0841171
Trang 14
- DispatcherServlet th c ch t l m t servlet(n th a k t l p c s HttpServlet) - Ti p nh n t t c cc request t Browser. i u khi n lu ng x l v trung chuy n gi a cc thnh ph n trong MVC. c khai bo trong web.xml c a ng d ng web c a b n. B n mu n DispatcherServlet x l map(bi u ) m b n mong mu n b ng cch s d ng m t nh x URL trong file web.xml nh nhau. Nh v d d i y:
0841048- 0841171
Trang 15
- Trong v d trn, t t c cc yu c u k t thc b ng form s c x l b i cc DispatcherServlet. i u ny ch l b c u tin trong vi c thi t l p Spring Web MVC. By gi b n c n ph i c u hnh cc bean khc nhau c s d ng b i cc Spring Web MVC framework. - Trong khun kh Web MVC, m i DispatcherServlet WebApplicationContext c a ring mnh, m th a h ng t t c cc bean c xc nh trong WebApplicationContext g c. Nh ng bean c th a k c th thay i trong ph m vi servlet-c th .
- Sau khi kh i t o c a m t DispatcherServlet, khung hnh cho m t t p tin c tn [Tn servlet-]-servlet.xml trong th m c WEB-INF c a ng d ng web c a b n v t o ra cc h t c xc nh , tr ng cc nh ngh a c a b t k h t c xc
0841048- 0841171
Trang 16
- V i c u hnh servlet trn b n s c n ph i c m t t p tin g i l / WEB-INF/golfing-servlet.xml trong ng d ng c a b n, t p tin ny s ch a t t c cc thnh ph n c a b n Spring Web MVC-c th (bean). B n c th thay i v tr chnh xc c a t p tin c u hnh thng qua m t tham s kh i t o servlet . - WebApplicationContext l m t ph n m r ng c a ApplicationContext nh ng c thm m t s tnh n ng b sung c n thi t cho cc ng d ng web. N khc v i m t ApplicationContext bnh th ng ch n c kh n ng gi i quy t cc ch (theme)v n bi t n l servlet lin quan .Cc WebApplicationContext l rng bu c trong ServletContext, v b ng cch s d ng ph ng php t nh trn l p RequestContextUtils b n lun c th tm cc WebApplicationContext n u b n c n truy c p vo n. - The Spring DispatcherServlet s d ng bean c bi t x l yu c u v a ra cc quan i m thch h p. Bean l m t ph n c a Spring Framework. B n c th c u hnh chng trong WebApplicationContext ny, c ng gi ng nh b n c u hnh b t k bean khc. Tuy nhin, i v i h u h t cc lo i bean, gi tr m c nh c cung c p ban u b n khng c n ph i c u hnh chng. Nh ng bean ny c m t trong B ng sau y. - Bean trong WebApplicationContext Ki u bean controllers handler mappings view resolvers locale resolver
0841048- 0841171
Gi i thch Form C c a MVC X l vi c th c hi n m t danh sch cc b vi x l tr c v sau x l v controller m s c th c thi. Gi i quy t name view n view M t locale resolver l m t thnh ph n
Trang 17
- Sau khi b n thi t l p m t DispatcherServlet, v yu c u n DispatcherServlet c th , cc DispatcherServlet b t u x l yu c u nh sau: o WebApplicationContext l tm ki m v rng bu c trong cc yu c u nh l m t thu c tnh c controller v cc y u t khc trong qu trnh ny c th s d ng. l b rng bu c b i m c nh theo kho DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE. cho php cc y u t trong qu trnh gi i quy t cc locale s d ng khi x l yu c u (rendering the view, preparing data, and so on). N u b n khng c n ph i gi i quy t cc locale. o Cc theme c ngh a v gi i quy t yu c u cho cc y u t nh view xc nh theme s d ng. N u b n khng s d ng cc theme, b n c th b qua n. o N u b n ch nh m t t p tin gi i quy t nhi u l n, yu c u c ki m tra cho multiparts, n u multiparts c tm th y, yu c u c bao b c trong m t MultipartHttpServletRequest ch bi n ti p b i cc y u t khc trong qu trnh ny. o M t b x l thch h p l tm ki m. N u x l c tm th y, cc dy chuy n th c hi n lin quan n vi c x l (preprocessors, postprocessors, v controllers) c th c hi n chu n b m t model or rendering. o N u model tr v view, view s g i k t qu ra. N u nh model khng c tr l i nn view c ng khng c tr v . 3. Implementing Controllers - Controller cung c p truy c p vo cc ng d ng m b n th ng xc nh thng qua m t service interface. Controller i u khi n ng i dng nh p vo v chuy n qua model v cu i cng ng i dng s vo view xem l i. Spring th c hi n controller m t cch r t tr u t ng cho php b n t o ra m t lo t cc controller m i.
0841048- 0841171 Trang 18
3.2. L p b n cc yu c u v i @ RequestMapping - B n c th s d ng cc ch thch nh l ng d n c a b n . Thng th ng th cc b n s c m t ch thch c th ho c l m t ng d n m u cho m t form controllers, v i cc ph ng th c nh l GET/POST ho c cc Http request parameters.
0841048- 0841171 Trang 19
4. Handler Mapping - Trong cc phin b n tr c c a Spring, ng i dng c yu c u xc nh HanderMappings trong cc ng d ng web, yu c u mapping x l web thch h p. V i s gi i thi u Spring 2.5, DispatcherServlet cho php DefaultAnnotationHandlerMapping, tm ki m @RequestMapping gi i thch trn @Controllers. Bnh th ng, b n khng c n ph i thay i cc mapping m c nh, tr khi b n c n thay i cc gi tr c a thu c tnh m c nh. Cc thu c tnh l: - interceptors: danh sch c a ch c n ng b ch n s d ng, HandlerInterceptors c th o lu n cc ph n Interceptingrequests-the HandlerInterceptorinterface. - defaultHandler: quy n i u khi n c m c nh s d ng, khi mapping controller khng d n t i k t qu tm ki m t ng ng. - order: d a vo gi tr c a thu c tnh(nh trong giao di n org.springframework.core.Ordered) - alwaysUseFullPath(lun s d ng ng d n tuy t i): n u ng th Spring s d ng ng d n tuy t i bn trong cc servlet hi n t i ty theo tm ki m thch h p c a i u khi n. N u sai(m c nh) ng d n bn trong cc mappingservlet hi n t i c s d ng. V d : n u b n servlet ang c s d ng /testing/* v
0841048- 0841171
Trang 20
- preHandle(..) ph ng th c tr v gi tr Boolean. B n c th s d ng ph ng th c ny thot ho c ti p t c th c hi n chu i i u khi n. Khi ph ng th c ny tr v true, chu i th c thi s x l ti p t c, ng c l i khi ph ng th c tr v false DispatcherServlet gi s ch n v tr v m t view thch h p v khng ti p t c th c hi n chu i interceptors - V d sau nh ngh a m t nh x x l m cc mapping yu c u ph h p v i m u URL /*.form v /*.view vo m t controller c bi t, editAccountFormController. M t interceptor c thm vo ch n cc yu c u ny v reroutes chuy n ng i dng n m t trang c th n u th i gian khng gi a 9a.m v 6 a.m.
0841048- 0841171
Trang 21
-B t c yu c u x l no c a mapping b ch n b i cc TimeBasedAccessInterceptor. N u th i gian hi n t i n m ngoi th i gianth c thi, ng i dng s c chuy n h ng n m t t p tin HTML t nh, c n i dung thng bo: b n ch c th truy c p vo cc trang web trong th i gian quy nh.
0841048- 0841171
Trang 22
XmlViewResolver
ResourceBundleViewResolver
UrlBasedViewResolver
InternalResourceViewResourcer
0841048- 0841171
Bo Co Semi
r Spri
MVC
UrlBasedViewResolver h tr InternalResourceView (hi u ng, Servlets, JSPs) v cc l p con nh JstlView v TilesView. B n c th ch nh l p view cho t t c cc quan i m c t o ra b ng cch gi i quy t n v i setViewClass(..) VelocityViewResolver/ Thu n ti n l p con c a FreeMarkerViewResolver UrlBasedViewResolver h tr VelocityView (hi u ng, t c c a templates) ho c FreeMaKerView, ty ch nh v i cc l p con c a chng. ContentNegotiatingViewResolver Th c thi cc giao di n ViewResolver, gi i quy t d a trn tn ile yu c u ho c ch p nh n tiu . - V d , v i JSP l m t cng ngh view, b n c th s d ng UrlBasedViewResolver. Ci ny s gi i quy t name view t m t URL v yu c u t handler cho cc RequestDispatcher tr l i trn view.
- Khi quay v ki m tra v i tn h p l, view ny chuy n ti p gi i quy t cc yu c u cho RequestDispatcher , sau s g i yu c u n / EB-INF/jsp/test.jsp - Khi b n k t h p cc cng ngh view khc trn ng d ng web, b n c th s d ng ResourceBundleViewResolver:
nh b i
cc basename v t ng view n l cch h tr gi i quy t, n s d ng cc gi tr c a thu c tnh [viewname]. (class) l l p view v gi tr c a thu c tnh [viewname].url l view url. C th xc nh m t view parent t t t c cc view trong thu c tnh ile m r ng. B ng cch ny, b n c th xc nh c m t class de ault view.
0841048- 0841171
Tr
24
Bo Co Semi
r- Spri
MVC
- Ch : Cc l p con c a AbstractCachingViewResolver, cache vi w s gi i quy t e tr ng h p ny. Cache c i thi n hi u su t c a cc cng ngh view nh t nh. N c th t t b nh cache b ng cch thi t l p cc thu c tnh cache sai. H n n a, n u b n ph i lm m i m t s view trong th i gian ch y (v d nh khi t c ch y m t m u c s a i), b n c th s d ng removeFromCache (String viewName, Locale loc) 5.2. Chaining ViewRe olver - Spring h tr a cch gi i quy t View. B n c th gi i quy t chu i, v d ghi
cc ph
ng th c view
c bi t ty t ng tr
ng h p nh t
nh.
Trong v d sau, cc chu i c a view c hai cch gi i quy t, m t l InternalResourceViewResolver, lun t ng nh v nh l gi i quy t cu i cng trong chu i, v XmlViewResolver xc nh cc view Excel. Cc view Excel khng ch tr b i InternalResourceViewResolver.
- N u cch gi i quy t r rng khng cho ra k t qu m t view, Spring s xem xt cch gi i quy t khc. N u gi i quy t thm view t n t i, Spring ti p t c ki m tra chng cho n khi c gi i quy t. N u khng c cch gi i quy t tr l i m t view, Spring a ra m t ServletException. - Gi i quy t v n c a view tr v null n u view c th khng c tm th y. Khng ph i t t c cc cch gi i quy t u lm c i u ny, tuy nhin, b i trong m t s tr ng h p, vi c gi i quy t n gi n l khng th pht hi n c ho c khng th y t n t i. V d : InternalResourceViewResolver s d ng RequestDispatcher bn trong, v l cch duy nh t tm hi u xem JSP l t n t i, nh ng th c thi ny ch c th th c hi n m t l n. T ng t c ng cho VelocityViewResolver v m t s cch khc. Ki m tra Javadoc gi i quy t view, xem view t n t i ch a. V v y vi c a ra m t InternarlResourceViewResolver trong chu i m t n i khc l cu i cng,
0841048- 0841171 Tr 25
5.3. Chuy n n view - Nh c p tr c y, m t controller thng th ng tr v m t view t ng ng , c m t gi i quy t cho m t k thu t view c th . i v i cc k thu t view nh l JSP c bin d ch thng qua Servlet hay JSP , s thng d ch ny th ng cx l thng qua s k t h p c a InternalResourceViewResolver v InternalResourceView, m v n l m t ti n b hay bao g m thng qua RequestDispatcher.forward cc API c a ph ng th c Servlet (..)ho c ph ng th c RequestDispatcher.include(). i v i cc cng ngh view khc, ch ng h n nh Velocity, XSLT, view s t cho n i dung vo t ng dng. - RedirectView o M t cch th c hi n chuy n h ng l k t qu c a controller tr v controller t o v tr v m t View c a SpringRedirectView. Trong tr ng h p ny, DispatcherServlet khng s d ng cc c ch View phn gi i bnh th ng. Thay v n c tr v view c, DispatcherServlet n gi n ch th nh m lm vi c v i RedirectView. m t HttpServletResponse.sendRedirect () g i tr v cho trnh duy t c a client nh l m t HTTP chuy n h ng. T t c cc thu c tnh m hnh c th hi n nh cc tham s truy v n HTTP. i u ny c ngh a l cc model ph i c cc i t ng (th ng Strings ho c cc i t ng chuy n i sang m t i di n String), m c th d dng chuy n i sang m t parameter. N u truy v n v n b n HTTP b n s d ng RedirectView v view l c t o ra b i controller chnh n, n c nh co b n c u hnh cc URL chuy n h ng c thm vo controller tn View. n khng ph i l thm vo controller, nh ng c u hnh cng v i
oV n
- The redirect: prefix o N c ng c th s d ng m t chuy n ti p c bi t: ti n t cho name view c gi i quy t b ng UrlBasedViewResolver v cc l p con. i u ny t o ra m t InternalResourceView (m cu i cng khng m t RequestDispatcher.forward ()) trn ph n cn l i c a view name, c xem l m t URL. ny khng h u ch v i InternalResourceViewResolver v InternalResourceView. Nh ng cc ti n t c th h u ch khi b n ang s d ng m t cng ngh view khc, nh ng v n mu n cc ngu n ti nguyn c x l b i Servlet JSP /. i v i cc redirect: prefix, n u name view v i redirect:
o Do , ti n t
0841048- 0841171
Trang 26
c n c 1 i di n khc xem ph n gi i c a n. Ch n ch View t ng t nh cc i di n theo yu c u c a pha client. T n t i hai chi n l c cho client yu c u m t i di n t my ch . o S d ng m t URI ring bi t cho m i ti nguyn, thng th ng b ng cch s d ng m t ph n m r ng t p tin khc nhau trong cc URL. o S d ng URL t ng t cho cc client xc nh v tr cc ngu n l c, nh ng thi t l p cc tiu ch p nh n yu c u HTTP vo danh sch cc lo i ph ng ti n truy n thng m n hi u c. V d , m t yu c u HTTP cho http://www.example.com/users/fred v i m t tiu Ch p nh n t application / pdf yu c u m t i di n c a ng i s d ng PDF fred, trong khi http://www.example.com/users/fred v i m t tiu Ch p nh n thi t l p text / xml yu c u m t i di n XML - Ghi ch:
0841048- 0841171 Trang 27
nh
- ContentNegotiatingViewResolver khng th c hi n vi c gi i quy t View chnh n m thay vo cc delegate cho m t danh sch cc phn gi i View m b n ch nh thng qua cc thu c tnh bean ViewResolvers.The ContentNegotiatingViewResolver l a ch n m t View thch h p x l cc yu c u b ng cch so snh cc yu c u lo i truy n thng (s) v i cc lo i truy n thng (cn g i l Content-Type) h tr cc View lin k t v i nhau c a ViewResolvers. View u tin trong danh sch c m t Content-Type t ng thch v i cc i di n cho client. N u m t View t ng thch c th khng c cung c p b i cc chu i ViewResolver, sau danh sch cc i m quy nh thng qua cc thu c tnh s c DefaultViews l y ki n. D i y l v d v c u hnh m t ContentNegotiatingViewResolver:
Ch :
0841048- 0841171
Trang 28
ng s
d ng b t k
ng ng
cho m t http://localhost/content.atom
c h tr , c ng nh
khun kh Spring MVC web. DispatcherServlet cho php b n t ng gi i quy t cc thng tin s d ng locales c a client. i u ny c th c hi n v i cc i t ng LocaleResolver. - Khi yu c u n, DispatcherServlet s tm m t LocaleResolver, v n u n tm th y m t LocaleResolver, n c g ng s d ng LocaleResolver t 1 locale S d ng ph ng php RequestContext.getLocale (), b n c th lun l y cc locale c gi i quy t b ng cc LocaleResolver. - Ngoi phn gi i locales t ng, b n c ng c th nh km m t s ch n x l, thay i locale trong nh ng hon c nh c th , v d , d a trn vo m t tham s trong yu c u. - V tr phn gi i v s ch n c nh ngh a t i cc gi org.springframework.web.servlet.i18n v c c u hnh trong ng d ng c a b n theo cch thng th ng. y l m t s ch n l c c a LocaleResolver trong Spring. 6.1. AcceptHeaderLocaleResolver - B LocaleResolver ki m tra tiu accept-language trong yu c u c a client (V d , m t trnh duy t web). Thng th ng l nh v c ny tiu cc locale c a h i u hnh c a client.
0841048- 0841171
cg i ch a
Trang 29
B ng Nh ng thu c tnh c a CookieLocaleResolver Thu c tnh cookieName cookieMaxAge M c nh classname + LOCALE Integer.MAX_INT M t Tn c a cookie Th i gian t i a m t cookie s l i lu di i v i client. N u -1 l quy nh, cc cookie s khng t n t i, n s ch c s n cho n khi client t t trnh duy t c a mnh. Gi i h n kh n ng hi n th c a cc t p tin cookie cho m t ph n no c a trang web. Khi cookiePath c quy nh, cc cookie s ch c hi n th cho con ng v cc ng d n bn d i. c
cookiePath
a i m locale t session c th
6.4. LocaleChangeInterceptor - B n c th cho php thay i c a locale b ng cch thm cc LocaleChangeInterceptor m t trong cc s Handler .N s pht hi n m t s yu c u v thay i locale. N g i setLocale () trn LocaleResolver c ng t n t i trong tr ng h p . V d sau y cho th y r ng cch g i n t t c cc ngu n ti
0841048- 0841171 Trang 30
7. Using themes 7.1. T ng quan v themes - B n c th p d ng Spring Web MVC framework themes thi t l p khun kh t ng th ci nhn v c m nh n c a ng d ng c a b n, qua nng cao kinh nghi m ng i dng. Theme l t p h p cc ti nguyn t nh, th ng l phong cch sheets and images, c nh h ng n phong cch tr c quan c a ng d ng. 7.2. nh ngh a themes s d ng cc theme trong ng d ng web c a b n, b n ph i thi t l p m t giao di n th c hi n org.springframework.ui.context.ThemeSource. Cc giao di n WebApplicationContext m r ng ThemeSource nh ng u quy n nh ng trch nhi m (c a) n cho m t phin th c hi n. Theo m c nh cc y quy n s l m t org.springframework.ui.context.support.ResourceBundleThemeSource th c hi n c tnh ch t t i file t th m c g c c a classpath ny. s d ng th c hi n ThemeSource ty ch nh ho c c u hnh cc ti n t tn c s c a cc ResourceBundleThemeSource, b n c th ng k m t bean trong t ng tr ng h p
0841048- 0841171
Trang 31
- Theo m c nh, ResourceBundleThemeSource s d ng empty base name prefix. K t qu l, cc thu c tnh t p tin c t i t th m c g c c a classpath ny. V v y, b n s t cc nh ngh a theme cool.properties trong m t th m c g c c a classpath, v d , trong / WEB-INF/classes. ResourceBundleThemeSource s d ng cc gi Java resource bundle chu n t i c ch , cho php qu c t ha y c a theme. V d , chng ta c th c m t WEB-INF/classes/cool_nl.properties / , cc ti li u tham kh o m t hnh n n c bi t v i v n b n c a H Lan v n. 7.3. Phn gi i Theme - Sau khi b n xc nh theme, nh trong ph n tr c, b n quy t nh theme s d ng. Cc DispatcherServlet s tm m t bean c tn themeResolver tm ra s thi hnh ThemeResolver s d ng. M t b phn tch theme lm vi c trong nhi u cch t ng t nh LocaleResolver. N nh n di n cc theme s d ng cho m t yu c u c th v c ng c th thay i theo yu c u c a theme. Vi c phn gi i theme sau y c cung c p b i Spring: B ng 15.5. S thi hnh ThemeResolver M t
Trang 32
L p
0841048- 0841171
8. Springs multipart(fileupload) support 8.1. Gi i thi u - Spring c tch h p trong h tr nhi u ph n x l t p tin t i ln trong cc ng d ng web. B n kch ho t tnh n ng ny nhi u l n h tr v i cc i t ng MultipartResolver, c xc nh trong gi org.springframework.web.multipart. Spring cung c p MultipartResolver s d ng v i Commons FileUpload . - Theo m c nh,Spring khng x l nhi u multipart, b i v m t s nh pht tri n mu n x l chnh multiparts. B n cho php x l nhi u multipart d li u Spring b ng cch thm m t multipart resolver cc ng d ng web. M i yu c u c ki m tra xem n u n c ch a nhi u multipart. N u khng c nhi u multipart c tm th y, cc yu c u ti p t c. N u m t multipart c tm th y trong yu c u, cc MultipartResolver c khai bo trong context c a b n l cs d ng. Sau , cc thu c tnh nhi u multipart trong yu c u c a b n c x l nh cc thu c tnh khc. 8.2. S d ng MultipartResolver - V d sau y cho th y lm th no s d ng CommonsMultipartResolver:
- T t nhin b n c ng c n ph i t cc jar thch h p trong classpath c a b n lm vi c v i b phn tch nhi u ph n. Trong tr ng h p c a CommonsMultipartResolver, b n c n ph i s d ng commons-fileupload.jar. - Khi Spring DispatcherServlet nh n di n m t yu c u nhi u multipart, n kch ho t b phn tch c khai bo trong resoler (c a) cc b n v s trao tay c a b n
0841048- 0841171 Trang 33
8.3. X l m t t p tin t i ln trong m t bi u m u - Sau khi MultipartResolver hon thnh, yu c u c x l nh b t k cng vi c khc. u tin, t o m t form v i m t u vo t p tin s cho php ng i dng t i ln m t form. Cc thu c tnh m ha (Enctype = "multipart / form-data") cho php trnh duy t bi t lm th no m ha cc hnh th c theo yu c u nhi u multipart
- B c ti p theo l t o ra m t controller x l cc t p tin t i ln. Controller ny t ng t nh m t normal annotated @Controller, ngo i tr vi c chng ti s d ng MultipartHttpServletRequest ho c MultipartFile trong cc method parameters:
0841048- 0841171
Trang 34
- L u @RequestParam method parameters nh p vo khai bo trong form. Trong v d ny, khng c g c th c hi n v i byte[], nh ng trn th c t b n c th l u n vo c s d li u, l u tr n trn h th ng t p tin v nhi u h n n a. - Cu i cng, b n s ph i khai bo b controller and the resolver trong context ng d ng.
9. Handling exceptions 9.1. HandlerExceptionResolver - Spring HandlerExceptionResolvers gi m thi u sai st c a tr ng h p exception b t ng x y ra khi b n yu c u c x l b i m t controller no ph h p yu c u. HandlerExceptionResolvers ph n no gi ng v i s ngo i tr b n c th nh ngh a trong web.xml trong b m t ng d ng web. Tuy nhin, h cung c p m t cch linh ho t h n x l cc tr ng h p exception. H cung c p thng tin v nh ng x l c th c hi n khi exception c a ra. H n n a, m t ch ng trnh x l exception cho b n ty ch n h n cho ph n ng thch h p tr c khi yu c u c chuy n ti p n m t URL (k t qu cu i cng nh khi b n s d ng s exception c th servlet).
0841048- 0841171 Trang 35
9.2. @ExceptionHandler - M t thay th cho cc giao di n HandlerExceptionResolver l ch thch @ExceptionHandler. B n s d ng cc ch thch ph ng php @ExceptionHandler trong vng controller m t xc nh cc ph ng php c g i khi m t Exception c a m t lo i hnh c th c a ra trong khi th c hi n cc ph ng php controller. V d :
0841048- 0841171
Trang 36
S g i ph ra.
- Cc gi tr @ExceptionHandler c th c thi t l p m t lo t cc lo i exception. N u exception c a vo ph h p v i m t trong cc lo i trong danh sch, sau cc ph ng php ch thch v i cc k t h p @ ExceptionHandler s c g i l i. N u gi tr annotation khng c thi t l p sau li t k cc lo i exception nh cc i s ph ng php c s d ng. - C ng gi ng nh cc ph ng php controller methods annotated v i m t ch thch @RequestMapping, ph ng php i s v gi tr tr v c a ph ng php @ExceptionHandler l r t linh ho t. V d , HttpServletRequest c th c truy c p trong mi tr ng Servlet v cc PortletRequest t i mi tr ng Portlet. Cc ki u tr v c th l m t String. 10. Convention over configuration support i v i nhi u project, vi c g n k t thi t l p cc quy c v nh ng m c nh h p l ch l nh ng g m chng c ntheme v quy c trn c u hnh ny by gi c h tr r rng trong Spring Web MVC. i u ny c ngh a l n u b n thi t l p cc quy c t tn t ng t nh v y, v c n b n b n c th cut down 1 trong s nh ng c u hnh m i h i ci t b i u khi n nh x , xem l i cc view, v d nh ModelAndView, - Vi c h tr quy c trn c u hnh l 3 v n c t li c a MVCmodel, view v controller 10.1. Controller-ControllerClassNameHandlermapping - Class ControllerClassNameHandlerMapping c b sung cho HandlerMapping, s d ng quy c xc nh nh x gi a cc request URL v cc Controller truy c p cc request
0841048- 0841171
Trang 37
- ControllerClassNameHandlerMapping tm ra cc x
Controller), beans c nh ngh a trong cc ng d ng ng c nh v lm tot ln tn Controller c nh ngh a nh x x l c a n. Theo cch , cc nh x ViewShoppingCartController n /viewshoppingcart* request o WelcomeController maps to the /welcome* request URL o HomeController maps to the /home* request URL o IndexController maps to the /index* request URL o RegisterController maps to the /register* request URL - Trong tr ng h p cc l p x l MultiActionController, cc nh x c t o ra h i ph c t p h n. Tn cc Controller trong v d sau c cho r ng n l s b sung cho MultiActionController: o AdminController maps to the /admin/* request URL o CatalogController maps to the /catalog/* request URL 10.2. The Model ModelMap (ModelAndView) - Class ModelMap v c b n l 1 Map c th add thm cc object hi n th trong 1 View tham gia vo theo 1 quy c t tn chung. Xem thm cc b sung Cotroller; ch r ng cc object c thm vo ModelAndView khng c b t k tn k t h p no c ch nh
0841048- 0841171
Trang 38
- Class ModelAndView s d ng 1 class ModelMap l s b sung c a 1 Map ty ch n c th t ng generate 1 key cho 1 object c add vo n. Cc chi n l t xc nh add thm 1 object l, trong tr ng h p object v h ng nh l User, dng tn ng n c a 1 class c a 1 class object. Cc v d sau y l nh ng ci tn c t o ra cho cc object v h ng t trong 1 ModelMap ng h p x.y.User c add th tn user s c t o ra. o Tr ng h p x.y.Registration c add th tn registration s c t o ra. o Tr ng h p x.y.Foo c add th tn foo c t o ra. o Tr ng h p java.util.HashMap c add th tn hashMap c t o ra. Trong tr ng h p ny c th b n mu n r rng h n v tn b i v v tr c gic th hashMap nh h n. o Add null th k t qu tr ra s l IllegalArgumentException c a ra. N u nh object (ho c cc object) c add null th chng ta c ng c n lm r v tn. t o ra 1 name sau khi add thm 1 object Set, List ho c array l tham kh o trong collection, l y tn ng n class c a i t ng u tin trong collection v s d ng n g n v i tn List . V d : o 1 m ng x.y.User[] v i 1ho c nhi u ph n t x.y.User c add s c tn userList c t o. o 1 m ng x.y.Foo[] v i 1 ho c nhi u ph n t x.y.User c add s c tn fooList c t o ra. - M t java.util.ArrayList v i 1 ho c nhi u ph n t x.y.User c add s c tn userList c t o. - M t java.util.HashSet v i 1 ho c nhi u ph n t x.y.Foo c add s c tn fooList c t o. - M t java.util.ArrayList r ng s khng c add vo t t c (trong effect, addObject(..) khi g i v c b n s l 1 no-op). 10.3. The View RequestToViewNameTranslator
0841048- 0841171 Trang 39
o Tr
- Ch trong vi c th c hi n b sung cc ph ng th c handleRequest(..) khng View ho c tn view logic bao gi c ng c t vo ModelAndView v c tr v . Cc DefaultRequestToViewNameTranslator c thao tc v i vi c t o ra 1 tn view logic t URL c a yu c u. Trong tr ng h p pha trn cc RegistrationController c dng lin k t v i cc ControllerClassNameHandlerMapping, m t request URL c a
http://localhost/registration.html tr v k t qu trong tn 1 view local c a registration
b t u c t o ra b ng DefaultRequestToViewNameTranslator. Tn View logic ny sau c gi i quy t bn trong view /WEB-INF/jsp/registration.jsp b ng bean InternalResourceViewResolver. 11. Etag support
0841048- 0841171 Trang 40
12. Configuring Spring MVC - Spring 3 gi i thi u mvc XML c u hnh namespace lm
n gi n ha qu trnh ci
t Spring MVC vo trong ng d ng web c a b n. Thay v ng k cc bean c p th p nh l AnnotationMethodHandlerAdapter, n gi n l chng ta c th dng namespace v nh n g thi t l p c p cao. - Cc namespace mvc bao g m 3 tag: mvc: annotation-driven, mvc:interceptors v mvc: view-controller. M i tag ny cghi d i y v trong l c XML: 12.1. mvc:annotation-driven - Tag ny ng k cc bean DefaultAnnotationHandlerMapping v
AnnotationMethodHandlerAdapter, y l yu c u c a Spring MVC g i request n @Controllers. Tag c u hnh 2 bean v i gi tr m c nh l nh ng g c trong classpath. Cc gi tr m c nh l:
0841048- 0841171 Trang 41
12.2. mvc:interceptors - Tag ny cho php b n ng k ty ch n HandlerInterceptors ho c WebRequestInterceptors c n c p d ng vo trong cc bean HandlerMapping. B n c ng c th gi i h n ng d n URL b ch n c th c p d ng. - Sau y l v d v vi c ng k ng n ch n p d ng cho cc ng d n URL:
- M t v d
v vi c
ng k ng n ch n c gi i h n 1
ng d n URL c th :
0841048- 0841171
Trang 42
12.3. mvc:view-controller - Tag ny l 1 shorcut nh ngh a 1 ParameterizableViewController , khi c g i ngay l p t c chuy n ti p 1 view - M t v d c a view-controller c chuy n n trang home c hi n th d i y
12.4. mvc:resources - Tag ny cho php cc yu c u resource static theo sau 1 m u URL lin quan ph c v b i 1 ResourceHttpRequestHandler t b t k 1 list cc Resource. - V d , ph c v cc yu c u resource v i 1m u URL c a /resources/** t th m c public-resources trong root ng d ng c a web, tag s c s d ng nh sau:
- Cc thu c tnh mapping ph i l 1m u Ant , c th c dng b i SimpleUrlHandlerMapping v cc thu c tnh v tr ph i c ch nh 1 ho c nhi u gi tr resource v tr th m c. a s cc resource u c th c ch nh s d ng d u ph y ng n cch gi a list cc cc gi tr . Cc v tr quy nh s c check vo order cho s hi n h u c a resource cho b t k yu c u no. - V d , c th ph c v cc resource t c 2 th m c root ng d ng web v t 1 ng d n c /META-INF/public-web-resources/ trong b t k file jar trn classpath, tag s c ch nh nh sau:
12.5. mvc:default-servlet-handler - Th tag ny cho php mapping DispatcherServlet n "/" (theo nh cch ghi mapping c a Servlet m c nh), trong khi v n cho php cc yu c u static resource c x l b i cc Servlet m c nh. N c u hnh 1
0841048- 0841171 Trang 43
c g ng t ng detect cc Servlet m c nh cho cc container t i th i gian kh i ng, s d ng 1 danh sch cc tn c bi t n nh l h u h t cc container Servlet(bao g m Tomcat, Jetty, Glassfish, JBoss, Resin, WebLogic, v WebSphere). N u Servlet m c nh c ty ch nh c u hnh v i 1 tn khc nhau, ho c n u khc nhau Servlet d d ng n i m Sevlet m c nh Servlet ch a bi t, th tn servlet m c nh ph i c nu r rng nh sau:
0841048- 0841171
Trang 44
- Th vi n m r ng
2. B
c 2: T o Service
3. B
c 3: T o Controller
0841048- 0841171
Trang 46
- T o class HelloController
0841048- 0841171
Trang 47
4. B c 4: T o View - T o helloView
- T o nameView
0841048- 0841171 Trang 48
- Run Project
- Nh p tn, helloView hi n th :
0841048- 0841171
Trang 50