Upload
vinhitbk
View
57
Download
0
Tags:
Embed Size (px)
Citation preview
Spring MVC
Mc lc
1 Spring Framework. ....................................................................................................... 1
1.1 Gii thiu. .............................................................................................................. 1
1.2 Cc module chnh................................................................................................... 1
1.2.1 Core Container. ............................................................................................... 2
1.2.2 Spring Context/Application Context. .............................................................. 2
1.2.3 Spring AOP (Aspect Oriented Programming). ............................................... 2
1.2.4 Spring DAO..................................................................................................... 3
1.2.5 Spring ORM. ................................................................................................... 3
1.2.6 Spring Web module. ........................................................................................ 3
1.2.7 Spring MVC Framework. ................................................................................ 4
1.3 L do s dng. ....................................................................................................... 4
2 Spring Web MVC. ........................................................................................................ 4
2.1 M hnh MVC. ....................................................................................................... 4
2.1.1 Model (M hnh). ............................................................................................ 5
2.1.2 View (khung nhn) : ........................................................................................ 5
2.1.3 Controller (B iu khin) : ............................................................................ 5
2.2 Spring MVC. .......................................................................................................... 6
2.3 Cc khi nim lin quan. ........................................................................................ 6
2.3.1 Inversion of Control Container (IoC container) : ............................................ 6
2.3.2 Bean : ............................................................................................................... 7
2.3.3 Dependency Injection (DI) : ............................................................................ 7
2.3.3.1 Setter Injection: ........................................................................................ 9
2.3.3.2 Constuctor injection: .............................................................................. 10
2.3.4 Application Context : .................................................................................... 11
2.3.4.1 ClassPathXmlApplicationContext: ........................................................ 12
2.3.4.2 FileSystemXmlApplicationContext: ...................................................... 12
2.3.4.3 XmlWebApplicationContext: ................................................................. 12
2.4 C ch x l Request-Respone. ........................................................................... 12
2.4.1 Gii thch s lung d liu : ................................................................... 13
2.4.2 Configuring DispatcherServlet : ................................................................... 13
2.4.3 Configuring a context loader : ....................................................................... 15
2.4.4 Building the controller : ................................................................................ 16
2.4.5 Introducing ModelAndView : ....................................................................... 17
2.4.6 Configuring the controller bean: ................................................................... 18
2.5 Truy xut d liu trong Spring MVC. ................................................................. 18
1
1 Spring Framework.
1.1 Gii thiu.
Spring Framework, hay ngn hn l Spring, l mt framework m ngun m c
vit bng Java. N c xem nh l mt gii php kin trc tt nht ca Java EE
hin nay.
Theo thit k, b khung hnh ny gii phng lp trnh vin dng Java, cho php h
nhiu quyn t do hn.
ng thi cung cp mt gii php tin li, y dn chng bng ti liu, d dng
s dng, ph hp vi nhng thc hnh thng dng trong cng ngh phn mm.
1.2 Cc module chnh.
Spring ng vai tr l tng business.
2
Spring c t chc thnh 7 modules :
1.2.1 Core Container.
Core package l phn c bn nht ca framework, cung cp nhng c tnh IoC
(Inversion of Control: Khung cha o ngc khng ch) v Dependency Injection.
Khi nim c bn l BeanFactory - ci t factory pattern cho php bn mc ni s
ph thuc gia cc i tng trong file cu hnh.
1.2.2 Spring Context/Application Context.
Pha trn ca Core package l Context package - cung cp cch truy cp i tng.
Context package kt tha cc c tnh t bean package v thm vo chc nng a
ngn ng (I18N), truyn s kin, resource-loading,...
1.2.3 Spring AOP (Aspect Oriented Programming).
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
3
Spring AOP chng ta c th tch hp declarative transaction management vo trong
ng dng m khng cn da vo EJB component.
Spring AOP module cng a lp trnh metadata vo trong Spring. S dng ci ny
chng ta c th thm annotation (ch thch) vo source code hng dn Spring v
lm th no lin h vi aspect (Kha cnh khc).
1.2.4 Spring DAO.
DAO package cung cp cho tng JDBC, b bt nhng coding di dng ca JDBC v
chuyn i m li c xc nh bi database vendor. JDBC package cung cp cch
lp trnh tt nh declarative transaction management.
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.
1.2.5 Spring ORM.
ORM package cung cp tng tch hp vi object-relational mapping API bao gm:
JDO, Hibernate, iBatis.
S dng ORM package bn c th s dng tt c cc object-relational mapping
kt hp vi tt c cc c tnh ca Spring nh declarative transaction management.
1.2.6 Spring Web module.
Spring Web package cung cp c tnh ca web nh: chc nng file-upload, khi to
IoC container s dng trnh lng nghe serlvet v web-oriented application context.
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
4
cng vic iu khin nhiu request v gn cc tham s ca request vo cc i tng
domain.
1.2.7 Spring MVC Framework.
Spring Framework l mt ng dng m ngun m ph bin cho Java EE pht trin d
dng hn. N bao gm mt container, mt framework cho cc thnh phn qun l,
v mt b cc snap-in dch v cho cc giao din ngi dng web, giao dch,. Mt
phn ca Spring Framework l Spring Web MVC, mt m hnh MVC m rng to
cc ng dng web.
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. . Spring
MVC framework cung cp s phn bit r rng gia domain model v web form.
1.3 L do s dng.
Tt c cc framework c tch hp rt tt vo Spring.
Hot ng rt tt khi p dng theo kin trc MVC.
S dng c ch plug-in.
Kt hp rt tt vi cc O/R (object-relational) Mapping frameworks nh l Hibernate.
D Testing ng dng.
t phc tp hn so vi cc framework khc.
Cng ng ngi s dng rt nhiu, nhiu sch mi c xut bn.
2 Spring Web MVC.
2.1 M hnh MVC.
5
2.1.1 Model (M hnh).
M hnh gm cc lp java c nhim v:
- Biu din data v cho php truy cp ti get v set data trong (JAVABEAN),
Thng th phn layer ny m phng 1 cch y i tng t th gii thc.
- Nhn cc yu cu t khung nhn
- Thi hnh cc yu cu (tnh ton, kt ni CSDL )
- Tr v cc gi tr tnh ton theo yu cu ca Controller
2.1.2 View (khung nhn) :
Bao gm cc m tng t nh JSP, HTML, CSS, XML, Javascript, JSON hin
th giao din ngi dng, cc d liu tr v t Model thng qua Controller
2.1.3 Controller (B iu khin) :
ng b ho gia Khung nhn v M hnh. Tc l vi mt trang JSP ny th s tng
ng vi lp java no x l n v ngc li, kt qu s tr v trang jsp no.N ng
vai tr iu tit gia View v Model.
Nh vy, chng ta c th tch bit c cc m java ra khi m html. Do vy, n
gii quyt c cc kh khn nu ra trong M hnh 1. Ngi thit k giao din v
ngi lp trnh java c th mang tnh cht c lp tng i.
6
Vic debug hay bo tr s d dng hn, vic thay i cc theme ca trang web cng d
dng hn
2.2 Spring MVC.
Framework Spring nh thng cha nh v h tr nhiu framework v cc th vin.
N cho php cc nh pht trin trn v kt hp nhiu framework khi pht trin v
trin khai cc ng dng. Cc Spring MVC c nhng li th t Spring framework v
cung cp mt ln tt nht cho framework v hiu qu cho s pht trin ca cc ng
dng web.
Cc MVC Spring l mt framework pht trin web da trn cc mu thit k MVC
(Model View Controller). Cc tnh nng ca framework Spring MVC l Pluggable
cng ngh View v Injection dch v vo iu khin.
2.3 Cc khi nim lin quan.
2.3.1 Inversion of Control Container (IoC container) :
Hai package: org.springframework.beans v
IProcess
AProcess BProcess
Service
7
org.springframework.context cung cp IoC container cho Spring framework. Giao
tip BeanFactory cung cp k thut cu hnh nng cao, c kh nng qun l cc i
tng.
Giao tip ApplicationContext k tha t BeanFactory v thm mt vi chc nng
khc nh tch hp vi c tnh Spring AOP, truyn s kin, application context nh
WebApplicationContext s dng trong ng dng web.
Hiu chnh cc components ca chng trnh v qun l vng i (lifecycle) ca cc
i tng Java.
2.3.2 Bean :
Cc i tng trong ng dng c qun l bi IoC container c gi l cc bean.
Mt bean th n gin l mt i tng c khi to, phn pht v c qun l bi
IoC container. S ph thuc gia chng c phn nh trong configuration metadata
c s dng bi container.
Giao tip org.springframework.beans.factory.BeanFactory l IoC container chu trch
nhim cha, khi to, qun l v mc ni s ph thuc gia cc bean.
Mt ci t (k tha) ca BeanFactory l XmlBeanFactory - nhn XML configuration
metadata v s dng n cu hnh cho ng dng.
Configuration metadata c nh dng XML (hoc properties), c s dng vit
cc bean definitions cho cc bean m bn mun IoC container qun l.
mc c bn nht th cu hnh IoC container phi cha t nht mt bean m
container phi qun l. Khi s dng XML-based configuration metadata, cc bean
ny c cu hnh nh mt hoc nhiu element bn trong element. Cc bean ny
tng ng vi cc i tng c to trong ng dng.
2.3.3 Dependency Injection (DI) :
Kim sot ng dng, Lin kt cc i tng li vi nhau.
8
Tt c thng tin ng dng c cu hnh trong mt file xml do d d dng thay i ,
m rng ng dng nh l mt kin trc plug-in.
i tng A to ra i tng B,C ph thuc vo A nhng khng lin kt cht ch vi
A.
Object A
Object B
Object C
9
Mt i tng A cha cc phng thc setter accept interfaces to objects B and C.
iu ny c th cng t c vi cc hm trong i tng A chp nhn cc i
tng B v C
L cc i tng nh ngha s ph thuc ca chng thng qua tham s ca phng
thc khi to (constructor) hoc cc thuc tnh c thit lp trn th hin (instance)
sau khi n c khi to hoc tr v t phng thc factory. Sau l cng vic ca
container, n s o ngc s ph thuc khi n to bean. Do n c tn l
Inversion of Control (IoC).
C hai bin th chnh ca DI l: Setter Injection v Constructor Injection.
2.3.3.1 Setter Injection:
Cho on code sau :
creates
creates
Object A
Object B
10
on code trn tng ng vi on code sau :
Person person = new Person();
person.setEmail([email protected]);
Khi to i tng Person v gn gi tr email cho n. c nhn ra bi phng thc
setter trn bean sau khi triu gi phng thc khi to khng tham s hoc phng
thc static factory khng tham s khi to bean.
2.3.3.2 Constuctor injection:
c nhn ra bng cch triu gi mt phng thc khi to vi mt s tham s.
Mt bin th khc thay th cho constructor l s dng phng thc static factory
tr v th hin ca i tng.
11
/data/file1.data
Gii thch on code trn :
FileDataReader fileDataReader = new FileDataReader(/data/file1.data);
DataProcessor fileDataProcessor = new DataProcessor(fileDataReader);
2.3.4 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:
- gii quyt text message, bao gm h tr internationlization.
- cch chung load file resource.
- cc s kin bean c ng k nh cc trnh lng nghe.
C 3 cch s dng ci t Application Context:
12
2.3.4.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.3.4.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");
2.3.4.3 XmlWebApplicationContext:
N s load cc nh ngha context t XML file trong ng dng web.
2.4 C ch x l Request-Respone.
Cng ging nh cc java-base MVC FrameWork khc Spring MVC cng phi
requests thng qua mt front controller servlet. Mt b front controller servlet i
din duy nht chu trch nhim v yu cu cc thnh phn khc ca mt ng dng
13
thc hin vic x l thc t. Trong trng hp ca Spring MVC, DispatcherServlet l
b iu khin pha trc.
Mt Request c gi bi DispatcherServlet n iu khin (c chn thng qua
mt bn x l). Mt khi iu khin kt thc, yu cu sau c gi xem (
l la chn thng qua ViewResolver ) lm cho u ra.
2.4.1 Gii thch s lung d liu :
1. Request c gi n DispatcherServlet .
2. DispatcherServlet gi yu cu n Handler Mapping ( Mt bn cu hnh URL )
xc nh controller no s x l yu cu ny.
3. DispatcherServlet gi yu cu n Controller sau khi bit c Controller no s x
l yu cu. Nu yu cu cn truy xut c s d liu th Controller s y nhim cho
mt business logic hay nhiu hn mt service Objects (MODEL) ly thng tin v
gi d liu v cho Controller lc ny Controller ng gi m hnh d liu v tn ca
mt view s c ti ln thnh i tng ModelAndView.
4. Gi ModelAndView c gi tr v DispatcherServlet.
5. DispatcherServlet gi gi ModelAndView cho ViewResolver tm xem trang web
(JSP) no s c load ln. DispatcherServlet load trang web ln cng vi d liu
ca n.
2.4.2 Configuring DispatcherServlet :
DispatcherServlet ng vai tr nh tri tim ca Spring MVC. Mt servlet c chc
nng ging nh Spring MVCs front controller. Ging nh bt k servlet no,
DispatcherServlet phi dc cu hnh trong web.xml file.
roadrantz
org.springframework.web.servlet.DispatcherServlet
14
1
Theo mc nh, khi DispatcherServlet c np, n s ti cc ng dng Spring context t
file XML c tn da vo tn ca servlet.
Trong trng hp ny, v servlet c tn roadrantz, DispatcherServlet s c gng ti
cc ng dng context t mt file c tn roadrantz-servlet.xml.
Sau , bn phi ch ra nhng g cc URL s c x l bi cc DispatcherServlet.
Thm sau y vo web.xml cho DispatcherServlet x l tt c
cc URL m kt thc bng .html:
roadrantz
*.htm
Trong thc t, nn chia ng cnh ng dng ca bn qua lp ng dng, nh th hin
trong hnh sau.
Phn chia mt ng dng thnh cc lp ring bit sch s phn chia trch
nhim. lp An ninh (Security Layer) ng cht nhng ng dng, lp web-layer
15
tp trung vo tng tc ngi dng, Service Layer tp trung vo business logic,
v Persistence Layer c lin quan n c s d liu.
2.4.3 Configuring a context loader :
m bo rng tt c cc file cu hnh c np, bn s cn phi cu hnh mt
Context Loader trong tp tin web.xml ca bn. Mt b Context Loader cu hnh
Ngoi cc tp tin trong DispatcherServlet. Vic ph bin nht Context Loader c
s dng l mt servlet listener gi l servlet ContextLoaderListener c cu hnh
trong web.xml nh sau:
org.springframework.
web.context.ContextLoaderListener
Vi ContextLoaderListener khi cu hnh, bn s cn phi ni cho n v tr ca Spring
cu hnh files ti. Nu khng quy nh khc, cc bi cnh b np s tm mt file
cu hnh Spring / WEB-INF/applicationContext.xml. Nhng v tr ny khng thch
hp chia nh cc ng cnh ng dng trn lp ng dng, do , c th bn s mun
ghi mc nh ny.
Bn c th ch nh mt hoc nhiu file cu hnh Spring cho b np ng cnh ti ,
bng cch thit lp cc thng s contextConfigLocation trong bi cnh servlet:
contextConfigLocation
/WEB-INF/roadrantz-service.xml
/WEB-INF/roadrantz-data.xml
/WEB-INF/roadrantz-security.xml
16
Cc tham s contextConfigLocation c quy nh nh mt danh sch cc ng dn
(lin quan n ng dng web gc). Khi cu hnh y, b ti bi cnh s s dng
contextConfigLocation ti tp tin cu hnh ba bi cnh , mt cho Security Layer,
mt cho cc tng dch v(Service Layer), v mt cho cc lp d liu (data layer).
DispatcherServlet by gi l cu hnh v sn sng gi yu cu n lp ng dng
web ca bn. Nhng lp web cha c xy dng ! ng bn khon. Chng ti s
xy dng nhiu lp web trong chng ny. Hy bt u bng cch cm nhn c
mt ci nhn tng quanlm th no tt c cc mnh ca Spring MVC c lp rp
sn xut cc chc nng web.
2.4.4 Building the controller :
HomePageController ly mt danh sch cc rants gn y hin th trn trang ch
17
Trng hp Spring MVC iu khin khc nhau t mt servlet hay mt hnh ng
Struts l n cu hnh nh mt JavaBean ch trong bi cnh ng dng Spring. iu ny
c ngha l bn c th tn dng y cc dependency injection (DI) v Spring AOP
vi mt controller class ging nh bn lm vi bt k Bean khc.
Trong trng hp ca HomePageController, DI c s dng bao bc trong mt
RantService . HomePageController delegates trch nhim ly danh sch cc rants
gn y cc RantService.
2.4.5 Introducing ModelAndView :
Mt khi cc logic nghip v c hon thnh bi cc i tng dch v, l thi
gian cho b iu khin gi kt qu tr li trnh duyt. Cc ModelAndView lp i
din cho mt khi nim quan trng trong Spring MVC. Trong thc t, mi iu khin
thc hin phng thc phi tr v ModelAndView.
18
Cc i tng ModelAndView c xy dng nh sau:
new ModelAndView("home", "rants", recentRants);
Hai thng s home v recentRants s c chuyn choView . Hai thng s to
thnh tn ca m hnh i tng mt tham s th ba. Trong trng hp ny, danh
sch rants trong bin recentRants s c chuyn n View vi mt tn l rants.
2.4.6 Configuring the controller bean:
By gi HomePageController c vit, l thi gian cu hnh n trong
DispatcherServlet contex ca tp tin cu hnh ( l roadrant-servlet.xml cho cc ng
dng RoadRantz).
Cc on sau y ca XML cu hnh cho HomePageController.
2.5 Truy xut d liu trong Spring MVC.
Spring cung cp mt template JDBC bn c th qun l nhng kt ni ca bn.
Mt v d n gin bn c th kt ni n mt datasource :
ProductManagerDaoJdbc implements ProductManagerDao {
public void setDataSource(DataSource ds)
{
this.ds = ds;
}
Khng cn thay i code java khi thay i datasource :
19
jdbc:mysql://localhost/test