Spring Mvc Tv

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

    [email protected]

    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