You are on page 1of 92

SPRING MVC

Nhm BDG

TRNG I HC KHOA HC T NHIN KHOA CNG NGH THNG TIN

LP TRNH NG DNG JAVA SE08 SPRING


GV. Nguyn Hong Anh
[ ti tm hiu ln 3] [Nhm BDG]

STT 1 2 3

MSSV 1041309 1041317 1041327

H TN NGUYN CNG BNH TRN NGC HOI DUY L THI MINH NG

SPRING MVC

Nhm BDG

Mc Lc
I. Tng quan v Spring Framework...............................................................................5 1. Gii thiu v Spring Framework............................................................................5 2. Spring vi Enterprise Java Bean............................................................................5 2.1. Spring.........................................................................................................5 2.2. EJB (Enterprise Java Bean).............................................................................6 2.3. So Snh Spring v EJB...................................................................................5 3. Mc ch ca Spring............................................................................................6 4. Cc phin bn ca Spring MVC.........................................................................6 5. Yu cu v k thut..........................................................................................6 6. Yu cu ci t...................................................................................................6 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. Kin trc MVC(Model View- Controller)..............................................................9 8.1. Thnh phn ca MVC....................................................................................9 8.2. Motivation for MVC.....................................................................................10 8.3. MVC trong Spring.......................................................................................10 9. C ch Validation..............................................................................................10 10. Kin trc lu tr d liu trn Database(Data access with JDBC)..............................11 10.1. Gii thiu v Spring Framework JDBC..........................................................11 10.2. Kim sot cc kt ni c s d liu.................................................................12 11. Kin trc ORM(Object Relationship Mapping).....................................................12 11.1. Gii thiu v ORM trong MVC.....................................................................12 11.2. General ORM integration considerations........................................................13 II. Web MVC FrameWork........................................................................................13

SPRING MVC

Nhm BDG

1. Gii thiu v Web MVC framework......................................................................14 2. DispatcherServlet..............................................................................................14 3. Implementing Controllers...................................................................................18 3.1. nh ngha Controllers vi @Controllers.........................................................19 3.2. Lp bn cc yu cu vi @ RequestMapping................................................19 4. Handler Mapping..............................................................................................20 5. Resolving views.................................................................................................23 5.1. Gii quyt cc view bng giao din ViewResolver...............................................23 5.2. Chaining ViewResolvers................................................................................25 5.3. Chuyn 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. Tng quan v themes....................................................................................31 7.2. nh ngha themes.......................................................................................31 7.3. Phn gii Theme..........................................................................................32 8. Springs multipart(fileupload) support..................................................................33 8.1. Gii thiu...................................................................................................33 8.2. S dng MultipartResolver............................................................................33 8.3. X l mt tp tin ti ln trong mt biu mu.....................................................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

SPRING MVC

Nhm BDG

12.1. mvc:annotation-driven................................................................................41 12.2. mvc:interceptors........................................................................................42 12.3. mvc:view-controller....................................................................................43 12.4. mvc:resources............................................................................................43 12.5. mvc:default-servlet-handler.........................................................................43 III. Demo HelloSpringMVC.......................................................................................44 1. Bc 1: To Project...........................................................................................44 2. Bc 2: To Service...........................................................................................46 3. Bc 3: To Controller.......................................................................................46 4. Bc 4: To View..............................................................................................48 5. Bc 5: Cu hnh..............................................................................................49 IV. ng Dng: n Java L thuyt: Ch Ln- Gia Dng..............................................50 V. Tham Kho........................................................................................................50

SPRING MVC

Nhm BDG

I. Tng quan v Spring Framework


Spring Framework - Kin trc v ng dng

1. Gii thiu v Spring Framework

- Spring l mt application framework m ngun m, c gii thiu vo nm 2002. Rod Johnson a ra tng ny t kinh nghim lm vic vi kin trc J2EE. - ng ta vit cun sch vi tiu : J2EE Develoment without using EJB gii thiu khi nim trnh cha hng nh (lightweight container). Vi l lun: EJB th c gi tr ca n, nhng khng phi lc no cng cn thit v ph hp cho tt c cc ng dng. - Nh Hibernate chng li CMP v nguyn l c bn ca k thut ORM, Spring chng li EJB v s phc tp v khng ph hp cho cc unit test. Thay v EJB, Spring s dng Java bean, vi mt vi s thay i thu c tt c cc thun li m mi trng EJB a ra. Do Spring l mt s la chn khc so vi EJB.
2. Gii thiu vi Enterprise Java Bean

2.1.Spring - Spring khng phi l mt k thut persistence nhng n cho php tch hp vi cc k thut khc. EJB th tp trung vo k thut persistence v by gi n cng tc vi

SPRING MVC

Nhm BDG

Hibernate, mt ORM tt nht ngy nay. N ang d nh cng tc vi mt k thut ORM tt khc l JDO (cung cp cho Object Database). - Trong Spring, chng ta c th s dng Java Bean rt trch cc th m lc trc ch c th vi EJB. Mc tiu chnh ca Spring l n gin vic pht trin J2EE v testing.
2.2.EJB (Enterprise Java Bean)

- EJB c xut hin vo 1988 v l mt chun, c t trong th gii Enterprise. Mc d c mt s k thut Java gn y, nhng khng c k thut no ng k so vi EJB v mc tng cc c tnh ca n. - Theo Rod Johnson th EJB khng phc tp nhng n c gng cung cp cch gii quyt cho cc vn phc tp. EJB c pht trin chnh cho cc giao dch, i tng c phn pht trn my khc. Nhng mt s enterprise project khng c mc phc tp v vn s dng EJB v thm ch cc ng dng n gin tr nn phc tp. Trong trng hp ny th Spring l mt s chn la. - T lc Spring h tr cc dch v mc enterprise, th n tuyn b l mt s la chn khc i vi EJB.

Thun li ca EJB: a) Transaction Management b) Declarative Transaction support c) Persistence ( CMP & BMP) d) Declarative Security e) Distributed Computing (Container managed RPC) Spring khng c gng lm mi th nhng n h tr nhng k thut tt nht cho mi yu cu.Thay v CMP & BMP, n h tr mt vi k thut persistence khc nh JDO, Hiberbate v OJB. Cc ORM tool ny th c nhiu kh nng ci t hn CMP. n gin coding JDBC, c mt tool l iBatis v Spring cng h tr n.

2.3.So Sanh Spring va EJB

SPRING MVC

Nhm BDG

- Spring s dng Acegi, mt security framework m ngun m v cung cp khai bo security thng qua cu hnh Spring hoc class metadata, trong khi EJB khai bo security c cu hnh thng qua m t demployment. - Spring cung cp proxying cho RMI (k thut remoting c bit nh Burlap) JAX-RPC & web-service, trong khi EJB cung cp li gi phng thc xa c qun l bi container. - Spring c th cung cp khai bo transaction nh EJB. Hn na, Spring cn cung cp khai bo th tc rollback cho cc phng thc v exception. - Do , trong khi EJB th cng v c gng lm mi th, mt vi cng vic tt nhng mt s th khng. Spring ch s dng Java Bean v thng qua mt s k thut c bit cung cp nhiu chc nng nh EJB, bng cch tch hp vi mt s k thut open source khc. Do , n cung cp mt vi thun li hn EJB nh: a) Testing d dng hn - khng cn khi ng EJB container test. b) Spring da vo quy c ca chun Java Bean, nn programmer d dng lm vic vi n. c) N s dng AOP (Aspect-Oriented Programming), m hnh hu ch b sung vo OOP truyn thng v bo ton tnh nguyn vn ca OOP. d) N th uyn chuyn. 3. Mc ch ca Spring

- Mc ch ca Spring l tr thnh mt application framework. Cc framework ph bin khc nh Struts, Tapestry, JSF,... l cc framework tt cho tng web nhng khi chng ta s dng cc framework ny, chng ta phi cung cp thm framework khc gii quyt tng enterprise m tch hp tt vi cc framework ny. Spring lm gim bt vn ny bng cch cung cp mt framework ton din bao gm: Core bean container MVC framework

SPRING MVC

Nhm BDG

AOP integration framework JDBC integration frameworkEJB integration framework 1. Cc phin bn ca Spring MVC Thng 10/2006: pht hnh Spring 2.0 Thng 11/2007: pht hnh Spring 2.5 Hin ti: Spring 3.0 Download: http://www.springsource.org/download Document: http://www.springsource.org/documentation 1. Yu cu v k thut

trin khai ng dng web s dng Spring framework cn ci t PHP 5.1.0 tr ln

Hiu r phng php lp trnh hng i tng(OOP) v y l mt framework c thit k theo phng php hng i tng thun ty.

Hiu r v m hnh MVC

1. Yu cu ci t Operating System: Windows 7 NetBeans IDE: 6.9 hoc 6.9.1, phin bn Java Java Development Kit(JDK) Phin bn 6 GlassFish Server Edition ngun m 3.0.2, yu cu JDK 6 PHP: 5.3.0 My ch c s d liu MYSQL: 5.1.3 Spring Framework 3.5

1. Module trong Spring Framework

SPRING MVC

Nhm BDG

Spring Framework gm c quy m ca 20 modules, c chia thnh cc nhm Core Container, Data Access/Intergration, Web, AOP(Aspect Oriented Programing), Instrumentation, and Test nh m hnh di y:

Spring cng cung cp module tch hp vi O/R tool nh Hibernate v JDO. Spring c th c xem nh mt kin trc cha 7 module. Chc nng ca mi thnh phn nh sau:

SPRING MVC

Nhm BDG

7.1. Core Container: - Core container cung cp chc nng c bn ca Spring. Thnh phn chnh ca n l Bean Factory, mt ci 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: - Spring context l mt file cu hnh cung cp thng tin ng cnh ca Spring. Spring context cung cp cc service nh JNDI access, EJB integration, e-mail, internalization, validation, v scheduling functionality. 7.3. Spring AOP (Aspect-Oriented): - Spring AOP module tch hp chc nng lp trnh hng kha cnh vo Spring framework thng qua cu hnh ca n. Spring AOP module cung cp cc dch v qun l giao dch cho cc i tng trong bt k ng dng no s dng Spring. Vi Spring AOP chng ta c th tch hp declarative transaction management vo trong ng dng m khng cn da vo EJB component.

SPRING MVC

Nhm BDG

- Spring AOP module cng a lp trnh metadata vo trong Spring. S dng ci ny chng ta c th thm annotation vo source code hng dn Spring ni v lm th no lin h vi aspect. 7.4. Spring DAO: - Tng JDBC v DAO a ra mt cy phn cp exception qun l kt ni n database, iu khin exception v thng bo li c nm bi vendor ca database. Tng exception n gin iu khin li v gim khi lng code m chng ta cn vit nh m v ng kt ni. Module ny cng cung cp cc dch v qun l giao dch cho cc i tng trong ng dng Spring. 7.5. Spring ORM: - Spring c th tch hp vi mt vi ORM framework cung cp Object Relation tool bao gm: JDO, Hibernate, OJB v iBatis SQL Maps. 7.6. Spring Web module: -Nm trn application context module, cung cp context cho cc ng dng web. Spring cng h tr tch hp vi Struts, JSF v Webwork. Web module cng lm gim bt cc cng vic iu khin nhiu request v gn cc tham s ca request vo cc i tng domain. 7.7. Spring MVC Framework: - MVC Framework th ci t y c tnh ca MVC pattern xy dng cc ng dng Web. MVC framework th cu hnh thng qua giao din v cha c mt s k thut view bao gm: JSP, Velocity, Tiles v generation of PDF v Excel file. V d: C mt s k thut tuyt vi cho tng web nh: Spring MVC framework, Struts, JSF, WebWork, JSP, Tapestry, FreeMarker,...Developer s b lng tng i chiu nhng im mnh v xu ca tt c chng. Mi khi h chn mt k thut v bt u ci t, th sau nu h mun thay i mt k thut khc th rt kh. Nhng Spring a ra cc module cho tt c cc k thut trn, v rt n gin thay i file cu hnh. Vi phng php ny, n c kh nng cho c team th v test cc tt c cc hnh thc trn v xem nh hng cng tc trc khi quyt nh chn la.

SPRING MVC

Nhm BDG

JSP l mt view template mc nh. "InternalResouceViewResolver" c th c s dng cho mc ch ny.

1. Kin trc MVC(Model View- Controller)

Phn nh r rng cc bc kt ni, chuyn hng v logic hin th Chng minh c ch xy dng web tng lp(Web- tier) 1.1.Thnh phn ca MVC C 3 thnh phn chnh Controller: qun l logic chuyn hng v tng tc vi cc dch v c cung cp t logic kt ni. Model: View: L lp gia Controller v View. Ni cha d liu cn x l v a ln View. Ni nh c ca Controller. p ng hin th theo yu cu Rt v xut d liu t Model

1.1.Motivation for MVC Bo tr d dng hn Thay i logic kt ni t c kh nng ph v logic hin th Ngc li: Tng kh nng lm vic nhm Gip Developers c th ch trng nhiu hn n vic pht trin code lin tc, m khng cn lo lng n vic ph v cc th hin ban u. Gip Designers c th ch trng nhiu hn vo vic xy dng giao din sao cho tin dng v bt mt m khng cn lo lng v code Java. S dng cng c tt nht cho cng vic Java thch hp to code logic kt ni nh du hay ngn ng mu ph hp to HTML

SPRING MVC

Nhm BDG

D kim tra Logic kt ni v chuyn hng c phn cch r rng vi logic hin th, ngha l c th p dng nhng th nghim ring bit. Thc t: ta c th kim tra code bn ngoi servlet
1.1.MVC trong Spring

Front Controller: servlet l cc Controller ring bit p ng mt yu cu no . Chng minh m hnh trong Struts v Core J2EE Patterns Yu cu nh tuyn l hon ton iu khin bi Front Controller Cc Controller ring bit c th s dng iu khin cho nhiu URL khc nhau. Controller l POJOs Controller c l qun l trc tip ging nh bt k Bean khc trong Spring ApplicationContext 1. C ch Validation Validation s dng giao din Springs Validator xc nhn i tng, chng thc, bo co cc li xc thc cho Errorobject. V d: xem xt mt i tng d liu nh:

Cung cp cc hnh vi xc nhn cho lp Person bng cch thc thi hai phng thc ca org.springframework.validation Supports(class) Validate(object, org.springframework.validation.Errors Thc hin mt Validator n gin, s dng class ValidationUtilshelper do Spring framework cung cp.

SPRING MVC

Nhm BDG

1. Kin trc lu tr d liu trn Database(Data access with JDBC) 1.1.Gii thiu v Spring Framework JDBC Gi tr c cung cp bi Spring Framework JDBC tru tng th hin bi cc chui hnh ng c nu trong bng sau. Bng ny cho thy nhng action Spring quan tm Action Xc nh thng s kt ni M cc kt ni Xc nh cc cu lnh SQL Khai bo cc thng s v gi tr cung cp tham s Chun b v thc hin cc statement Thit lp vng lp chuyn i thng qua kt qu(nu c) Lm vic cho mi ln lp Quy trnh cc ngoi l X l giao dch X X X X X X X X Spring You X

SPRING MVC

Nhm BDG

ng kt ni bo co v statement v resultset Cc cch tip cn truy cp c s d liu JDBC JdbcTemplate NamedParameterJdbcTemplate SimpleJdbcTemplate SimpleJdbcInsert and SimpleJdbcCall

RDBMS Objects including MappingSqlQuery, SqlUpdate and

StoredProcedure Gi phn cp: Khung JDBC tru tng ca Spring Framework bao gm bn gi khc nhau: core, datasource, object, support Org.springframework.jdbc.core Org.springframework.jdbc.datasource Org.springframework.jdbc.object Org.springframework.jdbc.support 1.1.Kim sot cc kt ni c s d liu DataSource DataSourceUtils SmartDataSource AbstractDataSource SingleConnectionDataSource DriverManagerDataSource TransactionAwareDataSourceProxy DataSourceTransactionManager NativeJdbExtractor

1. Kin trc ORM(Object Relationship Mapping) 1.1.Gii thiu v ORM trong MVC

SPRING MVC

Nhm BDG

Spring Framework h tr tch hp vi Hibernate, Java Persistence API (JPA), Java Data Object v iBATIS SQL Maps dnh cho qun l ti nguyn, truy cp d liu i tng (DAO) trin khai thc hin, v chin lc giao dch. V d, i vi Hibernate c lp u tin h tr. C th cu hnh - tt c cc tnh nng h tr cho O / R (i tng quan h) cc cng c lp mapping thng qua Dependency Injection. Spring thm nhng ci tin ng k cho s la chn cc lp ORM khi to truy cp d liu ng dng. C th tn dng cng nhiu cc h tr hi nhp nh mun v c th so snh. S dng nhiu h tr ca ORM nh l th vin, bt k cng ngh bi n c thit k nh mt tp hp cc JavaBeans c th ti s dng. ORM trong mt container IoC Spring to iu kin cu hnh v trin khai. Li ch ca vic s dng Spring Framework to ra DAO ORM: D dng kim tra. Thay i cu hnh ca SessionFactory Hibernate, JDBC

DataSource. X l cc ngoi l Qun l ti nguyn, tch hp qun l giao dch. 1.1.General ORM integration considerations Mc tiu ca Springs ORM intergration l lp ng dng r rng vi bt k truy cp d liu v giao dch cng ngh. Khng c dch v business da vo vic truy cp d liu hoc chin lc giao dch. Tt c cc tnh nng truy cp d liu c nhn c s dng ring nhng tch hp vi Spring, cung cp cc cu hnh da trn XML v tham chiu cho ca JavaBean. Trong mt ng dng Spring, nhiu i tng quan trng nh JavaBean: truy cp d liu mu, dch v business c s dng truy cp d liu hng i tng v qun l giao dch, phn gii trn web, iu khin web c s dng dch v business. Khi s dng Hibernate, JPA hoc JDO trong DAO, phi quyt nh lm th no x l handle the persistence ca cc lp ngoi l.

SPRING MVC

Nhm BDG

II. Cc khi nim chnh ca Spring:


- Cc khi nim chnh ca Spring l: IoC v Aspect Orient Programming. Spring da vo Depenecy injection ca IoC. Chng ta khng trc tip kt ni cc component v service li vi nhau trong code m thng qua file cu hnh. Mt container th chu trch nhim mc ni n. Khi nim ny th tng t vi Declarative Management. 1. Dependency Injection: - Depedency injection l mt pattern chu trch nhim to i tng v cc lin kt gia cc i tng b loi b ra khi cc i tng v chuyn n cho factory qun l. - Cc i tng ca ng dng khng chu trch nhim tm kim cc resource m chng ph thuc. V v th nn s ph thuc c o ngc vo trong cc i tng. - Theo phng php ny, cc i tng c th c rt trch thng qua Setter Injection (cc thuc tnh ca Java-Beans) hoc Constructor Injection (tham s ca constructor). Mi phng thc c thun li v bt li ring. - Bnh thng trong Java bean, chng ta s dng phng thc setter v getter thit lp v ly gi tr ca thuc tnh nh sau: public class namebean { String name; public void setName(String a){ name = a; } public String getName(){ return name; } } - Chng ta s to mt th hin ca bean "namebean" (gi l bean1) v thit lp thuc tnh: bean1.setName("Tom"). Cn trong setter injection, chng ta thit lp thuc tnh "name" trong subelement <property> ca th <bean> trong file cu hnh Spring nh sau: <bean id="bean1" class="namebean">

SPRING MVC

Nhm BDG

<property name="name" > <value>Tom</value> </property> </bean> - Subelement <value> thit lp thuc tnh "name" bng cch gi phng thc set nh sau: setName("Tom"); => tin trnh ny c gi l setter injection. - V d v constructor injection, chng ta s dng constructor vi mt tham s: public class namebean { String name; public namebean(String a){ name = a; } } - Chng ta s thit lp thuc tnh "name" trong khi to th hin ca bean "namebean" nh sau: namebean bean1 = new namebean("Tom"); - y chng ta s dng element <constructor-arg> thit lp thuc tnh s dng constructor injection nh sau: <bean id="bean1" class="namebean"> <constructor-arg> <value>My Bean Value</value> </constructor-arg> </bean> - thit lp cc thuc tnh tham chiu n bean khc - <ref>, subelement <property> c s dng nh sau: <bean id="bean1" class="bean1impl"> <property name="game"> <ref bean="bean2"/> </property> </bean> <bean id="bean2" class="bean2impl" />

SPRING MVC

Nhm BDG

2. Aspect-oriented Programming: - K thut lp trnh a ra cch phn chia cc yu cu ca h thng. H thng c phn ra thnh mt vi component m trch mt chc nng xc nh. Bn cnh cc chc nng c bn th cc dch v (yu cu h thng) nh logging, transaction management, security...phi c trong chng trnh. Cc dch v h thng ny c gi l 'cross-cutting concern' - ngha l chng ct cho qua nhiu component trong h thng. AOP c kh nng module ha cc service ny v sau cung cp n cc component v chng ta c th tp trung vo yu cu chnh (core concern). Trong Spring, lt ct (aspect) c cm vo trong cc i tng ca XML file nh cc JavaBean. Tin trnh ny gi l s an xen (weaving). - Container l khi nim chnh ca Spring. qun l vng i v cu hnh cc i tng ca ng dng. Chng ta c th cu hnh mi bean nn c to nh th no hoc lm th no to mt instance ca bean hoc lm th no kt hp chng li. Spring khng s dng cc EJB container hnh nng. Spring c 2 container phn bit: Bean Factory c nh ngha bi org.springframework. beans.factory.BeanFactory l mt container n gin nht, cung cp h tr dependency injection. Application context c nh ngha bi org.springframework.context.ApplicationContext, cung cp cc service ca application framework. 2.1. Bean Factory: - Bean factory th ci t factory design pattern v chc nng ca n l to v phn pht cc bean. Bean factory bit v nhiu i tng trong ng dng, n c th to mi kt hp cho cc i tng khi chng c khi to. iu ny s gim bt gnh nng cho bean v client. - C mt vi ci t ca BeanFactory. Mt ci hu ch nht l org.springframework.beans.factory.xml.XmlBeanFacto ry. N s load cc bean da vo nh ngha trong XML file. to mt th hin ca XmlBeanFactory, hy chuyn vo constuctor ca n mt InputStream. Resource ny s cung cp XML cho factory. BeanFactory factory = new XmlBeanFactory(new FileInputStream("myBean.xml")); => dng ny bo bean factory c nh ngha bean t XML file. nh ngha bean bao gm m t bean v cc thuc tnh ca n. Nhng bean factory vn cha khi to n. rt trch mt bean t BeanFactory, hy gi phng thc getBean(). Khi phng thc

SPRING MVC

Nhm BDG

getBean() c gi, factory s khi to bean v bt u thit lp cc thuc tnh ca n s dng depedency injection. myBena bean1 = (myBean)factory.getBean("myBean"); 2.2. Application Context: - Trong khi Bean Factory c s dng cho cc ng dng n gin, th Application Context l mt container nng cao ca Spring. Ging nh BeanFactory, n c th c s dng load cc nh ngha bean, gn cc bean vi nhau v phn pht cc bean theo yu cu. N cng cung cp: 1) gii quyt text message, bao gm h tr internationlization. 2) cch chung load file resource. 3) cc s kin bean c ng k nh cc trnh lng nghe. C 3 cch s dng ci t Application Context: 1) ClassPathXmlApplicationContext: N load nh ngha context t XML file c t trong classpath, xem cc nh ngha context nh cc ti nguyn ca classpath. Application context th c load t classpath ca ng dng nh sau: ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); 2) FileSystemXmlApplicationContext: N load nh ngha context t XML file trong t h thng file. Application Context c load t h thng file nh sau: ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml"); 3) XmlWebApplicationContext: N s load cc nh ngha context t XML file trong ng dng web. Spring th nh v c kch c v chi ph. Ton b framework c th c phn pht trong JAR file ch hn 1.7MB. Chi ph c yu cu bi Spring th khng ng k. V Spring khng rng buc, v d: cc i tng trong ng dng Spring khng ph thuc vo cc class ca Spring.

III. Release info:

SPRING MVC

Nhm BDG

Spring framework c download trang http://www.springframework.org. Trn c 2 file zip: mt file c dependencies, mt file th khng. Spring framework vi dependencies th ln hn v cha tt c th vin ph thuc. Ni dung ca phn phi "-with-dependencies" (~60 MB): * "dist" cha cc file jar ca bng phn phi v mt file nn cha tt c source code. * "docs" cha ti liu c nh dnh PDF, HTML v javadocs. * "lib" cha tt c th vin cn xy dng framework hoc chy cc v d. * "src" cha cc file Java source ca framework. * "mock" cha cc file Java source cho mock v test. * "test" cha file java cho b test ca Spring. * "tiger/src" cha cc file JDK-1.5-specific Java source cho framework. * "tiger/test" cha cc file JDK-1.5-specific Java source cho b test ca Spring. * "aspectj/src" cha tt c file AspectJ-specific source cho framework * "aspectj/test" cha tt c file AspectJ-specific source cho cho b test ca Spring. * "samples" cha cc ng dng demo v chng trnh gii thiu.

IV. Spring Application:


Cc bc to ng dng s dng Spring: 1. Mt interface nh ngha cc chc nng. 2. Mt implementation cha cc thuc tnh, cc phng thc settter v getter. 3. Mt file XML gi l file cu hnh Spring. 4. Chng trnh client s dng chc nng trn. //1. Mt interface nh ngha cc chc nng. public interface Hello { public String sayHello(String s); } //2. Mt implementation cha cc thuc tnh, cc phng thc settter v getter. public class HelloImpl implements Hello{ private String greeting; /** * Class constructor * @param s */ public HelloImpl(){

SPRING MVC

Nhm BDG

} public HelloImpl(String s){ greeting = s; } /** * function */ public String sayHello(String s) { return greeting + s; } /** * @return Returns the greeting. */ public String getGreeting() { return greeting; } /** * @param greeting The greeting to set. */ public void setGreeting(String greeting) { this.greeting = greeting; } } //3. Mt file XML gi l file cu hnh Spring. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="hello" class="HelloImpl"> <property name="greeting"> <value>Good Morning!</value> </property> </bean> </beans> //4. Chng trnh client s dng chc nng trn. import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFacto ry;

SPRING MVC

Nhm BDG

import org.springframework.core.io.ClassPathResource; public class HelloClient { /** * @param args */ public static void main(String[] args) { try { ClassPathResource resource = new ClassPathResource("hello.xml"); BeanFactory factory = new XmlBeanFactory(resource); HelloImpl bean = (HelloImpl) factory.getBean("hello"); String hello = bean.sayHello("LooDong"); System.out.println(hello); } catch (Exception e) { e.printStackTrace(); } } } Chy ng dng s kt xut nh sau: 2007/01/12 13:43:16 org.springframework.core.CollectionFactory <clinit> ld: JDK 1.4+ collections available 2007/01/12 13:43:17 org.springframework.beans.factory.xml.XmlBeanDefin itionReader loadBeanDefinitions ld: Loading XML bean definitions from class path resource [hello.xml] Good Morning!LooDong - y, HelloImpl ci t giao tip Hello. Mc d khng cn thit phi du ci t pha sau mt giao tip. HelloImpl c mt thuc tnh greeting. Thuc tnh ny c th c thit lp theo 2 cch: bng phng thc setter hoc bng constructor. File hello.xml khai bo mt th hin ca HelloImpl trong container ca Spring v cu hnh gi tr ca thuc tnh greeting l "Good Morning!". - Root ca file hello.xml l <beans> element - l root element ca bt k file cu hnh no ca Spring. Element <bean> c s dng bo Spring container v lp v n nn c cu hnh nh th no. y, thuc tnh id l tn ca interface v thuc tnh class

SPRING MVC

Nhm BDG

xc nh tn lp y ca bean. - Trong <element> bean, element <property> c s dng thit lp thuc tnh, trong trng hp ny l thuc tnh greeting. S dng <property>, chng ta ni vi Spring container gi phng thc setGreeting(). Gi tr ca greeting c nh ngha trong element <value>. - Container s khi to HelloImpl da vo nh ngha XML nh sau: HelloImpl hello = new HelloImpl (); hello.setGreeting("Good Morning!..."); - Tng t, thuc tnh greeting c th c thit lp thng qua constructor c 1 tham s ca HelloImpl nh sau: <bean id="hello" class=" HelloImpl"> <constructor-arg> <value>Good Morning!...</value> </constructor-arg> </bean> - By gi th container khi to HelloImpl da vo nh ngha XML nh sau: HelloImpl hello = new HelloImpl("Good Morning..."); - chng trnh client, lp BeanFactory c s dng l Spring container. Sau phng thc getBean() c gi ly tham chiu n bean "hello". Vi tham chiu ny th phng thc sayHello() c gi. - Bc k tip chng ta s xem lm th no chy chng trnh ny nh mt servlet. u tin copy spring.jar n th mc common\lib ca Tomcat v khi ng tomcat server. Sau khi thit lp classpath, to file HelloServlet.java nh sau: HelloServlet.java import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest;

SPRING MVC

Nhm BDG

import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFacto ry; import org.springframework.core.io.ClassPathResource; public class HelloServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("userName"); response.setContentType("text/html"); ClassPathResource resource = new ClassPathResource("hello.xml"); BeanFactory factory = new XmlBeanFactory(resource); Hello bean = (Hello) factory.getBean("hello"); PrintWriter out = response.getWriter(); out.write(bean.sayHello(name)); } } index.html <html> <body> <form method="post" action="http://localhost:8080/springservlet/hello"> <input type="text" name="userName"/> <input type="submit" value="sayHello"/> </form> </body> </html>

web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

SPRING MVC

Nhm BDG

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>springservlet</display-name> <servlet> <servlet-name>hello</servlet-name> <servlet-class>HelloServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>

By gi chng ta s vo tin trnh chnh ca bt k ng dng enterprise no: data persistence. Spring c framework data access ring ca n. Spring chia phn c nh v ty bin ca tin trnh data access thnh hai lp phn bit: Template v Callback. Template qun l phn c nh ca framework nh data connection, qun l ti nguyn, iu khin giao dch...Trong khi Callback nh ngha cc th c xc nh trong ng dng nh to statement, mc ni tham s...Lp Template ca Spring l JdbcTemplate. Mt data source phi c cung cp bn trong JdbcTemplate.

- Mt v d v kt ni CSDL s dng JdbcTemplate nh sau. y chng ta s dng CSDL MySQL. Sau khi to bng user(name text, place text) trong CSDL test, chng ta to chng trnh nh sau:
1. To interface DataConnection cha hm ly v mt dataSource cung cp cho

JdbcTemplate: import javax.sql.DataSource; public interface DataConnection { public DataSource getDataSource(); }

SPRING MVC

Nhm BDG

2. To ci t ca interface cha thuc tnh dataSource v cc phng thc setter,

getter: import javax.sql.DataSource; public class DataConnectionImpl implements DataConnection{ private DataSource dataSource; public DataSource getDataSource() { return dataSource; } public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } }
3. To DataConServlet thc hin nghip v l insert d liu.:

import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFacto ry; import org.springframework.core.io.ClassPathResource; import org.springframework.jdbc.core.JdbcTemplate; public class DataConServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

SPRING MVC

Nhm BDG

String name = request.getParameter("name"); String place = request.getParameter("place"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); ClassPathResource resource = new ClassPathResource("applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(resource); DataConnection bean = (DataConnection) factory.getBean("dataConnection"); DataSource ds = bean.getDataSource(); try { JdbcTemplate template = new JdbcTemplate(ds); String sql = "insert into user values ('" + name + "','" + place+ "')"; template.execute(sql); out.write("A record is added!"); } catch (Exception e) { e.printStackTrace(); } } }
4. To client s dng servlet trn:

<html> <body> <form method="post" action="http://localhost:8080/springservlet/data"> <table> <tr> <th>Name:</th> <td><input type="text" name="name"/></td> </tr> <tr> <th>Place:</th> <td><input type="text" name="place"/></td> </tr> <tr> <td><input type="submit" value="Add"/></td> </tr> </table>

SPRING MVC

Nhm BDG

</form> </body> </html>

5. Cu hnh bean dataSource: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="hello" class="HelloImpl"> <property name="greeting"> <value>Good Morning!</value> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManager DataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/test</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean> <bean id="dataConnection" class="DataConnectionImpl"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> </beans>

SPRING MVC

Nhm BDG

6. Cu hnh servlet: <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>springservlet</display-name> <servlet> <servlet-name>data</servlet-name> <servlet-class>DataConServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>data</servlet-name> <url-pattern>/data</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> - mapping cc resource ca Hibernate, cn to mt th hin ca SessionFactory, LocalSessionFactoryBean th c s dng cho mc ch ny v cc thuc tnh: hibernateProperties, mappingResources v mappingDirectoryLocation phi c thit lp. Ging nh framework DAO ca Spring, chng ta c HibernateTemplate to i tng SessionFactory. truy cp vo d liu vi HibernateTemplate, phng thc execute(HibernateCallback) phi c s dng. - Tng t nh SessionFactory ca hibernate, JDO c PersistenceManagerFactory. N c cu hnh bi LocalPersistenceManagerFactoryBean. JDOTemplate cng to mt i tng ca PersistenceManagerFactory. truy cp vo d liu vi JDOTemplate, phng thc execute(JDOCallback) phi c s dng.

SPRING MVC

Nhm BDG

V. Web MVC FrameWork

1. Gii thiu v Web MVC framework

Spring MVC(Model-View-Controller) framework c thit k xung quanh mt DispatcherServlet gi thng ip yu cu x l vi cc cu hnh handler mappings, view resolution, local and theme resolution, h tr uploading files. Vic x l mc nh l da trn iu khin @Controller v @RequestMapping cung cp mt lot x l linh hot. Vi s ra i ca Spring 3.0, cc @Controller iu khin c ch cng cho php bn to cc trang web RESTful Web v ng dng, thng qua cc ch thch @PathVariable v cc tnh nng khc.

SPRING MVC

Nhm BDG

Phn chia rch ri 3 cng vic business logic, presentation logic v navigation logic. Model: chu trch nhim ng gi d liu ca ng dng Views: c nhim v hin th thng tin tr v cho ngi dung Controllers: chu trch nhim nhn request t ngi dung v gi cc dch v bn di x l. Nhng thun li trong Spring MVC framework Bn c th s dng bt k i tng nh l mt lnh hoc form-backing. Bn khng cn phi to ra mt framework c th hoc l mt lp c s. D liu rng buc ca Spring l rt linh ng 1. DispatcherServlet Spring framework web MVC cng ging nh nhiu web MVC framework khc yu cu iu khin xung quanh mt servlet chnh, dispatches yu cu ti controller v cc chc nng khc to iu kin pht trin ng dng web. Vic x l yu cu cng vic ca Spring web MVC DispatcherServlet c minh ho trong m hnh sau.

SPRING MVC

Nhm BDG

DispatcherServlet thc cht l mt servlet(n tha k t lp c s HttpServlet) Tip nhn tt c cc request t Browser. iu khin lung x l v trung chuyn gia cc thnh phn trong MVC. c khai bo trong web.xml ca ng dng web ca bn. Bn mun DispatcherServlet x l map(biu ) m bn mong mun bng cch s dng mt nh x URL trong file web.xml nh nhau. Nh v d di y:

SPRING MVC

Nhm BDG

Trong v d trn, tt c cc yu cu kt thc bng form s c x l bi cc DispatcherServlet. iu ny ch l bc u tin trong vic thit lp Spring Web MVC. By gi bn cn phi cu hnh cc bean khc nhau c s dng bi cc Spring Web MVC framework. Trong khun kh Web MVC, mi DispatcherServlet WebApplicationContext ca ring mnh, m tha hng tt c cc bean c xc nh trong WebApplicationContext gc. Nhng bean c tha k c th thay i trong phm vi servlet-c th.

SPRING MVC

Nhm BDG

Sau khi khi to ca mt DispatcherServlet, khung hnh cho mt tp tin c tn [Tn servlet-]-servlet.xml trong th mc WEB-INF ca ng dng web ca bn v to ra cc ht c xc nh , trng cc nh ngha ca bt k ht c xc nh vi cng mt tn trong scope.Consider cu hnh DispatcherServlet servlet sau y(trong cc file web.xml):

SPRING MVC

Nhm BDG

Vi cu hnh servlet trn bn s cn phi c mt tp tin gi l / WEB-INF/golfing-servlet.xml trong ng dng ca bn, tp tin ny s cha tt c cc thnh phn ca bn Spring Web MVC-c th (bean). Bn c th thay i v tr chnh xc ca tp tin cu hnh thng qua mt tham s khi to servlet .

WebApplicationContext l mt phn m rng ca ApplicationContext nhng c thm mt s tnh nng b sung cn thit cho cc ng dng web. N khc vi mt ApplicationContext bnh thng ch n c kh nng gii quyt cc ch (theme)v n bit n l servlet lin quan .Cc WebApplicationContext l rng buc trong ServletContext, v bng cch s dng phng php tnh trn lp RequestContextUtils bn lun c th tm cc WebApplicationContext nu bn cn truy cp vo n. The Spring DispatcherServlet s dng bean c bit x l yu cu v a ra cc quan im thch hp. Bean l mt phn ca Spring Framework. Bn c th cu hnh chng trong WebApplicationContext ny, cng ging nh bn cu hnh bt k bean khc. Tuy nhin, i vi hu ht cc loi bean, gi tr mc nh c cung cp ban u bn khng cn phi cu hnh chng. Nhng bean ny c m t trong Bng sau y. Bean trong WebApplicationContext

SPRING MVC

Nhm BDG

Kiu bean controllers handler mappings

Gii thch Form C ca MVC X l vic thc hin mt danh sch cc b vi x l trc v sau x l v controller m s c thc thi. Gii quyt name view n view Mt locale resolver l mt thnh phn c kh nng gii quyt cc locale a client ang s dng, c th cung cp cho view. Mt Theme resolver c kh nng gii quyt cc theme ng dng web ca bn c th s dng. C chc nng x l file uploads t HTML. C chc nng khc l bn (map) xem hoc thc hin chc nng khc phc tp hn.

view resolvers locale resolver

Theme resolver

multipart file resolver handler exception resolvers

Sau khi bn thit lp mt DispatcherServlet, v yu cu n DispatcherServlet c th, cc DispatcherServlet bt u x l yu cu nh sau: WebApplicationContext l tm kim v rng buc trong cc yu cu nh l mt thuc tnh c controller v cc yu t khc trong qu trnh ny c th s dng. l b rng buc bi mc nh theo kho DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE. Cc locale resolver gii quyt yu cu cho php cc yu t trong qu trnh gii quyt cc locale s dng khi x l yu cu (rendering the view, preparing data, and so on). Nu bn khng cn phi gii quyt cc locale.

SPRING MVC

Nhm BDG

Cc theme c ngha v gii quyt yu cu cho cc yu t nh view xc nh theme s dng. Nu bn khng s dng cc theme, bn c th b qua n. Nu bn ch nh mt tp tin gii quyt nhiu ln, yu cu c kim tra cho multiparts, nu multiparts c tm thy, yu cu c bao bc trong mt MultipartHttpServletRequest ch bin tip bi cc yu t khc trong qu trnh ny. Mt b x l thch hp l tm kim. Nu x l c tm thy, cc dy chuyn thc hin lin quan n vic x l (preprocessors, postprocessors, v controllers) c thc hin chun b mt model or rendering. Nu model tr v view, view s gi kt qu ra. Nu nh model khng c tr li nn view cng khng c tr v. 1. Implementing Controllers Controller cung cp truy cp vo cc ng dng m bn thng xc nh thng qua mt service interface. Controller iu khin ngi dng nhp vo v chuyn qua model v cui cng ngi dng s vo view xem li. Spring thc hin controller mt cch rt tru tng cho php bn to ra mt lot cc controller mi. Spring 2.5 gii thiu mt m hnh lp trnh model t MVC controllers c s dng cc ch thch nh @RequestMapping, @RequestParam, @ModelAttribute. S h tr ny c sn cho c hai Servlet MVC v Portlet MVC. Controller thc hin theo kiu ny khng cn m rng cc lp c s c th hoc cc giao din c th. Hn na, h thng khng c ph thuc trc tip trn Servlet hoc Portlet API, mc d bn c th d dng cu hnh truy cp n cc c s Servlet hoc Portlet. 1.1.nh ngha Controllers vi @Controllers

SPRING MVC

Nhm BDG

1.2.Lp bn cc yu cu vi @ RequestMapping

SPRING MVC

Nhm BDG

2. Handler Mapping Trong cc phin bn trc ca Spring, ngi dng c yu cu xc nh HanderMappings trong cc ng dng web, yu cu mapping x l web thch hp. Vi s gii thiu Spring 2.5, DispatcherServlet cho php DefaultAnnotationHandlerMapping, tm kim @RequestMapping gii thch trn @Controllers. Bnh thng, bn khng cn phi thay i cc mapping mc nh, tr khi bn cn thay i cc gi tr ca thuc tnh mc nh.

Cc thuc tnh l: interceptors: danh sch ca chc nng b chn s dng, HandlerInterceptors c tho lun cc phn Interceptingrequests-the HandlerInterceptorinterface.

defaultHandler: quyn iu khin c mc nh s dng, khi mapping controller khng dn ti kt qu tm kim tng ng.

order: da vo gi tr ca thuc tnh(nh trong giao din org.springframework.core.Ordered)

alwaysUseFullPath(lun s dng ng dn tuyt i): nu ng th Spring s dng ng dn tuyt i bn trong cc servlet hin ti ty theo tm kim thch hp ca iu khin. Nu sai(mc nh) ng dn bn trong cc mappingservlet hin ti c s dng. V d: nu bn servlet ang c s dng /testing/* v lun l ng dn tuyt i, thuc tnh s lun ng th s dng /testing/viewPage.html. Ngc li nu thuc tnh l sai, s dng /viewPage.html.

urlDecode: mc nh l ng vi Spring 2.5. Nu bn so snh gia cc ng dn c m ha, thit lp ny s sai. Tuy nhin, HttpServletRequest lun lun thy nhiu ng i dng gii m.

lazyInitHandlers: cho php khi to ca b x l lazyInitHanders. Cc gi tr ny mc nh l sai.

SPRING MVC

Nhm BDG

Ch : Cc alwaysUseFullPath, urlDecode, v lazyInitHandlers l thuc tnh duy nht, c cha sn cc lp con ca org.springframework.web.servlet.handler.AbstractUrlHandlerMapping. V d sau ch ra lm sao ghi ln cc mapping mc nh v thm mt interceptor

Chn yu cu- giao din HandlerInterceptor C ch x l mapping ca Spring bao gm iu khin interceptors, n s hu ch khi bn mun p dng cc chc nng c th vi cc yu cu nht nh. Interceptors t ti cc mapping x l phi c thc hin HandlerInterceptor t org.springframework.web.servlet. Giao din ny xc nh ba phng thc: Mt l gi trc khi x l thc t c thc thi Hai l c gi sau khi x l c thc thi Ba l gi khi yu cu hon thnh hon tt.

Ba phng thc cung cp s linh hot, hon tt cc tin x l v sau x l.

preHandle(..) phng thc tr v gi tr Boolean. Bn c th s dng phng thc ny thot hoc tip tc thc hin chui iu khin. Khi phng thc ny tr v true, chui thc thi s x l tip tc, ngc li khi phng thc tr v false DispatcherServlet gi s chn v tr v mt view thch hp v khng tip tc thc hin chui interceptors

V d sau nh ngha mt nh x x l m cc mapping yu cu ph hp vi mu URL /*.form v /*.view vo mt controller c bit, editAccountFormController. Mt interceptor c thm vo chn cc yu cu ny v reroutes chuyn ngi dng n mt trang c th nu thi gian khng gia 9a.m v 6 a.m.

SPRING MVC

Nhm BDG

Bt c yu cu x l no ca mapping b chn bi cc TimeBasedAccessInterceptor. Nu thi gian hin ti nm ngoi thi gianthc thi,

SPRING MVC

Nhm BDG

ngi dng s c chuyn hng n mt tp tin HTML tnh, c ni dung thng bo: bn ch c th truy cp vo cc trang web trong thi gian quy nh. Nh cc bn c th thy, Spring chuyn i lp HandlerInterceptorAdapter lm cho n d dng hn c th m rng giao din HandlerInterceptor. 1. Resolving views Tt c framework MVC cho nhng ng dng web cung cp cch gi cc view. Spring cung cp view, nhng b phn tch cho php bn tr li model bng trnh duyt khng c nhng cng ngh c bit. Ngoi ra Spring cho php x dng JSPs, template velocity v XSLT view. Hai giao din m quan trng i vi cch Spring x l view l ViewResolver v View. ViewResolver cung cp mt mapping gia name v view thc t. Giao din View gi nhng yu cu ca handler ti mt trong nhng view.

1.1.Gii quyt cc view bng giao din ViewResolver Nh tho lun trn, nhng Implementing Controllers mi phng php handler trong iu khin Spring Web MVC cc controller phi gii quyt ti name ca view r rng(bng vic tr li mt chui, view hay ModelAndView) hay tuyt i(da vo nhng quy c). Views trong Spring c gi bi tn view v gii quyt bi view resolver . Spring a n kh nhiu cch gii quyt.

View resolvers ViewResolver AbstractCachingViewResolver Description View tru tng gii quyt bi cc caches views. Thng vi cc views cn chun b trc khi s dng. M rng cc view ny bng cch cung cp caching. Thi hnh ca ViewResolver l chp nhn cu hnh c vit XML vi cng DTD(Document Type Definitions) l

XmlViewResolver

SPRING MVC

Nhm BDG

Springs XML bean factories. Mc nh cu hnh file l /WEB-INF/views.xml. ResourceBundleViewResolver S thi hnh ca ViewResolver s s dng nhng nh ngha bean trong ResourceBundle, c ch r rng bi tn. in hnh, bn nh ngh bundle trong thuc tnh, v tr trong ng dn lp. Mc nh tn file l views.properties. Giao din ViewResolver thc thi n gin, a ra nhng quyt nh trc tip ca tn view logic ti URLs ngoi nh ngha r rng ca mapping. iu ny l ph hp vi s logic ca tn, ca cc ti nguyn view m khng rc ri. Thun li cho lp con ca UrlBasedViewResolver h tr InternalResourceView (hiu ng, Servlets, JSPs) v cc lp con nh JstlView v TilesView. Bn c th ch nh lp view cho tt c cc quan im c to ra bng cch gii quyt n vi setViewClass(..) Thun tin lp con ca UrlBasedViewResolver h tr VelocityView (hiu ng, tc ca templates) hoc FreeMaKerView, ty chnh vi cc lp con ca chng. Thc thi cc giao din ViewResolver, gii quyt da trn tn file yu cu hoc chp nhn tiu .

UrlBasedViewResolver

InternalResourceViewResourcer

VelocityViewResolver/ FreeMarkerViewResolver

ContentNegotiatingViewResolver

1.1.Chaining ViewResolvers

SPRING MVC

Nhm BDG

Spring h tr a cch gii quyt View. Bn c th gii quyt chui, v d ghi cc phng thc view c bit ty tng trng hp nht nh. Trong v d sau, cc chui ca view c hai cch gii quyt, mt l InternalResourceViewResolver, lun t ng nh v nh l gii quyt cui cng trong chui, v XmlViewResolver xc nh cc view Excel. Cc view Excel khng c h tr bi InternalResourceViewResolver.

Nu cch gii quyt r rng khng cho ra kt qu mt view, Spring s xem xt cch gii quyt khc. Nu gii quyt thm view tn ti, Spring tip tc kim tra chng cho n khi c gii quyt. Nu khng c cch gii quyt tr li mt view, Spring a ra mt ServletException. Gii quyt vn ca view tr v null nu view c th khng c tm thy. Khng phi tt c cc cch gii quyt u lm c iu ny, tuy nhin, bi trong mt s trng hp, vic gii quyt n gin l khng th pht hin c hoc khng thy tn ti. V d: InternalResourceViewResolver s dng RequestDispatcher bn trong, v l cch duy nht tm hiu xem JSP l tn ti, nhng thc thi ny ch c th thc hin mt ln. Tng t cng cho VelocityViewResolver v mt s cch khc. Kim tra Javadoc gii quyt view, xem view tn ti cha. V vy vic a ra mt InternarlResourceViewResolver trong chui mt ni khc l cui cng, kt qu trong chui khng c kim tra y , bi cc InternalResourceViewResoler s lun lun tr li view.

SPRING MVC

Nhm BDG

1.1.Chuyn n view Nh cp trc y, mt controller thng thng tr v mt view tng ng , c mt gii quyt cho mt k thut view c th. i vi cc k thut view nh l JSP c bin dch thng qua Servlet hay JSP , s thng dch ny thng c x l thng qua s kt hp ca InternalResourceViewResolver v InternalResourceView, m vn l mt tin b hay bao gm thng qua RequestDispatcher.forward cc API ca phng thc Servlet (..)hoc phng thc RequestDispatcher.include(). i vi cc cng ngh view khc, chng hn nh Velocity, XSLT, view s t cho ni dung vo tng dng. RedirectView Mt cch thc hin chuyn hng l kt qu ca controller tr v controller to v tr v mt View ca SpringRedirectView. Trong trng hp ny, DispatcherServlet khng s dng cc c ch View phn gii bnh thng. Thay v n c tr v view c, DispatcherServlet n gin ch th nhm lm vic vi RedirectView. Vn mt HttpServletResponse.sendRedirect () gi tr v cho trnh duyt ca client nh l mt HTTP chuyn hng. Tt c cc thuc tnh m hnh c th hin nh cc tham s truy vn HTTP. iu ny c ngha l cc model phi c cc i tng (thng Strings hoc cc i tng chuyn i sang mt i din String), m c th d dng chuyn i sang mt parameter. Nu truy vn vn bn HTTP bn s dng RedirectView v view l c to ra bi controller chnh n, n cnh co bn cu hnh cc URL chuyn hng c thm vo controller n khng phi l thm vo controller, nhng cu hnh cng vi tn View. 1.1.ContentNegotiatingViewResolver Cc ContentNegotiatingViewResolver khng gii quyt c chnh n m fi cn c 1 i din khc xem phn gii ca n. Chn ch View tng t nh cc i din theo yu cu ca pha client. Tn ti hai chin lc cho client yu cu mt i din t my ch.

SPRING MVC

Nhm BDG

S dng mt URI ring bit cho mi ti nguyn, thng thng bng cch s

dng mt phn m rng tp tin khc nhau trong cc URL. S dng URL tng t cho cc client xc nh v tr cc ngun lc, nhng thit lp cc tiu chp nhn yu cu HTTP vo danh sch cc loi phng tin truyn thng m n hiu c. V d, mt yu cu HTTP cho http://www.example.com/users/fred vi mt tiu Chp nhn t application / pdf yu cu mt i din ca ngi s dng PDF fred, trong khi http://www.example.com/users/fred vi mt tiu Chp nhn thit lp text / xml yu cu mt i din XML Ghi ch: h tr nhiu i din ca mt ti nguyn, Spring cung cp ContentNegotiatingViewResolver gii quyt view da trn phn m rng tp tin hoc chp nhn tiu ca yu cu HTTP. trong firefox n c c nh

- ContentNegotiatingViewResolver khng thc hin vic gii quyt View chnh n m thay vo cc delegate cho mt danh sch cc phn gii View m bn ch nh thng qua cc thuc tnh bean ViewResolvers.The ContentNegotiatingViewResolver la chn mt View thch hp x l cc yu cu bng cch so snh cc yu cu loi truyn thng (s) vi cc loi truyn thng (cn gi l Content-Type) h tr cc View lin kt vi nhau ca ViewResolvers. View u tin trong danh sch c mt Content-Type tng thch vi cc i din cho client. Nu mt View tng thch c th khng c cung cp bi cc chui ViewResolver, sau danh sch cc im quy nh thng qua cc thuc tnh s c DefaultViews ly kin.

SPRING MVC

Nhm BDG

Ch : Nu trong ContentNegotiatingViewResolver danh sch cc ViewResolvers khng c cu hnh mt cch r rng, n s t ng s dng bt k ViewResolvers quy nh trong ng dng Cc m iu khin tng ng tr v mt Atom, ngun cp d liu RSS cho mt URI c dng

SPRING MVC

Nhm BDG

http://localhost/content.atom hoc http://localhost/content:

1. Using locales Hu ht cc b phn ca kin trc quc t ca Spring c h tr, cng nh khun kh Spring MVC web. DispatcherServlet cho php bn t ng gii quyt cc thng tin s dng locales ca client. iu ny c thc hin vi cc i tng LocaleResolver.

Khi yu cu n, DispatcherServlet s tm mt LocaleResolver, v nu n tm thy mt LocaleResolver, n c gng s dng LocaleResolver t 1 locale S dng phng php RequestContext.getLocale (), bn c th lun ly cc locale c gii quyt bng cc LocaleResolver. Ngoi phn gii locales t ng, bn cng c th nh km mt s chn x l, thay i locale trong nhng hon cnh c th, v d, da trn vo mt tham s trong yu cu.

V tr phn gii v s chn c nh ngha ti cc gi org.springframework.web.servlet.i18n v c cu hnh trong ng dng ca bn theo cch thng thng. y l mt s chn lc ca LocaleResolver trong Spring.

SPRING MVC

Nhm BDG

1.1.AcceptHeaderLocaleResolver B LocaleResolver kim tra tiu accept-language trong yu cu c gi ca client (V d, mt trnh duyt web). Thng thng lnh vc ny tiu cha cc locale ca h iu hnh ca client. 1.1.CookieLocaleResolver Nu locale c ch nh th LocaleResolver ny c th thy c s tn ti ca Cookie trn cc client bng vic kim tra Cookie . Nu vy, n s dng locale quy nh. S dng cc tnh cht ca LocaleResolver ny, bn c th ch nh tn ca cookie cng nh di ti a. Di y mt v d v xc nh mt CookieLocaleResolver.

Thuc tnh cookieName

Bng Nhng thuc tnh ca CookieLocaleResolver Mc nh M t classname + LOCALE Integer.MAX_INT Tn ca cookie Thi gian ti a mt cookie s li lu di i vi client. Nu -1 l quy nh, cc cookie s khng tn ti, n s ch c sn cho n khi client tt trnh duyt ca mnh. Gii hn kh nng hin th ca cc tp tin cookie cho

cookieMaxAge

cookiePath

SPRING MVC

Nhm BDG

mt phn no ca trang web. Khi cookiePath c quy nh, cc cookie s ch c hin th cho con ng v cc ng dn bn di. 1.1.SessionLocaleResolver SessionLocaleResolver cho php bn ly a im locale t session c th c kt hp vi yu cu ca ngi dng. 1.1.LocaleChangeInterceptor Bn c th cho php thay i ca locale bng cch thm cc LocaleChangeInterceptor mt trong cc s Handler .N s pht hin mt s yu cu v thay i locale. N gi setLocale () trn LocaleResolver cng tn ti trong trng hp . V d sau y cho thy rng cch gi n tt c cc ngun ti nguyn *.view c cha mt tham s siteLanguage c t tn s thay i local. V vy, v d, mt yu cu cho cc URL, http://www.sf.net/home.view?siteLanguage=nl s thay i ngn ng trang web thnh ting H lan.

SPRING MVC

Nhm BDG

1. Using themes 1.1.Tng quan v themes Bn c th p dng Spring Web MVC framework themes thit lp khun kh tng th ci nhn v cm nhn ca ng dng ca bn, qua nng cao kinh nghim ngi dng. Theme l tp hp cc ti nguyn tnh, thng l phong cch sheets and images, c nh hng n phong cch trc quan ca ng dng.

1.1.nh ngha themes s dng cc theme trong ng dng web ca bn, bn phi thit lp mt giao din thc hin org.springframework.ui.context.ThemeSource. Cc giao din WebApplicationContext m rng ThemeSource nhng u quyn nhng trch nhim (ca) n cho mt phin thc hin. Theo mc nh cc y quyn s l mt org.springframework.ui.context.support.ResourceBundleThemeSource thc hin c tnh cht ti file t th mc gc ca classpath ny. s dng thc hin

SPRING MVC

Nhm BDG

ThemeSource ty chnh hoc cu hnh cc tin t tn c s ca cc ResourceBundleThemeSource, bn c th ng k mt bean trong tng trng hp ng dng vi tn themeSource c bo lu. Tng trng hp ng dng web t ng pht hin mt bean vi tn v s dng n. Khi s dng ResourceBundleThemeSource, theme c nh ngha trong mt tp tin thuc tnh n gin. Cc thuc tnh tp tin lit k cc ngun ti nguyn to nn theme. y l mt v d: styleSheet=/themes/cool/style.css background=/themes/cool/img/coolBg.jpg Cc kho ca cc thuc tnh l tn tham chiu n cc themes element t view code. i vi JSP, bn thng lm c iu ny bng cch s dng Spring: theme custom tag,tng t nh Spring: message tag.

Theo mc nh, ResourceBundleThemeSource s dng empty base name prefix. Kt qu l, cc thuc tnh tp tin c ti t th mc gc ca classpath ny. V vy, bn s t cc nh ngha theme cool.properties trong mt th mc gc ca classpath, v d, trong / WEB-INF/classes. ResourceBundleThemeSource s dng cc gi Java resource bundle chun ti c ch, cho php quc t ha y ca theme. V d, chng ta c th c mt WEB-INF/classes/cool_nl.properties / , cc ti liu tham kho mt hnh nn c bit vi vn bn ca H Lan v n. 1.1.Phn gii Theme Sau khi bn xc nh theme, nh trong phn trc, bn quyt nh theme s dng. Cc DispatcherServlet s tm mt bean c tn themeResolver tm ra s thi hnh ThemeResolver s dng. Mt b phn tch theme lm vic trong nhiu cch

SPRING MVC

Nhm BDG

tng t nh LocaleResolver. N nhn din cc theme s dng cho mt yu cu c th v cng c th thay i theo yu cu ca theme. Vic phn gii theme sau y c cung cp bi Spring: Bng 15.5. S thi hnh ThemeResolver Lp FixedThemeResolver M t FixedThemeResolverSelects l mt theme c nh, thit lp bng cch s dng cc thuc tnh defaultThemeName. Theme ny c duy tr trong HTTP session ca ngi dng. N ch cn c thit lp mt ln cho mi session, nhng khng tn ti gia session. Cc theme c chn l lu tr trong mt cookie trn client.

SessionThemeResolver

CookieThemeResolver

Spring cng cung cp mt ThemeChangeInterceptor cho php thay i theme trn tt c cc yu cu vi mt request parameter n gin. 1. Springs multipart(fileupload) support 1.1.Gii thiu Spring c tch hp trong h tr nhiu phn x l tp tin ti ln trong cc ng dng web. Bn kch hot tnh nng ny nhiu ln h tr vi cc i tng MultipartResolver, c xc nh trong gi org.springframework.web.multipart. Spring cung cp MultipartResolver s dng vi Commons FileUpload.

Theo mc nh,Spring khng x l nhiu multipart, bi v mt s nh pht trin mun x l chnh multiparts. Bn cho php x l nhiu multipart d liu Spring bng cch thm mt multipart resolver cc ng dng web. Mi yu cu c kim tra xem nu n c cha nhiu multipart. Nu khng c nhiu multipart c tm thy, cc yu cu tip tc. Nu mt multipart c tm thy trong yu cu, cc MultipartResolver c khai bo trong context ca bn l c s dng. Sau ,

SPRING MVC

Nhm BDG

cc thuc tnh nhiu multipart trong yu cu ca bn c x l nh cc thuc tnh khc. 1.1.S dng MultipartResolver V d sau y cho thy lm th no s dng CommonsMultipartResolver:

Tt nhin bn cng cn phi t cc jar thch hp trong classpath ca bn lm vic vi b phn tch nhiu phn. Trong trng hp ca CommonsMultipartResolver, bn cn phi s dng commons-fileupload.jar.

Khi Spring DispatcherServlet nhn din mt yu cu nhiu multipart, n kch hot b phn tch c khai bo trong resoler (ca) cc bn v s trao tay ca bn trn yu cu. Gii quyt sau kt thc bao bc dng HttpServletRequest thnh mt MultipartHttpServletRequest tp tin h tr nhiu phn ti ln. S dng MultipartHttpServletRequest, bn c th nhn c thng tin v cc multiparts c theo yu cu ny v thc s c c quyn truy cp vo cc tp tin nhiu ln mnh trong b controller ca bn.

1.1.X l mt tp tin ti ln trong mt biu mu Sau khi MultipartResolver hon thnh, yu cu c x l nh bt k cng vic khc. u tin, to mt form vi mt u vo tp tin s cho php ngi dng ti ln mt form. Cc thuc tnh m ha (Enctype = "multipart / form-data") cho php trnh duyt bit lm th no m ha cc hnh thc theo yu cu nhiu multipart

SPRING MVC

Nhm BDG

Bc tip theo l to ra mt controller x l cc tp tin ti ln. Controller ny tng t nh mt normal annotated @Controller, ngoi tr vic chng ti s dng MultipartHttpServletRequest hoc MultipartFile trong cc method parameters:

Lu @RequestParam method parameters nhp vo khai bo trong form. Trong v d ny, khng c g c thc hin vi byte[], nhng trn thc t bn c th lu n vo c s d liu, lu tr n trn h thng tp tin v nhiu hn na. Cui cng, bn s phi khai bo b controller and the resolver trong context ng dng.

SPRING MVC

Nhm BDG

1. Handling exceptions 1.1.HandlerExceptionResolver Spring HandlerExceptionResolvers gim thiu sai st ca trng hp exception bt ng xy ra khi bn yu cu c x l bi mt controller no ph hp yu cu. HandlerExceptionResolvers phn no ging vi s ngoi tr bn c th nh ngha trong web.xml trong b m t ng dng web. Tuy nhin, h cung cp mt cch linh hot hn x l cc trng hp exception. H cung cp thng tin v nhng x l c thc hin khi exception c a ra. Hn na, mt chng trnh x l exception cho bn ty chn hn cho phn ng thch hp trc khi yu cu c chuyn tip n mt URL (kt qu cui cng nh khi bn s dng s exception c th servlet).

Bn cnh vic thc hin cc giao din HandlerExceptionResolver, ch l vn thc hin phng thc resolveException (exception, Handler) v tr v mt ModelAndView, bn cng c th s dng cc SimpleMappingExceptionResolver. Resolver ny cho php bn ly tn class ca bt k trng hp exception c th c a ra v s ny tn cho view. y l chc nng tng ng vi cc tnh nng lp s exception t Servlet API, nhng n cng c th thc hin 1 s r rng hn ca cc exception t nhng x l khc nhau.

Theo mc nh, DispatcherServlet ng k vic DefaultHandlerExceptionResolver. B phn tch ny gii quyt mt s tiu chun x l ca Spring MVC exceptions bng cch thit lp mt m phn hi trng thi c th: Exception M Tnh trng HTTP

SPRING MVC

Nhm BDG

ConversionNotSupportedException HttpMediaTypeNotAcceptableException HttpMediaTypeNotSupportedException HttpMessageNotReadableException HttpMessageNotWritableException HttpRequestMethodNotSupportedException MissingServletRequestParameterExceptio NoSuchRequestHandlingMethodException TypeMismatchException

500 (Internal Server Error) 406 (Not Acceptable) 415 (Unsupported Media Type) 400 (Bad Request) 500 (Internal Server Error) 405 (Method Not Allowed) 400 (Bad Request) 404 (Not Found) 400ad Request)

1.1.@ExceptionHandler Mt thay th cho cc giao din HandlerExceptionResolver l ch thch @ExceptionHandler. Bn s dng cc ch thch phng php @ExceptionHandler trong vng controller mt xc nh cc phng php c gi khi mt Exception ca mt loi hnh c th c a ra trong khi thc hin cc phng php controller. V d:

S gi phng php "handlerIOException ' khi java.io.IOException c a ra. Cc gi tr @ExceptionHandler c th c thit lp mt lot cc loi exception. Nu exception c a vo ph hp vi mt trong cc loi trong danh sch, sau cc phng php ch thch vi cc kt hp @ ExceptionHandler s c gi li. Nu gi tr annotation khng c thit lp sau lit k cc loi exception nh cc i s phng php c s dng.

SPRING MVC

Nhm BDG

Cng ging nh cc phng php controller methods annotated vi mt ch thch @RequestMapping, phng php i s v gi tr tr v ca phng php @ExceptionHandler l rt linh hot. V d, HttpServletRequest c th c truy cp trong mi trng Servlet v cc PortletRequest ti mi trng Portlet. Cc kiu tr v c th l mt String.

1. Convention over configuration support i vi nhiu project, vic gn kt thit lp cc quy c v nhng mc nh hp l ch l nhng g m chng cntheme v quy c trn cu hnh ny by gi c h tr r rng trong Spring Web MVC. iu ny c ngha l nu bn thit lp cc quy c t tn tng t nh vy, v cn bn bn c th cut down 1 trong s nhng cu hnh m i hi ci t b iu khin nh x, xem li cc view, v d nh ModelAndView, Vic h tr quy c trn cu hnh l 3 vn ct li ca MVCmodel, view v controller 1.1.Controller-ControllerClassNameHandlermapping Class ControllerClassNameHandlerMapping c b sung cho HandlerMapping, s dng quy c xc nh nh x gia cc request URL v cc Controller truy cp cc request

y l on m gi t file cu hnh Spring Web MVC

SPRING MVC

Nhm BDG

ControllerClassNameHandlerMapping tm ra cc x l khc nhau (hoc Controller), beans c nh ngha trong cc ng dng ng cnh v lm tot ln tn Controller c nh ngha nh x x l ca n. Theo cch , cc nh x ViewShoppingCartController n /viewshoppingcart* request WelcomeController maps to the /welcome* request URL HomeController maps to the /home* request URL IndexController maps to the /index* request URL RegisterController maps to the /register* request URL Trong trng hp cc lp x l MultiActionController, cc nh x c to ra hi phc tp hn. Tn cc Controller trong v d sau c cho rng n l s b sung cho MultiActionController: AdminController maps to the /admin/* request URL CatalogController maps to the /catalog/* request URL 1.1.The Model ModelMap (ModelAndView) Class ModelMap v c bn l 1 Map c th add thm cc object hin th trong 1 View tham gia vo theo 1 quy c t tn chung. Xem thm cc b sung Cotroller; ch rng cc object c thm vo ModelAndView khng c bt k tn kt hp no c ch nh

SPRING MVC

Nhm BDG

Class ModelAndView s dng 1 class ModelMap l s b sung ca 1 Map ty chn c th t ng generate 1 key cho 1 object c add vo n. Cc chin lt xc nh add thm 1 object l, trong trng hp object v hng nh l User, dng tn ngn ca 1 class ca 1 class object. Cc v d sau y l nhng ci tn c to ra cho cc object v hng t trong 1 ModelMap Trng hp x.y.User c add th tn user s c to ra. Trng hp x.y.Registration c add th tn registration s c to ra. Trng hp x.y.Foo c add th tn foo c to ra. Trng hp java.util.HashMap c add th tn hashMap c to ra. Trong trng hp ny c th bn mun r rng hn v tn bi v v trc gic th hashMap nh hn. Add null th kt qu tr ra s l IllegalArgumentException c a ra. Nu nh object (hoc cc object) c add null th chng ta cng cn lm r v tn. to ra 1 name sau khi add thm 1 object Set, List hoc array l tham kho trong collection, ly tn ngn class ca i tng u tin trong collection v s dng n gn vi tn List . V d: 1 mng x.y.User[] vi 1hoc nhiu phn t x.y.User c add s c tn userList c to. 1 mng x.y.Foo[] vi 1 hoc nhiu phn t x.y.User c add s c tn fooList c to ra. Mt java.util.ArrayList vi 1 hoc nhiu phn t x.y.User c add s c tn userList c to.

SPRING MVC

Nhm BDG

Mt java.util.HashSet vi 1 hoc nhiu phn t x.y.Foo c add s c tn fooList c to. Mt java.util.ArrayList rng s khng c add vo tt c (trong effect, addObject(..) khi gi v c bn s l 1 no-op).

1.1.The View RequestToViewNameTranslator

Khi khng c tn View logic th Giao din RequestToViewNameTranslator s xc nh 1 cch r rng. DefaultRequestToViewNameTranslator ch l 1 lp b sung. Cc nh x DefaultRequestToViewNameTranslator yu cu cc URL n tn cc view logic, nh trong v d:

SPRING MVC

Nhm BDG

Ch trong vic thc hin b sung cc phng thc handleRequest(..) khng View hoc tn view logic bao gi cng c t vo ModelAndView v c tr v. Cc DefaultRequestToViewNameTranslator c thao tc vi vic to ra 1 tn view logic t URL ca yu cu. Trong trng hp pha trn cc RegistrationController c dng lin kt vi cc ControllerClassNameHandlerMapping, mt request URL ca http://localhost/registration.html tr v kt qu trong tn 1 view local ca registration bt u c to ra bng DefaultRequestToViewNameTranslator. Tn View logic ny sau c gii quyt bn trong view /WEBINF/jsp/registration.jsp bng bean InternalResourceViewResolver.

1. Etag support Mt ETag (entity tag) l 1 header phn hi HTTP c tr v bi 1 lnh HTTP/1.1 ca web server, dng xc nh r nhng thay i trong ni dung ti 1 URL c a ln. 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 dng header ny trong GET tip theo, trong 1 header If-None-Match. Nu ni dung khng thay i th server tr v 304: No Modified.

SPRING MVC

Nhm BDG

H tr cho ETag th c cung cp bi b lc servlet ShallowEtagHeaderFilter. N l 1 Servlet Filter, v do c th c s dng kt hp bt k framework web no. B lc ShallowEtagHeaderFilter to ra ci gi l ETag cn (tri ngc vi ETag su, s tm hiu sau). B lc lu tr ni dung tr v JSP (hoc ni dung khc), to ra 1 MD5 bm trn , v tr v nh 1 header Etag trong phn hi. Ln sau, 1 client gi 1 yu cu vi ti nguyn tng t nh th, n s dng bm gi tr If-None-Match. B lc d tm gi tr ny , tr v li 1 view v so snh gia 2 ln bm. Nu chng bng nhau, s tr v gi tr 304. B lc ny s khng lu cc x l ly tha bi v view hy cn c hon tr li. N ch lu li bng thng v phn hi tr li khng c gi tr v wire Bn c th cu hnh ShallowEtagHeaderFilter trong Web.xml :

1. Configuring Spring MVC Spring 3 gii thiu mvc XML cu hnh namespace lm n gin ha qu trnh ci t Spring MVC vo trong ng dng web ca bn. Thay v ng k cc bean cp thp nh l AnnotationMethodHandlerAdapter, n gin l chng ta c th dng namespace v nhn g thit lp cp cao. Cc namespace mvc bao gm 3 tag: mvc: annotation-driven, mvc:interceptors v mvc: view-controller. Mi tag ny cghi di y v trong lc XML: 1.1.mvc:annotation-driven

SPRING MVC

Nhm BDG

1.2.mvc:interceptors

Mt v d v vic ng k ngn chn c gii hn 1 ng dn URL c th:

1.1.mvc:view-controller

1.2.mvc:resources

SPRING MVC

Nhm BDG

1.3.mvc:default-servlet-handler

VI. HNG DN DEMO SPRING


1. Ci t Spring IDE Spring IDE l mt plug-in eclipse gip pht trin ng dng Spring. Trc tin chng ta s thy lm th no ci t cc Spring IDE v sau chng ta s to ra d n Spring u tin .

ci t Spring IDE , Go to Help => Eclipse Marketplace=> trong tab search , nhp Spring => click search. Sau khi search , s thy nh hnh sau :

SPRING MVC

Nhm BDG

Click button Install ci t Spring IDE t Eclipse Marketpalce.

1.

Download framework mi nht t

http://www.springsource.org/download
Sau khi truy cp vo trang http://www.springsource.org/download , nhn vo nt Download nh hnh v

SPRING MVC

Nhm BDG

Sau nhn vo More

SPRING MVC

Nhm BDG

Chn link download 2 ci framework : spring-framework-2.5.6-with-dependencies.zip spring-framework-2.5.6-with-docs.zip

Sau khi download xong ,ta gii nn 2 tp tin va download. S nhn c 2 th mc : spring-framework-2.5.6-with-dependencies v spring-framework-2.5.6-with-docs. Hai th mc ny dng add th vin vo trong project ca chng trnh .

SPRING MVC

Nhm BDG

SPRING MVC

Nhm BDG

1.

To project

SPRING MVC

Nhm BDG

1.

t tn project

SPRING MVC

Nhm BDG

2.

To package Helloword

SPRING MVC

Nhm BDG

Chn Finish.

3.

To Class Main v Hello

SPRING MVC

Nhm BDG

To Class Main :

SPRING MVC

Nhm BDG

To Class Hello

SPRING MVC

Nhm BDG

4.

Add th vin cho project :

Chn tn ca project , click phi chn Properties

SPRING MVC

Nhm BDG

Sau : Chn vo Add External JARs nh hnh v :

SPRING MVC

Nhm BDG

SPRING MVC

Nhm BDG

Tm th mc spring-framework-2.5.6 c ti nh ni ban u

SPRING MVC

Nhm BDG

Chn spring.jar , sau chn Open

Tip tc thao tc chn vo Add External JARs 1 ln na Ta lm cc bc nh hnh (c khoanh trn mu )

SPRING MVC

Nhm BDG

SPRING MVC

Nhm BDG

Chn commons-logging.jar

SPRING MVC

Nhm BDG

Sau 2 bc thc hin

SPRING MVC

Nhm BDG

Chn OK. Khi add th vin thnh cng , project s c cu trc nh sau :

SPRING MVC

Nhm BDG

5.

To file Hello.xlm

t tn file

SPRING MVC

Nhm BDG

Chn Finish.

SPRING MVC

Nhm BDG

6.

Sau khi thc hin cc bc to Class ,file xml v add th vin . Cu

trc Project s nh sau :

7.

Ni dung cc file trong cu trc


a. Hello.java

SPRING MVC

Nhm BDG

b. Main.java

SPRING MVC

Nhm BDG

c. Hello.xml

SPRING MVC

Nhm BDG

1.

chy kt qu : Nhn ctrl + f11 hoc chn class Main =>Run As =>

Java Application.

12 . Kt qu sau khi chy chng trnh :

SPRING MVC

Nhm BDG

-----HT----

You might also like