You are on page 1of 93

PHIU GIAO NHIM V N TT NGHIP

1. Mc ch ni dung ca ATN Tm hiu cng ngh Struts, Hibernate v Spring. Xy dng Demo ng dng tuyn dng. 2. Cc nhim v c th ca n tt nghip
Thc tp ti cng ty TriaxVN tm hiu v cng ngh Struts, Hibernate v

Spring. Tm hiu nghip v v phn tch bi ton tuyn dng. Xy dng v ci t chng trnh ng dng Demo. 3. Li cam oan ca sinh vin: Ti Nguyn Tun Minh cam kt ATN l cng trnh nghin cu ca bn thn ti di s hng dn ca Ths. Bi Th Ha. Cc kt qu nu trong ATN l trung thc, khng phi l sao chp ton vn ca bt k cng trnh no khc.
H Ni, ngy 20 thng 5 nm 2008 Tc gi ATN Nguyn Tun Minh

4. Xc nhn ca gio vin hng dn v mc hon thnh ca ATN v cho php bo v :


H Ni, ngy 20 thng 5 nm 2008 Gio vin hng dn Ths. Bi Th Ha

TM TT NI DUNG N TT NGHIP
Ni dung ca n ny bao gm nhng cng vic sau: Tm hiu v xu hng pht trin ng dng Web trong giai on hin nay, th h Web 2.0 v k thut AJAX. Nghin cu, tm hiu cng ngh Struts, Hibernate v Spring. y l cc cng ngh m ngun m ni ting nht trong lnh vc lp trnh ng dng Web da trn ngn ng Java s dng theo m hnh MVC. p dng cc cng ngh Struts, Hibernate, Spring v Ajax xy dng chng trnh ng dng tuyn dng trc tuyn. Vi nhng ni dung ca n c trnh by nh trn, bo co n tt nghip c chia thnh 3 chng. Ni dung ca mi chng c trnh by nh sau:
Chng 1: Gii thiu chung v xu hng pht trin cc ng dng Web

trong nhng nm gn y. Trong , bao gm vic tm hiu v cng ngh Web 2.0, k thut lp trnh Ajax, kin trc J2EE trong Java v s lc mt s Framework m ngun m ni ting trong xy dng ng dng Web da trn ngn ng Java.
Chng 2: Tp trung i su tm hiu cc cng ngh Struts, Hibernate v

Spring vi vic k tha cc u im ca m hnh lp trnh Web in hnh: m hnh MVC. ng thi phn tch, nh gi cc im mnh v im yu ca tng framework trong qu trnh tch hp xy dng ng dng Web.
Chng 3: Da vo nhng kin thc nghin cu t chng 1 v chng

2. chng 3, tc gi p dng chng xy dng mt bi ton demo, l bi ton tuyn dng. y l mt bi ton mang nhiu ngha thc t v hon ton c th trin khai thnh ng dng trong x hi. Tuy nhin, do thi gian hn ch v do kinh nghim ca ngi thit k cn thiu nhiu nn bi ton mi ch dng li vi mt s module nht nh. Tc gi cng hi vng ng dng c th c xy dng hon chnh v trin khai c trong thi gian sp ti. Phn kt lun v nh gi : Trong phn ny, tc gi a ra mt s kt qu thc hin c trong qu trnh thc hin n tt nghip. ng thi a ra mt s nh gi v chng trnh cng nh mt s gii php v hng pht trin ca cc cng ngh Struts, Hibernate v Spring trong tng lai.

ABSTRACT OF THESIS
The content of this thesis includes the following parts : Research on the trend of Web application development nowadays, web 2.0 generation as well as AJAX technique. Studying and doing research Struts, Hibernate and Spring technology. They are the best open source code technology in field of Web application programing based on Java language and using MVC model. Using Struts, Hibernate, Spring and Ajax technology to build a online application programe. As the content was stated in the above paragraph, graduation thesis divide into 3 chapters. The content of each chapter was disposed in the following detail :
Chapter 1: General introduction about trend of web application

development in some recent years. This chapter focus on studying web 2.0 technology, Ajax programing technique, J2EE architecture in Java as well as some the best open source code Frameworks in web application based on Java language.
Chapter 2: This chapter goes into the details of Struts, Hibernate and

Spring technology by inheriting advantages of typical Web programing model: MVC model. At the same time, this part analyses and evaluates strengths and weaknesses of each framework in Web application, construction and integration process.
Chapter 3: Base on recherches from two chapters above, the author, in this

chapter, applies theses knowledges to design a demo. This is a recruitment demo (program) which is significant in pratice and capable of applying in the society. However, because of lack of time and experiences, the program limits at some modules. The author hopes that this program will be fullfilled and applied in the near future. Conclusion and assess: In this part, the author gives some results achieved in completing graduation thesis. Also, the author evalutates and gives some solutions and orientation to develop Struts, Hibernate and Spring technology in the future.

LI NI U
Ngy nay, ngnh cng ngh thng tin ang pht trin nh v bo v i vo mi mt ca i sng, kinh t, x hi ca con ngi. ng gp vo s pht trin , vai tr ca Web ngy cng tr nn quan trng v l mt cng c c lc dn ti mi thnh cng trong nhiu lnh vc trng im. Vi s bng n ca truyn thng nh hin nay th Web l phng thc lan truyn thng tin nhanh chng, hiu qu v kinh t nht. Rt nhiu tp on sn xut phn mm ln nh IBM, Microsoft, Sun MicroSystem tham gia vo lnh vc xy dng v pht trin cc ng dng Web. Tuy nhin, cc ng dng Web pht trin nhanh v mnh m nh hin nay khng th khng k n mt cng ng, l cng ng m ngun m. S ng gp ca h l v cng ln lao vi mc ch cao c l pht trin cng ngh v phc v cng ng. Rt nhiu d n ln ra i t cng ng m ngun m, c th k n mt s framework ni ting nh : Struts, Hibernate, Spring, JSF Vit Nam, pht trin cc ng dng Web l hng i y tim nng v ha hn cho tt c nhng ai yu thch cng ngh thng tin ni chung v nhng k s phn mm ni ring. Vi t cch l mt k s phn mm tng lai cng vi nim am m cng ngh Web, c bit l cc cng ngh m ngun m, em chn cho mnh ti Cng ngh Struts, Hibernate v Spring trong xy dng ng dng Web Tuyn dng. Trong thi gian thc hin n, nghin cu, tm hiu cng ngh em t c mt s kt qu nht nh. l c s quan trng gip em nm bt cng ngh v c th lm vic tt sau ny. c th hon thnh n, l nh cng lao to ln ca cc thy c gio trong trng i hc Bch Khoa H Ni ni chung v cc thy c trong khoa Cng ngh Thng tin, b mn cng ngh phn mm ni ring. Em xin gi ti cc thy c li cm n chn thnh nht. Em xin cm n c Bi Th Ha Ging vin chnh b mn Cng ngh phn mm, khoa Cng ngh Thng tin, trng i hc Bch Khoa H Ni nhit tnh gip , hng dn, ch bo tn tnh trong sut thi gian em lm n tt nghip. Em cng xin gi li cm n n Cng ty Triax Vit Nam, cc anh ch trong cng ty: Anh Shishikura, ch Khnh Ngc, anh Vit, anh Cng to mi iu kin, gip v gp em c th hon thnh tt n. Cui cng, em xin gi li cm n chn thnh ti gia nh, bn b ng vin, chm sc, ng gp kin v gip trong qu trnh hc tp, nghin cu v thc hin tt n tt nghip. H Ni, thng 5 nm 2008 Sinh vin: Nguyn Tun Minh

MC LC
CHNG I : TNG QUAN V CNG NGH WEB JAVA TRONG NHNG NM GN Y...................................................12 I.1. Cng ngh Web 2.0......................................................................12 I.2. Cng ngh AJAX ........................................................................14 I.3. Kin trc J2EE trong xy dng ng dng Web..........................16
I.3.1. Kin trc J2EE ...................................................................................16 I.3.1.1. Java Servlet..................................................................................19 I.3.1.2. JSP (Java Server Page)...............................................................19

CHNG II : STRUTS , HIBERNATE, SPRING TRONG LP TRNH NG DNG WEB..................................................................22 II.1. Mt s khi nim trong lp trnh ng dng Web.......................22
II.1.1. Framework l g ?...............................................................................22 II.1.2. Hai m hnh kin trc trong ng dng Web......................................22 II.1.2.1. M hnh 1....................................................................................22 II.1.2.1.1. c im..............................................................................22 II.1.2.1.2. u im...............................................................................23 II.1.2.1.3. Nhc im..........................................................................23 II.1.2.2 M hnh 2.....................................................................................23 II.1.2.2.1. c im..............................................................................23 II.1.2.2.2. u im .............................................................................24 II.1.3. M hnh Model View Controller (MVC)....................................24 II.1.3.1. c im.....................................................................................24 II.1.3.2. Model .........................................................................................25 II.1.3.3. View.............................................................................................25 II.1.3.4. Controller....................................................................................25 II.1.3.5. C ch tng tc gia 3 thnh phn trong ng dng...............25 II.1.3.6. u im ca m hnh MVC........................................................26

II.2. Struts framework........................................................................26


II.2.1. Lch s hnh thnh..............................................................................26 II.2.2. Tng quan v kin trc h thng.......................................................27 II.2.3. Cc thnh phn trong Struts...............................................................28 II.2.3.1. Actions ........................................................................................28 II.2.3.2. Interceptors.................................................................................30 II.2.3.3. Value Stack / OGNL....................................................................31 II.2.3.4. Result Types................................................................................32 II.2.3.5. Results / View technologies........................................................32 II.2.4. Th vin th trong Struts...................................................................33 II.2.4.1. Th vin th trong version 2.xx..................................................33 II.2.5. Cu hnh trong Struts.........................................................................34 II.2.5.1. Cu hnh trong version 2.xx.......................................................34 II.2.6. u nhc im ca Struts trong xy dng ng dng Web..............35

II.3. Hibernate framework.................................................................36


II.3.1. Lch s hnh thnh..............................................................................36 II.3.2. Mt s khi nim................................................................................37 II.3.2.1. Cc khi nim lin quan n object / relational persistence.....37 II.3.2.2. Persistence layer.........................................................................38 II.3.2.3. ORM (Object/Relational Mapping)............................................39 II.3.3. Kin trc h thng..............................................................................40 II.3.4. Cu hnh trong Hibernate...................................................................41 II.3.5. u nhc im ca Hibernate trong lp trnh ng dng Web.........43

II.4. Spring framework.......................................................................45


II.4.1. Lch s hnh thnh..............................................................................45 II.4.2. Cc thnh phn trong Spring..............................................................46 II.4.4. Cu hnh Spring..................................................................................48 II.4.5. u im ca Spring...........................................................................49

CHNG III : XY DNG NG DNG TUYN DNG.............52 III.1. Gii thiu bi ton tuyn dng.................................................52
III.1.1. Mc ch...........................................................................................52 III.1.2. Mc tiu ca h thng.......................................................................52

III.2. Phn tch bi ton tuyn dng..................................................53


III.2.1. Nhng yu cu v chc nng...........................................................53 III.2.1.1. i tng ngi dng v cc chc nng.................................53 III.2.1.2. Biu cc Use Case................................................................54 III.2.1.2.1. Actor: Admin (Ngi qun tr)..........................................54 III.2.1.2.2. Actor: Company (Nh tuyn dng)....................................59 III.2.1.2.3. Actor: Advertiser (Nh qung co)....................................61 III.2.1.2.4. Actor: Candidate (ng vin)..............................................62 III.2.2. La chn gii php cng ngh.........................................................65 III.2.2.1. Bng chi tit cc chc nng .....................................................65 III.3.1. Thit k d liu.................................................................................73 III.3.1.1. M hnh quan h thc th ........................................................73 III.3.1.2. Thit k c s d liu................................................................73 III.3.1.2.1. Bng Account.....................................................................73 III.3.1.2.2. Bng Role...........................................................................74 III.3.1.2.3. Bng AccountRole..............................................................74 III.3.1.2.4. Bng Function.....................................................................74 III.3.1.2.5. Bng RoleFunction.............................................................75 III.3.1.2.6. Bng Advertiser..................................................................75 III.3.1.2.7. Bng Adver_Content..........................................................75 III.3.1.2.8. Bng Job_Type...................................................................76 III.3.1.2.9. Bng Company...................................................................76 III.3.1.2.10. Bng Province..................................................................77 III.3.1.2.11. Bng Category..................................................................77

III.3.1.2.12. Bng News........................................................................77 III.3.1.2.13. Bng Rec_Notice..............................................................78 III.3.1.2.14. Bng Occupation..............................................................79 III.3.1.2.15. Bng Candidate................................................................79 III.3.1.2.16. Bng Degree.....................................................................80 III.3.1.2.17. Bng Candidate_Degree...................................................80 III.3.1.2.18. Bng Friend......................................................................80 III.3.1.2.19. Bng Blog.........................................................................81 III.3.1.2.20. Bng Blog_Comment.......................................................81 III.3.1.2.21. Bng Work_Type.............................................................81 III.3.2. Thit k module................................................................................82 III.3.2.1. Thit lp mi trng lp trnh..................................................83 III.3.2.2. M hnh thit k module............................................................84 III.3.2.3. Thit k tng Model...................................................................84 III.3.2.4. Thit k tng View.....................................................................87 III.3.2.5. Thit k tng Controller............................................................87 III.3.2.6. Cc file cu hnh h thng........................................................88 III.3.3. Thit k giao din Web.....................................................................89 III.3.3.1. Thit k giao din Admin..........................................................89 III.3.3.2. Thit k giao din ngi dng..................................................90

KT LUN V NH GI...............................................................92 TI LIU THAM KHO....................................................................93

MC LC HNH V
Hnh I.1 M hnh c in ca mt ng dng Web ...............................15 Hnh I.2 M hnh s dng AJAX ca mt ng dng Web........................16 Hnh I.3 ng dng a tng trong J2EE.....................................................18 Hnh I.4 M hnh ng dng Browser/Server.............................................19 Hnh 1.5 C ch hot ng ca JSP..........................................................20 Hnh II.1 M hnh 1 v kin trc ng dng Web......................................23 Hnh II.2 M hnh 2 v kin trc ng dng Web......................................24 Hnh II.3 M hnh MVC trong kin trc ng dng Web...........................25 Hnh II.4 C ch tng tc gia cc thnh phn trong m hnh MVC......26 Hnh II.5 Vng i request trong ng dng Struts2..................................28 Hnh II.6 Persistence layer trong kin trc phn tng...............................39 Hnh II.7 Kin trc h thng trong Hibernate............................................40 Hnh II.8 Cc module trong Spring...........................................................47 Hnh III.1. Cc nhm s dng h thng....................................................53 Hnh III.2 S phn r chc nng..........................................................54 Hnh III.3 Use Case Admin qun l Advertiser.........................................55 Hnh III.4 Use Case Admin qun l Advertisment....................................56 Hnh III.5 Use Case Admin qun l Candidate.........................................57 Hnh III.6 Use Case Admin qun l Company..........................................58 Hnh III.7 Use Case Admin qun l News................................................59 Hnh III.8 Use Case Company qun l Profile..........................................60 Hnh III.9 Use Case Company qun l tin tc...........................................60 Hnh III.10 Use Case Company qun l thng tin tuyn dng..................61 Hnh III.11 Use Case Advertiser qun l qung co.................................62 Hnh III.12 Use Case Candidate qun l Profile.......................................62 Hnh III.13 Use Case Candidate qun l Friends......................................63 Hnh III.14 Use Case Candidate qun l Blog...........................................64 Hnh III.15 S din tin chc nng LogIn............................................67 Hnh III.16 S din tin chc nng LogOut.........................................67 Hnh III.17 S din tin chc nng Add News....................................68 Hnh III.18 S din tin chc nng Edit News.....................................68 Hnh III.19 S din tin chc nng Delete News.................................69 Hnh III.20 S din tin chc nng Edit Profile...................................69 Hnh III.21 S din tin chc Add User...............................................70

Hnh III.22 S din tin chc nng Edit User......................................70 Hnh III.23 S din tin chc nng Delete User...................................71 Hnh III.24 S din tin chc nng Company Search Candidate.........71 Hnh III.25 S din tin chc nng Company bookmarks Candidate. .72 Hnh III.26 S din tin chc nng Blog Individual............................72 Hnh III.28 Cc gi module chnh.............................................................82 Hnh III.29 Module admin.........................................................................83 Hnh III.30 Module User...........................................................................83 Hnh III.31 M hnh thit k Module theo Struts......................................84 Hnh III.32 M hnh thit k tng trong Controller...................................88 Hnh III.33 Mn hnh Login......................................................................89 Hnh III.34 Mn hnh giao din chnh.......................................................89 Hnh III.35 Mn hnh hin th danh sch...................................................90 Hnh III.36 Mn hnh thm mi, cp nht ................................................90 Hnh III.37 Mn hnh giao din trang ch.................................................91

DANH MC BNG
Bng 1: Danh sch cc chc nng.............................................................66 Bng 2: Bng Account...............................................................................74 Bng 3: Bng Role.....................................................................................74 Bng 4: Bng AccountRole.......................................................................74 Bng 5: Bng Function..............................................................................75 Bng 6: Bng RoleFunction......................................................................75 Bng 7: Bng Advertiser...........................................................................75 Bng 8: Bng Adver_Content....................................................................76 Bng 9: Bng Job_Type............................................................................76 Bng 10: Bng Company...........................................................................77 Bng 11: Bng Province............................................................................77 Bng 12: Bng Category............................................................................77 Bng 13: Bng News.................................................................................78 Bng 14: Bng Rec_Notice.......................................................................79 Bng 15: Bng Occupation........................................................................79 Bng 16: Bng Candidate..........................................................................80 Bng 17: Bng Degree...............................................................................80 Bng 18: Bng Candidate_Degree.............................................................80 Bng 19: Bng Friend................................................................................81 Bng 20: Bng Blog..................................................................................81 Bng 21: Bng Blog_Comment.................................................................81 Bng 22: Bng Work_Type.......................................................................82

DANH MC CC THUT NG V CC T VIT TT TRONG BO CO TT NGHIP


STT T vit tt JSF MVC JSP DOM PC IT JVM API HTTP CGI PL W3C XML Framework DB AJAX UI URL POJO ERD Vit y JavaServer Faces Model-View-Controller Java Server Pages Document Object Model Personal Computer Information Technology Java Virtual Machine Application Program Interface Hypertext Transfer Protocol Common Gateway Interface Presentation Layer World Wide Web Conrotium Extensible Markup Language Framework Database Asynchronous JavaScript and XML User Interface Uniform Resource Locator Plain Old Java Object Entity Relationship Diagram ngha Mt framework trong lp trnh ng dng Web da trn cng ngh Java Mt m hnh lp trnh ng dng Web Mt ngn ng lp trnh Web pha my ch trn nn cng ngh Java M hnh i tng ti liu (Khi nim dng trong Ajax) My tnh c nhn Cng ngh thng tin My o Java H giao tip lp trnh ng dng Giao thc truyn siu vn bn Giao thc cng dng chung Tng trnh din trong kin trc 3 tng ca Web. L mt t chc cng nghip quc t thnh lp nm 1994 nhm pht trin cc giao thc chung pht trin WWW. Ngn ng nh du m rng do W3C to ra Tp hp cc lp, giao din h tr gii quyt cc vn c th trong qu trnh xy dng phn mm C s d liu L tp hp ca nhiu cng ngh vi th mnh ca ring mnh to thnh mt sc mnh mi Giao din ngi dng a ch ca mt trang Web i tng thun Java M hnh quan h thc th

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

CHNG I : TNG QUAN V CNG NGH WEB JAVA TRONG NHNG NM GN Y


I.1. Cng ngh Web 2.0
S pht trin mnh m ca ca ngnh cng ngh thng tin trn th gii vi nhiu cuc cch mng trn nghiu lnh vc, th h Web mi c nhng thay i quan trng khng ch nn tng cng ngh m cn cch thc s dng, hnh thnh nn mi trng cng ng m mi ngi cng tham gia ng gp cho x hi o ch khng cn dng li qu trnh duyt v xem nh trc kia. Ngy nay, chng ta rt quen thuc vi thut ng Web 2.0. Vy, Web 2.0 l g ? Lm sao phn bit c u l Web 1.0, u l Web 2.0 ? Web 2.0 ang tr nn thnh hnh v c phn c lng x qu mc. Thc cht, Web 2.0 c ngha l s dng web ng vi bn cht v kh nng ca n. Mc tiu ca nhng ngi tin phong xy dng Internet l nhm kt ni cc nh nghin cu v cc my tnh ca h vi nhau c th chia s thng tin hiu qu. Khi b dung World Wide Web (nm 1990), Tim Berners-Lee cng nhm mc tiu to phng tin cho php ngi dng t do a thng tin ln Internet v d dng chia s vi mi ngi (trnh duyt Web u tin do Berners-Lee vit bao gm c cng c son tho trang Web). Tuy nhin, sau web pht trin theo hng hi khc mc tiu ban u. Tuy c mt s ngoi l nhng th gii Web 1.0 (th h Web trc 2.0) ch yu gm cc website ng ca cc hng thng tn hay cc cng ty nhm mc ch tip cn c gi hay khch hng hiu qu hn. N l phng tin pht tin hn l phng tin chia s thng tin. Ch n gn y, vi s xut hin ca nhiu k thut mi nh blog, wiki web mi tr nn c tnh cng ng (v cng tc) hn v tr nn gn hn so vi s k vng v kh nng thc s ca n. Khi nim Web 2.0 u tin c Dale Dougherty, ph ch tch ca Oreilly Media, a ra ti hi tho Web 2.0 ln th nht do Oreilly Media v MediaLive International t chc vo thng 10/2004. Dougherty khng a ra nh ngha m ch dng cc v d so snh phn bit Web 1.0 v Web 2.0: DoubleClick l Web 1.0; Google AdSense l Web 2.0. Ofoto l Web 1.0; Flickr l Web 2.0. Britannica online l Web 1.0; Wikipedia l Web 2.0 v.v. Cc c tnh ca Web 2.0 : 1. Web c vai tr nn tng, c th chy mi ng dng 2. Phc v mi ngi 3. Tp hp tr tu cng ng 4. D liu c vai tr then cht 5. Phn mm c cung cp dng dch v web c cp nht khng ngng v lun l bn Beta 6. Pht trin ng dng d dng v nhanh chng, gn nh v thch hp

7. Phn mm c th chy trn nhiu thit b 8. Ngi dng t ch Ban u, Web 2.0 c ch trng ti yu t cng ngh, nhn mnh ti vai tr nn tng ng dng. Nhng n hi tho Web 2.0 ln 2 c t chc vo thng 10/2005, Web 2.0 c nhn mnh n tnh cht su xa hn l yu t cng ng.
Cng ngh:

Trn thc t, ng dng trn Web l thnh phn rt quan trng ca Web 2.0. Hng lot cng ngh mi c pht trin nhm lm cho ng dng trn web mnh hn, nhanh hn v d s dng hn, c xem l nn tng ca Web 2.0. Kin trc cng ngh ca Web 2.0 hin vn ang c pht trin nhng c bn bao gm : phn mm my ch, c ch cung cp ni dung, giao thc truyn thng, trnh duyt v ng dng.
Cung cp ni dung:

Bc pht trin u tin v quan trng nht hng n Web 2.0 l c ch cung cp ni dung, s dng cc giao thc chun ha cho php ngi dng s dng thng tin theo cch ca mnh (ngha l c kh nng ty bin thng tin). C nhiu giao thc c pht trin cung cp ni dung nh RSS, RDF v Atom, tt c u da trn XML. Ngoi ra cn c cc giao thc c bit nh FOAF v XFN dng m rng tnh nng ca Website hay cho php ngi dng tng tc.
Dch v Web:

Cc giao thc truyn thng 2 chiu l mt trong nhng thnh phn then cht ca kin trc Web 2.0. C hai loi giao thc chnh l REST v SOAP. REST (Representation State Transfer) l dng yu cu dch v web m my khch truyn i trng thi ca tt c giao dch; cn SOAP (Simple Object Access Protocol) th ph thuc vo my ch trong vic duy tr thng tin trng thi. Vi c hai loi, dch v Web u c gi qua API. Ngn ng chung ca dch v Web l XML, nhng c th c ngoi l. Mt v d in hnh ca giao thc truyn thng th h mi l Object Properties Broadcasting Protocol do Chris Dockree pht trin. Giao thc ny cho php cc i tng o (tn ti trn Web) t bit chng l g v c th lm g, nh vy c th t lin lc vi nhau khi cn.
Phn mm my ch:

Web 2.0 c xy dng trn kin trc web th h trc nhng ch trng hn n phn mm lm vic hu trng. C ch cung cp ni dung ch khc phng thc cp pht ni dung ng (ca Web 1.0 v danh ngha), tuy nhin dch v Web yu cu tin trnh lm vic v d liu cht ch hn. Cc gii php pht trin theo hng Web 2.0 hin nay c th phn ra lm 2 loi : hoc xy dng hu ht cc tnh nng trn mt nn tng my ch duy nht; hoc xy dng ng dng gn thm cho my ch web, c s dng giao tip API.
Cng ng:

Cng ngh ch l b ni ca Web 2.0, chnh cng ng ngi dng mi l yu t nn tng to nn th h web mi. Vic chuyn t duyt v xem sang tham gia l cuc cch mng thc s, d nhin nh c s pht trin cng ngh gip hin thc kh nng ny nhng y mun nhn mnh n hnh vi ca ngi dng i vi web. V c bn, Web 2.0 trao quyn nhiu hn cho ngi dng v to nn mi trng lin kt cht ch cc c nhn vi nhau. Gi y, c nhiu v d cho thy cng ng ngi dng c th ng gp thng tin gi tr khi h c phng tin thch hp. Wikipedia c l l v d ni ting nht. Tuy c nhiu hc gi khng nh gi cao Wikipedia, nhng h li qun mt iu quan trng : n tt, min ph v nhiu ngi c th c. Ngoi ra cn c nhng v d khc nh cc site Reddit v Digg cho ngi dng quyt nh thng tin g l quan trng, hay del.icio.us cho php mi ngi chia s nhng a ch Web hay. Web 2.0 cho php mi ngi c th a ln mng bt c thng tin g. Vi s lng ngi tham gia rt ln, n mc no , qua qu trnh sng lc, thng tin s tr nn v cng gi tr. y, c s tng ng vi thuyt chn lc t nhin. Tht s, Web 2.0 khng phi l ci g hon ton mi m l n l s pht trin t web hin ti. N vn l Web nh chng ta dng lu nay, ch c iu gi y chng ta lm vic vi Web theo cch khc. Cc website khng cn l nhng c o m tr thnh nhng ngun thng tin v chc nng, hnh thnh nn mi trng in ton phc v cc ng dng web v ngi dng.

I.2. Cng ngh AJAX


Th h Web 2.0 bt u v tri qua c mt chng ng di pha trc c th thay i nhng g vn tr nn quen thuc vi mi ngi hin nay. Nhng ng vai tr quan trng gp phn lm nn th h Web trong giai on th hai l t hp cng ngh AJAX. AJAX l g ? Thut ng AJAX xut hin ln u vo thng 2 nm 2005, khi Jesse James Garrett ca cng ty AdapativePath nh ngha. AJAX l vit tt ca cm t Asynchonous JavaScript and XML. l b cng c cho php tng tc ng dng web bng cch ct nh d liu v ch hin th nhng g cn thit, thay v ti i ti li ton b trang web.Theo nh ngha ca Garrett th : AJAX khng phi l mt cng ngh. N l tp hp ca nhiu cng ngh vi th mnh ca ring mnh to thnh mt sc mnh mi. AJAX bao gm : Th hin Web theo tiu chun XHTML v CSS. Nng cao tnh nng ng v phn hi bng m hnh i tng ti liu DOM (Document Object Model). Trao i v x l d liu bng XML v XSLT. Truy cp d liu theo kiu bt ng b (asynchronous) bng XMLHttpRequest.

V tt c cc k thut trn c lin kt li vi nhau bng Javascript. Hu ht cc cu chuyn v ngun gc ca AJAX c bt u t khi Microsoft pht trin cng ngh Remote Scripting vo nm 1998. Tuy nhin, phng php ti khng ng b ni dung trn mt trang Web xut hin trn thnh t IFRAME ca Internet Explorer 3 (1996) v thnh t LAYER ca Netscape 4.0 (1997). Khi gii thiu Internet Explorer 4.0, Microsoft s dng m hnh i tng ti liu. n nm 2000, Netscape hon ton b nh mt th trng trnh duyt vo tay hng phn mm ca Bill Gates v thnh t LAYER cng khng c cc chuyn gia pht trin web ch ti. Phi ti vi nm sau, AJAX mi li li ko c s quan tm ca gii cng ngh v tr thnh cng c ci tin giao din ngi dng cho ng dng web. T , AJAX tr thnh trung tm trong mi cu chuyn lin quan n th h Web 2.0. cc ng dng Web truyn thng, khi ngi dng cn mt thay i d liu trn trang Web, yu cu thay i c gi v server di dng HTTP request (hay cn gi l postback), server s x l yu cu ny v gi tr response cha cc thng tin di dng HTML v CSS, trang HTML ny s thay th trang c. Quy trnh ny c m t l nhp-ch v ti li (click-wait-and-refresh). Di y l : M hnh tng tc trong mt ng dng Web truyn thng:

Hnh I.1 M hnh c in ca mt ng dng Web AJAX cho php to ra mt Ajax Engine nm gia giao tip ny. Khi , cc yu cu gi request v nhn response do Ajax Engine thc hin. Thay v tr d liu di dng HTML v CSS trc tip cho trnh duyt Web, Web Server c th gi tr d liu dng XML v Ajax Engine s tip nhn, phn tch v chuyn n thnh XHTML + CSS cho trnh duyt Web hin th. Vic ny c thc hin trn client nn gim ti rt nhiu cho server, ng thi ngi s dng cm thy kt qu x l c hin th tc th m khng cn np li trang. Mt khc, s kt hp ca cc cng ngh web nh CSS v XHTML lm cho vic trnh by trang web tt hn nhiu v gim ng k dung lng trang phi np. y l nhng li ch ht sc thit thc m AJAX em li. Hnh I.2 di y m t m hnh s dng AJAX :

Hnh I.2 M hnh s dng AJAX ca mt ng dng Web Nhng nhc im ca AJAX AJAX c th gp phn to nn mt th h mi cho ng dng Web. Tuy nhin, n cng l mt cng ngh nguy him khi gy ra khng t rc ri v giao din ngi dng v sau y l mt vi minh chng : Phm Back (tr li trang trc) c nh gi cao trong giao din trang web chun. ng tic chc nng ny khng hot ng n khp vi Javascript v mi ngi khng th tm li ni dung trc khi bm phm Back. Bi vy, ch mt vi s xut nh l d liu trn trang web b thay i v kh c th khi phc li c. y l mt trong nhng nguyn nhn chnh khin nghiu ngi khng ng h ng dng Javascript. Bn cnh , mi ngi khng th lu li a ch web vo th mc Favourite (Bookmark) xem li v sau. Do p dng lp trung gian giao dch, cc ng dng AJAX khng c mt a ch c nh cho tng ni dung. Khim khuyt ny lm cho AJAX d mt im trong mt ngi dng. Nhng vi s ci thin khng ngng trong thi gian sp ti, AJAX s tr thnh ph dng cho tt c cc ng dng Web.

I.3. Kin trc J2EE trong xy dng ng dng Web I.3.1. Kin trc J2EE
J2EE l mt khung ng dng Web hot ng hiu qu m cc cng ty trn th gii nh IBM, Oracle, Sun p dng rt hiu qu trong cc d n ca h. im c bit hn na l khung ng dng ny s dng cc cng ngh mi nht lung mang tnh cnh tranh cao v d nh Struts, Hibernate, Spring, JSF, EJB Tuy nhin, J2EE khng phi l mt sn phm c th m ch l cc c t a ra bi hng Sun. Vi kin trc J2EE, bn phi la chn, kt ni cc thnh phn khc nhau hnh thnh nn m hnh pht trin ng dng. Bn thn Sun khng a ra m

hnh pht trin dng ng gi nhng c kh nhiu sn phm t cc hng th ba nh : IBM, WebSphere, v BEA WebLogic, l cc m hnh xy dng h tr lp trnh. J2EE ch h tr ngn ng lp trnh Java v trong tng lai c l cng khng c ngn ng lp trnh no c h tr thm bi kin trc ny. Nhng khung ng dng J2EE v ngn ng Java c tnh kh chuyn cao. Mt chng trnh vit bi Java c thc thi trn my o Java (Java Virtual Machine) thay v trc tip trn h iu hnh c th. Do , m chng trnh c th chuyn t mt h iu hnh ny sang mt h iu hnh khc (c h tr JVM) thc thi mt cch d dng. Tnh kh chuyn v h iu hnh ny ca J2EE c c l do phn ln cc sn phm J2EE u h tr cho nhiu h iu hnh. Hn th na, J2EE cung cp mt thit k mu (design pattern) m c c rt t nhng kinh nghim thc t ca cc chuyn gia phn mm trn th gii. V bn hon ton c tha hng cc mu thit k ny m khng cn phi bt u xy dng chi tit t u trong khi mt lot cc cng ty v nhm phn mm tiu tn thi gian v cng sc tm ra nhng phng n ti u cho tng vn h gp phi trong qu trnh pht trin cc d n. V d vi tng Web ca ng dng J2EE kinh in, nu chng ta bt tay t c t k thut (specification) ca JSP v Servlet chng cho php xy dng c nhng trang Web ng ring bit rt tt nhng li h tr rt t trong vic qun l lung d liu gia cc trang vi nhau, c bit chng khng tch ri hai tng hin th (presentation) v tng nghip v (business). M hnh MVC (Model - View - Controller) li l mt m hnh thit k mang tnh tng th gii quyt vn trn, n c to bi Krasner v Pope nm 1988 cho Smalltalk, cho php xy dng nn cc ng dng phn tng mt cch rt hiu qu bng cch to ra nhng phng thc qun l tng tng mt cch ring r v qun l lung d liu. Trong J2EE, th MVC cng c xy dng da trn nhng tnh nng mnh ca cng ngh JSP v Servlet. Nn tng J2EE s dng m hnh ng dng phn tn a tng cho tt c cc ng dng Enterprise. ng dng logic c th chia lm nhiu thnh phn ty theo chc nng, rt nhiu cc thnh phn to nn ng dng J2EE v c ci t trn nhiu my tnh khc nhau. Hnh I.4 di y m t kin trc a tng trong ng dng J2EE:

Hnh I.3 ng dng a tng trong J2EE Cc thnh phn Client-tier chy trn my client. Cc thnh phn Web tier chy trn J2EE server. Cc thnh phn Business tier chy trn J2EE server. EIS (Enterprise information system)-tier chy trn EIS server. Mc d mt ng dng J2EE c th bao gm ba hoc bn tng nh trong hnh I.4, tuy nhin cc ng dng a tng J2EE trong thc t thng s dng theo kin trc ba tng bi v chng c phn tn trn ba v tr khc nhau : cc my client, my J2EE server, v database. Cc thnh phn J2EE Cc ng dng J2EE c to nn t cc thnh phn. Mt J2EE component bn thn n l n v phn mm thc hin mt chc nng nht nh c cc lp v cc file v c th giao tip c vi cc thnh phn khc. c t J2EE nh ngha ra cc thnh phn sau : Cc ng dng my khch v applet l cc thnh phn chy trn client. Cc thnh phn Java Servlet v JavaServer Pages (JSP) l cc thnh phn Web chy trn server. Cc thnh phn Enterprise JavaBean (EJB) l cc thnh phn nghip v chy trn server. Cc thnh phn J2EE c vit bng ngn ng lp trnh Java v c bin dch ging nh trong cc ngn ng lp trnh khc. S khc bit gia cc thnh phn J2EE v cc lp Java chun l cc thnh phn J2EE c nhng trong ng dng J2EE, c xc nhn m bo tnh thng nht theo nh c t J2EE, v c trin khai thnh sn phm, ni chng c th chy v c qun l bi J2EE server.

I.3.1.1. Java Servlet Servlet c to ra vo nm 1997, Servlet l cc thnh phn i tng nhng trn trnh ch Web server thc hin x l yu cu v sinh ra cc trang Web ng tr v my khch. Java Servlet l cng ngh nn tng cho cc cng ngh khc to ra cc ng dng Web c tnh tng tc cao m giao din ngi dng c sinh ra pha server. Cng ngh Java Servlet bao gm 2 phn : API ca Java dng bao gm cc yu cu v cc cu tr li v cc i tng con ca n v b x l dng qun l cc i tng ny. Mt c ch dng xc nh cc thuc tnh ca ng dng Web ngoi m ca ng dng v c th thay i lc trin khai. Mt servlet l mt lp ca Java x l ng cc yu cu v xy dng cc tr li. Mc d servlet c th dng tr li bt k mt yu cu no nhng chng thng dng h tr cho cc ng dng Web. Servlet l mt thnh phn ng dng Web khng ph thuc vo h nn. V bn cht th Servlet l mt chng trnh Java (ch cn np mt ln vo my o) thng c s dng chy nn trn cc my o Java. Khi c mt yu cu t trnh duyt (Browser), my ch (server) s pht lnh thc hin Servlet tng ng, kt qu tr v ca Servlet s c my ch x l v tr v cho trnh duyt di dng cc trang HTML.

Hnh I.4 M hnh ng dng Browser/Server I.3.1.2. JSP (Java Server Page) Cng ngh JSP k tha tt c cc k thut ng ca cng ngh Java Servlet, nhng n li cung cp mt cch tip cn t nhin hn trong vic to ra cc thnh phn Web tnh, JSP c th kt hp gia cng ngh sinh trang HTML tnh vi cng ngh ng sinh ra cc trang HTML. JSP l cng ngh lp trnh Web pha my ch ca Java, JSP cho php truy xut, x l n gin, gip cho lp trnh vin x l d dng. c trng ca cng ngh JSP: Cho php trn gia m Java v cc th HTML. Xy dng cc i tng pha my ch. JSP s dng cc truy xut v x l n gin nh : trnh by giao din, nh dng trang HTML, triu gi cc Javabean, servlet khc

C ch hot ng ca JSP c th m t nh sau :


HTTP query Web Client Response Java code HTML page HTML page containing JSP script Java Compiler Web Server JSP script JSP Engine

Byte code

Internet

Java Virtual Machine

JDBC Database

Hnh 1.5 C ch hot ng ca JSP


Nguyn tc:

JSP script c vit lng vo cc trang HTML. Khi c yu cu client, JSP Engine s dch JSP script thnh m Java. Java Compiler dch Java code thnh bytecode. Bytecode chy trn my o Java. Cc thun li khi s dng cng ngh JSP : i vi ASP (Active Server Pages): ASP l cng ngh tng t nh JSP nhng c cung cp bi Microsoft. Cc thun li ca cng ngh JSP bao gm : Th nht, phn ng trong mt trang JSP c vit bng Java ch khng phi l mt ngn ng no khc ca Microsoft, cho nn n to ra sc mnh hn v d dng hn trong s dng nh nhng c tnh ni bt ca Java nu trn. Th hai, n c th ph hp vi bt k h iu hnh no v Web server no. i vi Servlet : JSP cung cp nhng iu kin thun li hn to ra cc trang HTML hp l. Thm vo , bng vic phn chia thnh hai phn ring bit, ta c th phn chia cng vic trong pht trin JSP cho nhiu ngi khc nhau, mi ngi mt lnh vc ring, phn xy dng HTML tnh v phn ng. i vi Server-Side Include (SSI) : SSI l mt cng ngh h tr rng ri bao gm cc on c nh ngha bn ngoi a vo trong mt trang Web tnh. JSP l mt la chn tt nht bi v n cho php bn s dng servlet thay th cho vic s dng chng trnh gin on to ra cc phn ng trong mt trang web.

i vi Javascript : Javascript c th t ng to ra HTML trn trnh client. Tuy nhin, n ch h tr iu ny khi m cc thng tin thuc v mi trng hot ng ca client. Vi ngoi l ca cookies, HTTP v nh dng d liu trnh khng h tr cho Javascript. Khi m Javascript thc hin trn trnh client, JavaScript khng th truy nhp ti nguyn ca pha trnh ch nh cc c s d liu, cc danh sch, cc thng tin quan trng Vi nhng li th v nhng c im ca mnh da trn hng m ngun m v nht l vi s ra i ca cc framework ni ting nh : Struts, Hibernate, Spring, JSF, AJAX da trn nn tng ca cng ngh Java khuy ng ln mt cuc cch mng trong lnh vc lp trnh Web ng dng : Ch trong mt tng lai khng xa, tt c cc ng dng phn mm u l ng dng Web.

CHNG II : STRUTS , HIBERNATE, SPRING TRONG LP TRNH NG DNG WEB

II.1. Mt s khi nim trong lp trnh ng dng Web II.1.1. Framework l g ?


Ngy nay, trong qu trnh xy dng mt ng dng trn nn Web, c rt nhiu khung lm vic (framework) c xy dng sn nhm phc v cho mc ch chung nht cng nh gip cho nhng ngi lp trnh vin pht trin ng dng mt cch nhanh chng v hiu qu. Chng ta nhc nhiu n thut ng framework cc phn trn v cng c mt s framework v Java c nhc n. Vy, bn cht framework l g, v n c nhng c tnh g ? Theo cng ng Wikepedia, framework l mt khi nim trong pht trin phn mm dng ch nhng cu trc h tr c nh ngham trong nhng d n phn mm khc c th c sp xp vo v pht trin. Thng thng, mt framework bao gm nhng chng trnh h tr, cc th vin lp trnh v mt ngn ng scripting nm gia cc phn mm khc gip pht trin v gn nhng thnh phn khc nhau trong d n phn mm li vi nhau. Mt khung lm vic c 3 c tnh sau : 1. Mt khung cng vic xy dng sn cc lp (class) hoc cc thnh phn (component), mi loi s cung cp mt mc tru tng (abstraction) cho mt vi khi nim ring bit. 2. Mt khung cng vic s nh ngha ra tp hp cc cch thc cc mc tru tng cng nhau gii quyt mt vn . 3. Cc thnh phn trong mt khung cng vic phi c tnh s dng li c.

II.1.2. Hai m hnh kin trc trong ng dng Web


II.1.2.1. M hnh 1 II.1.2.1.1. c im Kin trc m hnh 1 l kin trc n gin nht trong vic pht trin cc ng dng Web. Trong m hnh 1, trnh duyt trc tip truy xut n cc trang JSP. Hay ni cch khc, ngi s dng gi cc yu cu v nhn phn hi trc tip qua cc trang JSP. im mnh ca m hnh kin trc ny l mi trang JSP u x l u vo ca chnh mnh. Cc ng dng s dng m hnh kin trc ny thng c mt dy cc trang JSP m ngi dng x l thng tin t trang u tin n trang k tip. Nu cn, mt trang servlet hoc mt trang HTML c th thay th cho trang JSP trong dy.

Hnh II.1 M hnh 1 v kin trc ng dng Web II.1.2.1.2. u im y l m hnh n gin nht, thoi mi pht trin ng dng. Ngi lp trnh c th ln lt xy dng cc trang web da theo chc nng ch r. Kin trc ny thch hp vi nhng ng dng web c quy m nh, t chc nng v vic nh hng trang l n gin. II.1.2.1.3. Nhc im Kh tch ri cng vic vit m cho ng dng (thng thuc v vai tr ca ngi pht trin ng dng Web) v nhm xy dng ng dng (thng thuc v vai tr ca ngi thit k). Khi cn thay i giao din ngi s dng (cng vic ca ngi thit k) th chnh ngi lp trnh gn nh li phi thc hin ton b (thay i m ngun chng trnh v m HTML). Do cc trang JSP u x l u vo ca chnh mnh, ng dng l mt dy cc trang JSP hot ng k tip tun t nhau, kt qu trang ny l u vo cho trang kia, nn khi thay i, hay m rng cc chc nng ca ng dng th rt kh thc hin hoc thc hin rt phc tp v tn nhiu thi gian. Do vy, m hnh 1 l cng nhc, khng linh hot, khng thch hp vi cc d n ln. II.1.2.2 M hnh 2 II.1.2.2.1. c im M hnh 2 l m hnh ph bin c s dng hin nay. V c bn, y l m hnh MVC (Model-View-Controller) m cc qu trnh x l, iu khin, hin th c tch ri nhau. im khc nhau quan trng gia m hnh 1 v m hnh 2 l trong m hnh 2, qu trnh x l cc yu cu t pha ngi dng khng trc tip thng qua cc trang JSP m c thc hin qua mt Servlet. Cc bc thc thi khi ngi dng gi yu cu nh sau : 1. Controller Servlet x l cc yu cu ca ngi dng (iu ny c ngha l lin kt trong JSP tr ti controller servlet).

2. Controller Servlet sau s tm cc JavaBean ph hp da trn cc tham s request (hoc da trn cc thuc tnh session). 3. Controller Servlet t bn thn n hoc thng qua cc controller khc giao tip vi tng trung gian hoc trc tip ti database ly cc d liu ph hp. 4. Controller th hin d liu ly c thng qua cc JavaBean thng qua mt trong cc ng cnh : request, session hoc application. 5. Controller sau chuyn hng n phn hin th tip theo da trn request URL. 6. Phn hin th s dng cc JavaBean c thit lp bc 4 hin th d liu.

Hnh II.2 M hnh 2 v kin trc ng dng Web II.1.2.2.2. u im u im ni bt trong kin trc ca m hnh 2 so vi m hnh 1 l kh nng sa i, bo tr v kh nng m rng h thng v sau ca ng dng. Do vy, m hnh 2 l mt kin trc c p dng nhiu trong cc ng dng ln v mang tnh thng mi cao.

II.1.3. M hnh Model View Controller (MVC)


II.1.3.1. c im MVC l m hnh thit k mang tnh tng th gii quyt vn c tnh nghip v cao, thng p dng cho nhng d n ln v c tnh thng mi cao. M hnh MVC c to ra bi Krasner v Pope nm 1988 cho Smalltalk, hin ti c IBM v Apache ng dng trong cc d n ca h rt thnh cng. y l mt gii php cho php xy dng cc ng dng phn tng mt cch rt hiu qu, bng cch to ra nhng phng thc qun l tng tng mt cch ring r. Trong J2EE, th MVC cng c xy dng da trn nhng tnh nng mnh ca cng ngh JSP v Servlet. MVC c 3 thnh phn chnh : Model, View, Controller.

Hnh II.3 M hnh MVC trong kin trc ng dng Web II.1.3.2. Model Trong m hnh kin trc MVC, y l thnh phn quan trng nht trong ng dng. Thnh phn Model cung cp mt giao din cho d liu v cc dch v c s dng trong ng dng. Theo cch ny, thnh phn Controller s khng cn phi nhng m lnh thao tc trc tip vi cc d liu trong ng dng. Thay vo , chng s trao i vi thnh phn Model thc hin thao tc v truy xut d liu. Thnh phn Model c rt nhiu dng khc nhau, n c th n gin l cc JavaBean hoc phc tp hn l Enterprise JavaBean hoc Web Service. II.1.3.3. View Thnh phn View trong m hnh MVC dng hin th d liu pha ngi dng ca ng dng. c th l cc dng d liu hin th cho vic nhp liu u vo ca ngi dng cung cp cho thnh phn Controller hoc cng c th l d liu tr v t Controller sau qu trnh x l hin th kt qu. Thng thng, thnh phn View ny c th l cc trang HTML, JSP hoc mt s dng templete nh Velocity hoc FreeMarker II.1.3.4. Controller y l thnh phn iu khin cc lung d liu gia cc thnh phn View v Model, ph thuc vo tc ng ca ngi s dng v ch ra cc hnh ng v chuyn hng hnh ng theo cc yu cu ca ngi dng. II.1.3.5. C ch tng tc gia 3 thnh phn trong ng dng

Hnh II.4 C ch tng tc gia cc thnh phn trong m hnh MVC II.1.3.6. u im ca m hnh MVC

a) tin cy cao (Reliability): Do trong m hnh MVC cc lp presentation v


transaction c phn chia r rng, iu cho php ta thay i cch nhn v cch cm nhn v mt ng dng phn mm khi khng phi bin dch li code ca Model hoc Controller.

b) Kh nng ti s dng v tnh p ng cao (High reuse and adaptability) : M


hnh MVC cho php chng ta s dng a kiu trong tng View, tt c cc cch truy nhp m code bn server. iu bao gm bt c th g t trnh duyt Web (HTTP) ti trnh duyt khng dy (WAP).

c) Gi chi ph cho pht trin phn mm v vng i thp : M hnh MVC to


nhiu thun li cho cc lp trnh vin mc thp pht trin thm ng dng ca mnh cng nh d dng trong vic bo tr giao din ngi dng.

d) Kh nng bo tr d dng (Maintainability):

Do s tch bit trong lp trnh cc phn trong m hnh MVC nn to nhiu thun li cho vic bo tr v sa i cc ng dng Web.

Do m hnh MVC c nhng u im ni bt nh trn, nn trong thc t hu ht cc ng dng Web ngy nay u c xy dng da trn m hnh MVC, c bit i vi cc ng dng c tnh thng mi v phc tp cao. Di y gii thiu mt s framework h tr xy dng ng dng da Web theo m hnh kin trc MVC.

II.2. Struts framework II.2.1. Lch s hnh thnh


Struts ngun gc c to ra bi Craig R.McClanahan v sau c chuyn giao cho d n Jakarta ca Apache Software Foundation (AFS) vo nm 2000. Vo thng

6 nm 2001, Struts pht hnh phin bn 1.0. Sau , c rt nhiu ngi tham gia ng gp c v m ngun v ti liu cho d n v Struts ngy cng tr nn hon thin hn. Struts l mt framework m ngun m c pht trin trn nn tng ca ngn ng Java, JSP nhm mc ch to ra mt thnh phn chun trong vic thit k tng Web s dng MVC da trn nn tng ca J2EE. Vi Struts, ngi lp trnh s khng phi quan tm n vic xy dng m hnh MVC nh th no m ch cn cu hnh v chy tng hin th ca d n, iu ny cho php gim thiu chi ph o to, thi gian pht trin d n nhanh hn v cho php h thng chy n nh trn cc nn v hoc module tch hp khc nhau. Vi Struts ta c th tch lm 3 tng lm vic ring bit mt cch d dng, thch hp cho mt d n ln, khng b nhp nhng gia vic to giao din, x l v truy xut c s d liu. Struts hin c hai phin bn chnh, l Struts 1.xx v 2.0x. Struts 1.xx c cng nhn nh mt framework ph bin nht trong Java, Struts 1.xx chn mui v l mt gii php tt cho nhm pht trin gii quyt cc vn chung nht. Struts 2.0x, k tha nn tng ca webwork framework, c t chc nh mt nn lm vic chuyn nghip vi web, nhm gii quyt cc vn phc tp, mang tnh nghip v cao.

II.2.2. Tng quan v kin trc h thng


Struts tuy ra i sau mt s framework hoc cc cng ngh khc nhng n nhanh chng c cc nh pht trin cc ng dng trn nn Web chp nhn v s dng rng ri. L mt framework c xy dng p dng theo m hnh MVC, Struts t ra rt thch hp trong cc d n mang tnh thng mi, nghip v cao v phc tp, v trn ht, y l mt framework m ngun m. Cc nh pht trin c th t do pht trin ng dng da trn Struts m khng phi mt chi ph no. Trong ti liu ny, tc gi ch yu cp n Struts phin bn 2.0x. Do phin bn Struts 1.xx kh quen thuc vi nhiu ngi. Struts 2.0x l s kt hp gia Struts v Webwork 2 (Mt framework m ngun m khc ca Open Symphony). Mc ch ca Struts2 l s n gin gip cc nh pht trin xy dng d dng cc ng dng Web. t c mc ch ny, Struts2 h tr cc tnh nng lm gim thiu vic cu hnh trong cc file XML thng qua cc ci t ngm nh thng minh, cc tin ch ch thch v h tr cc quy c trong vic cu hnh. Di y l mt s tnh nng ca Struts 2: Struts2 l mt Action based framework Nhiu ty chn cu hnh file XML v Annotation POJO-da trn cc action gip vic kim th d dng Tch hp Spring, Sitemesh v Tiles Tch hp ngn ng OGNL H tr AJAX thng qua cc th vin th Nhiu ty chn tng View (JSP, Freemarker, Velocity v XSLT) H tr m rng nhiu plug-in

Cc thnh phn ca Struts2:

Chun MVC trong Struts2 c p dng vi nm thnh phn ct li : actions, interceptors, value stack / OGNL, result types v results / view technologies. Vng i request trong ng dng Struts 2 :

Hnh II.5 Vng i request trong ng dng Struts2


1. Ngi dng gi request : Ngi dng gi cc yu cu n server. 2. FilterDispatcher xc nh action ph hp : FilterDispatcher nhn request

v sau xc nh Action tng ng.


3. Cc Interceptor c p dng : Cc interceptor c cu hnh p dng

cho cc chc nng nh workflow, validation, file upload


4. Thc thi Action : Phng thc Action c thc thi thao tc vi

database lu tr, cp nht, khi phc d liu


5. To nh x u ra : Action to nh x u ra thng qua tham s tr v ca

hm.
6. Tr v kt qu ca Request : Kt qu c tr v cc interceptot theo th

t ngc li gip chng ta clean-up b m hoc thm cc x l ph khc.


7. Hin th kt qu ti ngi s dng : Cui cng control c tr v cho

servlet container, lm nhim v hin th d liu u ra trn trnh duyt.

II.2.3. Cc thnh phn trong Struts


Nh cp n phn trn, Struts2 bao gm nm thnh phn ct li l : Actions, Interceptors, Value Stack / OGNL, Result Types, Results / View technologies. II.2.3.1. Actions Actions l khi nim c bn trong hu ht cc framework v ng dng web. Chng l n v lm vic c bn nht lin quan ti HTTP request t pha ngi dng. Trong Struts2, mt action c th c s dng theo cc cch khc nhau : Single Result :

y l cch thc s dng n gin nht ca mt action. Action thc thi v ch tr v mt kt qu duy nht. Trong trng hp ny, action c th c m t nh sau :
class MyAction { public void String execute() throws Exception { return "success"; } }

C vi im cn ch . Th nht, lp action ny khng cn k tha t cc lp khc v cng khng cn thc thi mt interface no. Hay ni cch khc, lp ny l mt POJO n gin. Th hai, lp ny ch c mt phng thc l execute. y l quy c ngm nh ca Struts2. Nu bn mun s dng nhiu phng thc khc nhau, bn cn cu hnh trong file struts.xml. Di y l cch cu hnh dng n gin nht trong file struts.xml :
<action name="my" class="com.struts.MyAction" > <result>view.jsp</result> </action>

Thuc tnh name cung cp thng tin URL thc thi action. Trong trng hp ny, URL s c dng /my.action. Phn m rng .action c cu hnh trong file struts.properties. Thuc tnh class cung cp ng dn n tn lp m action cn thc thi. Multiple Result : Tip theo, mt cch phc tp hn s dng khi action c th tr v nhiu kt qu khc nhau ty thuc vo x l logic theo yu cu ca ngi s dng. Lp action ny c th c m t n gin nh sau :
class MyAction { public void String execute() throws Exception { if( myLogicWorked() ) { return "success"; } else { return "error"; } } }

y, lp action c th tr v mt trong hai gi tr khc nhau. Do vy, chng ta cn cu hnh trong file struts.xml :
<action name="my" class="com.struts.MyAction" > <result>view.jsp</result> <result name="error">error.jsp</result> </action>

Trong cc v d va ri, chng ta s dng nhng cch chung nht xc nh kt qu cho mt action. Tuy nhin, trong thc t, c bn ty chn cho php bn thc hin mun ny :
1. Phng thc action tr v gi tr kiu String gi tr tr v ny s c i

snh vi thuc tnh trong file cu hnh ca struts.


2. S dng tin ch code behind plugin Khi code behind plugin c s dng,

cc template hin th s c tm bi s mc ni tn action vi xu tr v t action . V d, Nu URL c dng /adduser.action v gi tr tr v ca action l success th n s tm n file JSP c dng /adduser-succcess.jsp.

3. S dng @Result annotation Lp action c th c ch thch cc kt qu

tr v thng qua vic s dng cc ch thch @Results v @Result. Xu gi tr tr v cn c i snh vi mt trong nhng result c ch thch trong file cu hnh.
4. S dng acion tr v mt th hin lp Result Action khng cn tr v gi tr

String, thay vo n c th tr v mt th hin ca lp Result c cu hnh sn sng s dng. II.2.3.2. Interceptors Nhiu tnh nng h tr trong Struts2 framework c thc thi bng vic s dng Interceptors; bao gm vic x l exception, file upload, lifecycle callbacks v validation. Interceptors l khi nim tng t nh vi servlet filters hoc cc lp JDK Proxy. Chng h tr cch thc p dng tin x l v hu x l i vi action. Tng t nh servlet filters, cc interceptors c th c nhiu lp v c th t. Di y l mt s loi Interceptor :

Spring Framework ActionAutowiringInterceptor interceptor. Request String v Form Values ParametersInterceptor interceptor. Servlet-based objects ServletConfigInterceptor interceptor.

Hai interceptor u lm vic c lp, khng cn ti action, nhng interceptor cui th khc. N lm vic vi s tr gip ca cc interface sau :

SessionAware h tr truy xut ti ti tt c cc thuc tnh ca session thng qua Map. ServletRequestAware h tr truy xut ti i tng HttpServletRequest. RequestAware h tr truy xut ti cc thuc tnh request thng qua Map. ApplicationAware h tr truy xut ti tt c cc thuc tnh ca application thng qua Map. ServletResponseAware HttpServletResponse. h tr truy xut ti i tng

ParameterAware h tr truy xut ti tt c cc xu request v cc thuc tnh gi tr ca form thng qua Map. PrincipalAware h tr truy xut ti i tng PrincipleProxy, i tng ny thc thi cc phng thc ca i tng HttpServletRequest, nhng cung cp qua proxy, cho php thc hin c lp trong action. ServletContextAware h tr truy xut ti i tng ServletContext.

Cu hnh Interceptors cu hnh Interceptor, trc ht chng ta cn nh ngha interceptor. S dng cc th <interceptors../> v <interceptor../> trc tip trong th <package>. V d nh di y :
<package name="default" extends="struts-default"> <interceptors>

<interceptor name="timer" class=".."/> <interceptor name="logger" class=".."/> </interceptors> <action name="login" class="tutorial.Login"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <result name="input">login.jsp</result> <result name="success" type="redirect-action">/secure/home</result> </action> </package>

Cn ch l cc interceptor c nh ngha cn phi c p dng cho action. Chng ta c th s dng interceptor trc tip trong th <action/> nh trong v d trn. S dng cc cu hnh trn khg hn ch s lng cc interceptor p dng cho action. Khi cn, cc interceptor theo danh sch th t s c thc hin. Mt cch khc l s dng interceptor ngm nh cho package hin ti :
<default-interceptor-ref name="autowiring"/>

II.2.3.3. Value Stack / OGNL Value stack gin nh ci tn ca n, l mt stack cha cc object. OGNL l vit tt ca cm t Object Graph Navigation Language, v cung cp cch m hnh ha truy xut cc object trong value stack. Value stack bao gm cc i tng theo th t sau :
1. Temporary Objects Cc i tng tm trong qu trnh thc thi c to ra

v lu trong value stack; v d nh qu trnh lp hin th danh sch cc i tng thng qua th JSP.
2. Model Object Nu cc i tng ny c s dng, model object hin ti s

c lu trc i tng Action trong value stack.


3. Action Object i tng action c thc thi. 4. Named Objects l cc i tng bao gm #application, #session, #

request, #attr v #parameter. Vic truy xut ti value stack c th c thc hin theo nhiu cch khc nhau. Cch thng thng nht l thng qua cc th c h tr bi JSP, Velocity v Freemarker. Cc th HTML thng thng c s dng truy xut cc thuc tnh ca cc i tng t value stack; cc th iu khin (nh if, elseif v iterator) c s dng vi cc biu thc; v cc th d liu dng thao tc vi stack (thng qua phng thc set v push). Khi s dng value stack, chng ta khng cn gi li phm vi ca i tng ch trong . Nu bn mun thuc tnh l name, bn ch cn truy vn ti value stack vi thuc tnh ny. Mi thnh phn trong stack, theo nh th t trn yu cu c mt thuc tnh. Nu nh thuc tnh ny trng vi thuc tnh m ta truy vn v n s tr v gi tr s dng. Ngc li, thnh phn tip theo s c truy vn. Qu trnh ny s c tip tc cho n khi ht stack. y l mt tnh nng rt tt, bi v bn khng

cn phi quan tm gi tr trong l g action, model hay HTTP request Bn ch cn bit l nu c gi tr tn ti trong stack th n s c ly ra. OGNL l gii php truy xut cc thuc tnh, phng thc ca i tng trong value stack, n cha y tnh nng ca mt ngn ng biu thc. N gip n gin ha cc biu thc so vi phng php s dng theo cch truyn thng (V d: s dng person.address thay v dng getPerson().getAddress()). OGNL h tr cc tnh nng nh chuyn i kiu d liu, gi cc phng thc, thao tc v to cc collection, c lng biu thc

II.2.3.4. Result Types Trong Struts2 h tr nhiu kiu result. Chng c th nhn thy, hoc chng c th tng tc vi mi trng. cu hnh mt action thc thi mt result theo mt kiu xc nh, chng ta s dng thuc tnh type. Nu khng c thuc tnh type th ngm nh kiu l dispatcher s hin th kt qu trang JSP. Di y l mt dng v d n gin :
<action name="my" class="com.struts.MyAction" > <result type="dispatcher">view.jsp</result> </action>

Cu hnh result type Result type c th c cu hnh trong th <package />. Vic cu hnh tng t nh cu hnh vi interceptor. Thuc tnh name cung cp mt nh danh duy nht cho result type, v thuc tnh class l ng dn ti lp cn thc hin. C mt thuc tnh ngm nh th ba l default cho php result type ngm nh c thay i.
<result-types> <result-type name="dispatcher" default="true" class=".dispatcher.ServletDispatcherResult"/> <result-type name="redirect" class=".dispatcher.ServletRedirectResult"/> </result-types>

II.2.3.5. Results / View technologies Trong cc v d trc, chng ta vn s dng JSP (Java Server Pages) hin th tng View. Mc d JSP l mt la chn ph bin nht, tuy nhin, n khng phi l gii php duy nht cho tng hin th. C ba cng ngh khc c th thay th JSP trong mt ng dng Struts2 : Velocity Templates Freemarker Templates XSLT Transformations C php ca cc ngn ng tempalte ny l khc nhau. Velocity v Freemarker kh ging vi JSP. Tt c cc thuc tnh ca action (thng qua cc phng thc gettet) u c th s dng d dng trong cc templte ny, gin nh vic s dng th vin th h tr trong JSP v OGNL. Tn ca cc template JSP s c thay th bng tn ca

cc templte dng Velocity v Freemarker trong vic cu hnh cc action. Di y l v d cu hnh cho tempalte Freemarker thay th cho JSP :
<action name="my" class="com.fdar.infoq.MyAction" > <result type="freemarker">view.ftl</result> </action>

XSLT result c mt cht khc bit. Thay v thay th tn tempalte vi tn stylesheet, n thm cc tham s s dng. Tham s stylesheetLocation cung cp tn ca stylesheet s dng biu din XML. Nu nh khng c tham s ny, XML s khng c chuyn i ti ngi dng.

II.2.4. Th vin th trong Struts


II.2.4.1. Th vin th trong version 2.xx Th vin th thng thng :
a action bean date debug i18n include param property push set text url

Control Tags

if elseIf else append generator iterator merge sort subset

Data Tags

Th vin th UI :
checkbox checkboxlist combobox doubleselect head file form hidden label optiontransferselect optgroup password radio reset select submit textarea textfield token

Form Tags

NonForm UI Tags

actionerror actionmessage component div fielderror

Ajax Tags

a autocompleter bind datetimepicker div head submit tabbedpanel textarea tree treenode

updownselect

II.2.5. Cu hnh trong Struts


II.2.5.1. Cu hnh trong version 2.xx Cc file cu hnh c bn trong ng dng Struts2 bao gm : web.xml, struts.xml v struts.properties. File cu hnh web.xml File cu hnh web.xml m t cc file nhn ca ng dng Web Java. N cng c th xem nh l mt thnh phn nhn ca Struts framework. Trong file web.xml, Struts nh ngha ra cc lp FilterDispatcher, Servlet Filter v khi to chng x l tt c cc request. h tr FilterDispatcher, Struts cung cp thm lp ActionContextCleanUp x l nhim v dn dp i vi cc filter khc. Di y l v d n gin trong file cu hnh web.xml :
<web-app id="WebApp" 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"> <filter> <filter-name>struts</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>com.mycompany.myapp.actions</paramvalue> </init-param> </filter>

<filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

File cu hnh struts.properties File cu hnh ny cung cp kh nng thay i hnh vi ngm nh ca framework.Tt c cc thuc tnh cha trong file cu hnh struts.properties cng c th c cu hnh s dng th init-param trong file web.xml, hoc cng c th s dng th constant trong file cu hnh struts.xml. File thuc tnh ngm nh c tn l default.properties c cha trong file jar struts2-core. c th thay i cc thuc tnh ngm nh, cn to ra file struts.properties trong th mc gc ca project. Sau , thm cc thuc tnh m bn mun thay i. Gi tr mi to s ghi ln gi tr ngm nh. Trong mi trng pht trin, cc thuc tnh sau c th cn thay i :

struts.i18n.reload = true - cho php reload li cc file trong ng dng. struts.devMode = true - cho php ch pht trin ci hin kh nng debug. struts.configuration.xml.reload = true cho php reload li cc file cu

hnh XML khi c s thay i m khng cn reload li ton b ng dng web trong servlet container. File cu hnh struts.xml File cu hnh struts.xml cha cc thng tin cu hnh cho cc action khi thc thi trong ng dng. N cng cha cc tham s khi to cc ti nguyn, bao gm : Cc interceptor : h tr vic tin x l v hu x l cc request. Cc lp action : dng gi tng nghip v v truy xut d liu.
Cc Result: chun b hin th d liu s dng JSP, Velocity v Freemarker.

Di y l v d v file cu hnh struts.xml :


<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="account" namespace="/account" extends="tiles-default"> <action name="create" method="create" class="vn.tricc.action.account.CreateAccount"> <result name="create" type="tiles">account.create</result> </action> <action name="createCompleted" method="createCompleted" class="vn.tricc.action.account.CreateAccount"> <result name="createCompleted" type="redirectaction">list</result> </action> </package> </struts>

II.2.6. u nhc im ca Struts trong xy dng ng dng Web


Struts k tha ton b nhng u im t m hnh MVC mang li : tin cy cao, kh nng ti s dng v kh nng p ng cao, gi chi ph chp pht trin v vng i thp, kh nng bo dng d dng, thc thi ng dng nhanh. Vi Struts ngi lp trnh khng phi quan tm n vic xy dng MVC nh th no m ch cn cu hnh v chy tng hin th ca d n, iu ny cho php gim thiu chi ph o to, thi gian pht trin d n nhanh hn v cho php h thng chy n nh trn cc nn hoc cc module tch hp khc nhau. Theo tinh thn MVC trong Struts, Struts Framework khng c yu cu rng buc c bit vi thnh phn Model, kt ni v thao tc vi c s d liu. V vy, khi xy dng cc thnh phn Model trong ng dng Struts c th s dng

rt nhiu la chn : s dng EJB (Enterprise JavaBean), JDO (Java Data Object), Hibernate, hay cc JavaBean thng thng. Struts l mt framework cho tng web pht trin mnh nht trong nhng nm gn y. Cc hng sn xut nh Borland, Oracle, hay IBM u c gng a ra sn phm h tr v tch hp Struts trong vic xy dng cc ng dng web. Chnh v vy, n to ra mt cng ng s dng Struts ng o v to nn nhng sn phm ca cc hng th ba, xy dng nhng thnh phn v module h tr v s dng Struts, lm phong ph thm th vin cho ngi lp trnh web. c bit c rt nhiu sn phm phn mm c xy dng trn nn ca Struts framework v c s dng mt cch thnh cng, v d nh phn mm WebSphere Server. Mt trong nhng mc ch chnh ca Struts l ci t mt framework da trn model 2 ca Sun gim thiu cc nhim v chung v c tnh lp li trong vic xy dng cc trang Servlet v JSP. T nhng phn tch trn, ta thy r rng rng Struts l mt framework y ha hn trong lp trnh ng dng web. Tuy nhin, trong giai on hin nay, JSF ang trong qu trnh hon thin v b sung cc tnh nng v xy dng h thng th vin th ca mnh v ha hn s mang li nhiu tnh nng linh ng hn. Cc phin bn mi c cp nht t phin bn ban u ca JSF 1.0 n JSF 1.1 v hin nay l JSF 2.7 tch hp cho Swing v AJAX. y l mt s cnh tranh gia Struts v JSF. H thng cc th th vin h tr cho giao din ngi dng ca Struts l cha thng nht v y . iu ny mt phn l do Struts l m ngun m trn nn cng ngh Java. Do , vic xy dng h thng th vin l do cc t chc, c nhn ng gp. iu ny tuy l rt tt v s tn dng c tr tu cng ng . Nhng cng i hi cn c s hp tc c th h thng ha li th vin t s ng gp . B khung Struts c trch nhim tng tc vi cc thit b my khch (client) v cung cp cc cng c h tr kt hp 3 tng : trnh din trc quan (visual presentation), logic ng dng (application logic) v tng logic nghip v (business logic). Tuy vy, s kt ni vi tng c s d liu th Struts t ra khng mnh, chnh v vy m Struts thng kt hp vi cc framework iu khin d liu, v Hibernate t ra rt hu hiu trong vic h tr Struts trong lnh vc ny. Nhng vai tr v sc mnh ca Struts vn c th hin r khi kt hp vi cc cng ngh khc nh: JSP, AJAX, JSF

II.3. Hibernate framework II.3.1. Lch s hnh thnh


Hibernate l mt d n y tham vng vi ch nhm l a ra mt gii php ton din cho vn qun l Persistent Data trong Java. N gin tip gip cho cc ng dng c th tng tc vi c s d liu quan h. N gip cho cc Developer n gin ha i vi cc vn nghip v phi x l th cng. Hibernate tch hp c vi

hu ht cc ng dng mi hin nay v khng yu cu thay i ph v cc thnh phn cn li ca h thng. Mt ng dng c th chia lm 3 phn nh sau : phn giao din ngi dng (GUI layer), phn x l nghip v (business layer), v phn cha d liu (data layer). C th, business layer c th chia nh ra thnh 2 layer con l business logic layer (ch quan tm n ngha ca cc nghip v, cc tnh ton nhm tha mn yu cu ngi dng) v persistence layer. Persistence layer chu trch nhim giao tip vi data layer (thng l mt h qun tr c s d liu quan h - RDBMS). Persistence s m nhim cc nhim v m kt ni, truy xut v lu d liu vo cc RDBMS. Vic phn chia ra nh vy c li ch l cng vic s c tch bch. Ngi no lo thit k v x l GUI th ch vic ch tm vo cng vic . Ngi lo business layer th ch cn tp trung vo thit k v pht trin lm sao tha mn cc requirement ca khch hng m khng phi ch tm n cc kha cnh thc hin bn di. Cn ngi lo persistence layer th ch ch trng n cc kha cnh thc hin v gii quyt cc technical issues m thi. Cng nh s c nhng DBA (DB Administrators) lo vic ci t v to cc object trong cc RDBMS. Nh vy, persistence layer l mt layer c nhim v kt ni RDBMS v truy xut, thao tc d liu c lu tr cng nh lu tr d liu mi vo chng. Hibernate chnh l mt framework cho persistence layer. C th thy rng nh c Hibernate framework m gi y khi pht trin mt ng dng, ta ch cn ch tm vo nhng layer khc m khng phi bn tm nhiu v persistence layer na. Tng t nh vy, nu bn c mt UI framework, bn cng s khng phi bn tm nhiu v GUI layer na. C s d liu quan h c thit k qun l d liu theo m hnh quan h. Tuy nhin, khi lm vic vi cc ng dng hng i tng, bn c th gp mt s vn khi c gng persist cc i tng vo trong m hnh quan h. Vi s khc bit ca hai m hnh, lm th no chng lm vic c vi nhau. gii quyt vn ny, object / relational mapping (ORM) ra i. ORM l cu ni gia hai m hnh, cho php ng dng ca bn persist cc i tng trc tip vo c s d liu quan h m khng cn chuyn i qua li gia object v relational. C mt vi ORM framework yu cu cc i tng k tha t lp c bn hoc yu cu x l bytecode. Trong khi , Hibernate ch yu cu mt s lng nh metedata cho mi i tng persistent. N cung cp y nh x i tng / quan h, ngha l h tr tt c cc c trng hng i tng m c s d liu quan h thiu.

II.3.2. Mt s khi nim


II.3.2.1. Cc khi nim lin quan n object / relational persistence Persistence l g ? Hu ht cc ng dng u i hi d liu persistent. Persistence l mt khi nim c bn trong qu trnh pht trin ng dng. Nu mt h thng thng tin khng duy tr c d liu khi n khng hot ng th h thng kh c th c s dng tt. Khi ni v persistence trong Java, chng ta thng ni v vic lu tr d liu trong

m hnh c s d liu quan h s dng SQL. Persistence l ni n kh nng mt i tng duy tr s tn ti sau thi gian sng ca chng trnh to ra n. Nu khng c kh nng ny, d liu ch tn ti trong b nh v s mt i khi b nh tt hoc my tnh shutdown. Persistence trong cc ng dng hng i tng Trong mt ng dng hng i tng, persistence cho php mt i tng c th sng lu hn. Trng thi ca i tng c th c lu trn a, v mt i tng vi cng trng thi c th li c to ra mt thi im khc trong tng lai. Cc c s d liu quan h ngy nay h tr biu din c cu trc ca d liu persistent, n cho php thao tc, sp xp, tm kim v kt tp d liu. Cc h qun tr c s d liu h tr vic qun l tnh ton vn ca d liu, chia s d liu a ngi dng vi nhiu ng dng khc nhau. Chng bo m tnh ton vn ca d liu thng qua cc quy tc c thc thi bi cc rng buc. H qun tr c s d liu cng h tr vic bo mt nhiu cp i vi d liu. Mt ng dng s dng Hibernate thng khng lm vic trc tip vi cc thc th trong c s d liu, chng s s dng cc m hnh hng i tng tng ng vi cc thc th trong c s d liu thao tc v x l d liu. V d: Nu c s d liu ca mt h thng bn hng trc tuyn c 2 bng l ITEM v BID th trong ng dng Java s nh ngha ra 2 lp tng ng l Item v Bid. Sau , thay v lm vic trc tip vi cc dng v ct ca result-set SQL, tng business s tng tc vi cc i tng ny. Tng business s khng c thc thi trong c s d liu (nh l mt stored procedure); n c thc thi trong ng dng Java tng ng dng. iu ny cho php tng business c th s dng cc khi nim hng i tng phc tp nh tnh k tha hay tnh a hnh.V d, Chng ta c th s dng cc chun thit k nh Strategy, Mediator, v Composite. Cn ch l: Khng phi tt c cc ng dng Java u c thit k theo cch ny. i vi cc ng dng n gin, vic thc hin theo m hnh ny li tr nn khng ph hp. i vi cc ng dng phc tp m c th s dng li cc stored procedure sn c th SQL v JDBC API li l mt gii php tt cho vic thc thi v giao tip vi c s d liu. Tuy nhin, trong trng hp cc ng dng mang tnh nghip v cao, cch tip cn theo m hnh ny s gip cho vic ci thin vic dng li code v nng cao kh nng bo tr. II.3.2.2. Persistence layer Hnh II.9 di y th hin mi lin h gia tng persistence vi cc tng khc trong mt ng dng. Cc tng lin h vi nhau theo cc nguyn tc : Cc tng giao tip vi nhau theo th t t trn xung di. Mt tng ch ph thuc trc tip vo tng ngay di n. Mi tng khng bit n cc tng khc m khng phi ngay di n.

Hnh II.6 Persistence layer trong kin trc phn tng


Presentation layer : Tng giao din ngi dng l tng cao nht. chnh l cc m lnh dng biu din hin th v iu hng trang trn mn hnh. Business layer : Tng tip theo ca ng dng- nm di tng presentation. Tng business c nhim v thc hin bt c quy tc nghip v no hoc cc yu cu h thng c xc nh t ngi s dng. Tng ny thng bao gm mt s cc thnh phn iu khin cc m lnh dng khi kch hot cc quy tc nghip v. Trong mt s h thng, tng ny c th cha biu din ca cc thc th nghip v. Persistence layer : Tng persistence l mt nhm cc lp v cc thnh phn cho vic lu tr v phc hi d liu. Chc nng ca tng ny l cha cc m hnh ca cc thc th nghip v (thm ch n ch l m hnh metadata).
Database: C s d liu nm ngoi ng dng Java. N biu din trng thi

ca h thng. Nu c s d liu SQL c s dng, n bao gm cc lc quan h v cc stored procedure.


Helper and utility classes: Mi mt ng dng c mt tp helper hoc cc lp

tin ch c s dng trong mi tng (v d nh cc lp Exception x l li). Cc thnh phn ny khng phi l mt dng tng v chng khng tun theo nguyn tc trong kin trc tng. II.3.2.3. ORM (Object/Relational Mapping) Nh gii thiu s qua phn trn, ORM c t ng (v trong sut) nh x persistence object ti cc bng trong c s d liu quan h, s dng metadata m t vic nh x gia cc i tng v c s d liu. Mt ORM bao gm bn phn sau : Mt API thc thi cc thao tc c bn CRUD trn i tng ca cc lp persistent. Mt ngn ng hay API xc nh cc truy vn ti cc lp v cc thuc tnh ca lp. Mt tin ch cho vic xc nh nh x metadata.

Mt k thut cho vic thc thi ORM lin h vi cc i tng vi cc thao tc checking, fetching v cc hm ti u khc. Vi ORM, ng dng s tng tc vi cc ORM API v cc lp nh x t c s d liu v n c tru tng ha di SQL/JDBC. Da trn cc tnh nng hay vic thc thi c bit, ORM cng c th lm cc nhim v nh locking, caching, relieving mt ng dng.

II.3.3. Kin trc h thng


Hnh II.10 di y m t cc thnh phn quan trng nht ca Hibernate trong cc tng business v persistence. Chng ta c th thy tng business nm trn tng persistence, v n hot ng nh l trnh khch (client) ca tng persistence theo kin kiu kin trc tng truyn thng. Cc interface nh trong hnh c th c chia ra thnh cc loi sau :
Cc interface c gi bi ng dng thc thi cc thao tc c bn CRUD

(Create, Retrieve, Update, Delete) v cc hnh vi truy vn. l cc phn chnh ca s ph thuc nghip v ng dng / logic iu khin trong Hibernate. Chng bao gm : Session, Transaction v Query.
Cc interface c gi t cc m lnh trong ng dng cu hnh Hibernate,

hu ht l cc lp Configuration.
Cc interface CallBack cho php ng dng tng tc vi cc s kin xy ra

trong Hibernate, nh Interceptor, Lifecycle, v Validatable.


Cc interface cho php m rng chc nng mapping ca Hibernate, bao gm

UserType, CompositedUserType, v IdentifierGenerator. Cc interface ny c thc hin bi cc m lnh trong ng dng (nu cn thit).

Hnh II.7 Kin trc h thng trong Hibernate

Hibernate c th s dng cc thnh phn sn c ca Java API, bao gm JDBC, Java Transaction API (JTA), v Java Naming and Directory Interface (JNDI). JDBC h tr cc mc c bn ca vic tru tng ha cc chc nng chung ca cc c s d liu quan h, n cho php hu nh bt c c s d liu no vi JDBC driver c th c h tr bi Hibernate. JNDI v JTA cho php Hibernate c th tch hp vi cc J2EE application server.

II.3.4. Cu hnh trong Hibernate


Cc file cu hnh c bn nhng khng th thiu trong ng dng Hibernate bao gm : 1. Persistence class: Persistence class l mt Plain Old Java Object (POJO model). Mt POJO tng t nh mt JavaBean, c nhng phng thc getter v setter truy cp cc thuc tnh ca n. Persistence class c nhng c im sau : N thay th hng i tng cho cc bng c s d liu. Cc thuc tnh ca bng tr thnh cc bin instance ca persistence class. Kiu d liu ca cc bin instance l domain ca thuc tnh. i tng ca persistence class thay th cho hng ca bng trong c s d liu.
2. Mapping file:

Mapping file l mt file XML cha nh x chi tit gia persistence class v bng n i din. Cc thnh phn bt buc ca file XML ny l :
Hibernate mapping : y l thnh phn gc bao gm tt c cc thnh phn

khc.
Class : c s dng nh x tn bng thnh persistence class. Tn thuc

tnh c s dng xc nh tn lp. V d, nh x mt bng c tn l ORDER thnh mt persistence class vi tn y l vn.triax.persist.Order s nh sau :
<class name=vn.triax.persist.Order table=ORDER></class>

Id : Thnh phn ny s dng nh x kha chnh ca bng thnh mt bin

instance ca class. Gi tr ca kha chnh c th c t ng to ra.Thnh phn generator c th c s dng thng bo cho Hibernate mt lp s c s dng u t ng to id, hoc id c gn bi ng dng :
<id name="id" type="string" unsaved-value="null"> <column name="id" sql-type="char(32)" not-null="true"/> <generator class="assigned"/> </id>

Property : Thnh phn ny thuc v cc ct thnh phn con ca bng, nh x

nhng thuc tnh khc (hoc cc ct thnh nhng bin instance ca persistence class). Thuc tnh name ca property cha tn ca bin nh mt gi tr. Thuc tnh name ca thnh phn column cha tn ca ct v bin instance c nh x. Cc thuc tnh length v sql-type tr n di v kiu d liu ca ct.

<property name="name"> <column name="name" sql-type="char(255)" notnull="true"/> </property>

Di y l mt v d c th ca file mapping :
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="vn.tricc.domain.Accounts" table="accounts" schema="public"> <id name="accountId" type="java.lang.Integer"> <column name="account_id" /> <generator class="increment" /> </id> <property name="username" type="java.lang.String"> <column name="username" length="20" notnull="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="50" notnull="true" /> </property> <property name="status" type="java.lang.String"> <column name="status" length="1" not-null="true" /> </property> <set name="accountRoles" inverse="true"> <key> <column name="account_id" not-null="true" /> </key> <one-to-many class="vn.tricc.domain.AccountRole" /> </set> </class> </hibernate-mapping>

3. Hibernate Configuration file : y l file cu hnh, khi to cc ti nguyn trong h thng, bao gm khi to cc thng tin v c s d liu, cu hnh transaction v to nh x ti cc file mapping. Di y l mt v d c th ca file cu hnh ny :
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. <hibernate-configuration> <session-factory> <property name="connection.username">postgres</property> <property name="connection.url"> jdbc:postgresql://localhost:5432/tricc </property> <property name="dialect"> org.hibernate.dialect.PostgreSQLDialect -->

</property> <property name="connection.password">postgres</property> <property name="connection.driver_class"> org.postgresql.Driver </property> <mapping resource="vn/tricc/domain/Roles.hbm.xml" /> <mapping resource="vn/tricc/domain/AccountRole.hbm.xml" /> <mapping resource="vn/tricc/domain/Accounts.hbm.xml" </session-factory> </hibernate-configuration>

/>

II.3.5. u nhc im ca Hibernate trong lp trnh ng dng Web


u im : 1. Hibernate l mt Relational Persistence cho Java : Lm vic vi c phn mm hng i tng v c s d liu quan h l mt nhim v phc tp vi JDBC v c s khng tng xng gia d liu c biu din trong i tng i vi c s d liu quan h. V th vi JDBC, ngi lp trnh phi vit code nh x d liu ca m hnh i tng biu din m hnh d liu quan h v cc lc d liu tng ng. Hibernate l mt gii php ORM rt mnh v linh ng nh x cc lp Java ti cc bng trong c s d liu. Hibernate bn thn n c m bo tnh nht qun bng cch s dng cc file XML gip cho ngi lp trnh khng phi vit code nh i vi JDBC. 2. Transparent Persistence Vic t ng nh x cc i tng Java vi cc bng trong c s d liu c gi l Transparent Persistence. Hibernate h tr persistence trong sut v ngi lp trnh khng cn vit code mt cch r rng nh x cc bng trong c s d liu ti cc i tng trong ng dng trong khi tng tc vi RDBMS. 3. H tr ngn ng truy vn JDBC ch h tr ngn ng SQL truyn thng. Ngi lp trnh s phi tm nhng cch thc ph hp nht truy xut c s d liu. Hibernate h tr ngn ng truy vn mnh m l HQL, mt ngn ng c y cc tnh nng nh ngn ng SQL v nhng phn m rng khc gip cho gii quyt cc vn truy vn phc tp. 4. Database da vo code ng dng s dng JDBC x l d liu persistent s c s lng code rt ln. l nhng m lnh nh x d liu bng ti i tng ca ng dng. Khi mt bng b thay i hoc database c s thay i th s lng code phi

thay i theo s rt ln v phc tp. Hibernate h tr nh x ngay trong bn thn n. Nhng nh x gia cc bng v cc i tng ng dng c thn qua cc file XML. Nu c bt c s thay i no trong database hay cc bng th ta ch cn thay i thuc tnh ca file XML. 5. Gim chi ph bo tr Vi JDBC, ngi lp trnh s phi x l cc result set v chuyn i n thnh cc i tng Java c th s dng d liu persistent trong ng dng. V vy vi JDBC, vic nh x gia cc i tng Java v cc bng trong database l cng vic th cng. Hibernate gim thiu cc dng m lnh bng cch duy tr vic nh x object-table ngay trong n v tr kt qu v ng dng thng qua cc lp Java. N gip cc lp trnh vin gim bt gnh nng x l th cng i vi d liu persistent, do vy lm gim thi gian pht trin v chi ph bo tr. 6. Thc hin ti u Cc d liu c gi li trong b m, s dng trong ng dng gim thiu qu trnh truy xut a cng. Hibernate, vi transparent persistence, b m c thit lp trong khng gian lm vic ca ng dng. Cc relational tuple c a vo b m nh l mt kt qu ca truy vn. N gip ci thin tc thc thi nu ng dng client c cc d liu ging nhau nhiu thi im v ghi nhiu ln. 7. M ngun m v hon ton min ph Hibernate l d n m ngun m v min ph s dng cho c qu trnh pht trin ln trin khai sn phm. 8. tin cy cao v d m rng phm vi Phm vi p dng Hibernate thch hp trong bt c mi trng no. Khng c vn g nu s dng n vi mng Intranet vi hng trm nghn server. JDBC khng th d dng lm c iu ny. Nhc im : 1. S dng Hibernate l khng kh thi vi cc ng dng : n gin, s dng mt database v khng c s thay i. Cn a d liu ti cc bng trong database m khng dng n cc truy vn SQL. Khng c cc i tng c nh x ti hai bng khc nhau. Hibernate c nhiu tng v tng i phc tp. V vy, i vi cc loi ng dng trn th gii php s dng JDBC l la chn tt nht. 2. S h tr Hibernate trn Internet l cha . 3. Bt c ai mun duy tr ng dng s dng Hibernate s cn phi hiu v Hibernate. 4. i vi d liu phc tp, vic nh x t i tng ti cc bng khng lm gim thi gian thc hin v c th lm tng thi gian chuyn i.

5. Hibernate khng cho php mt s kiu truy vn c h tr trong JDBC. V d, n khng cho php insert nhiu i tng (persistent data) ti cc bng ng thi s dng mt cu truy vn. Ngi lp trnh s phi vit nhiu cu truy vn insert mi i tng.

II.4. Spring framework II.4.1. Lch s hnh thnh


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 vit cun sch vi tiu : J2EE Development without EJB gii thiu khi nim trnh cha hng nh (lightweight container) vi l lun : EJB c gi tr ca n nhng khng phi lc no cng cn thit v ph hp cho tt c ng dng. Theo Rod Johnson th EJB khng phc tp nhng n c gng cung cp gii quyt cho cc vn phc tp. EJB c pht trin chnh cho cc giao dch, i tng c phn pht trn cc 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 li tr nn phc tp. Trong trng hp ny th Spring l mt la chn. Cc framework ph bin khc nh Struts, JSF, Tapestry l cc framwork tt cho tng Web nhng khi chng ta s dng 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 AOP integration framework JDBC integration framework EJB integration framework Cc mt mnh trong kin trc Spring bao gm : Spring t chc cc tng trung gian mt cch hiu qu, m khng quan tm liu ngi dng c s dng EJB hay khng. Spring s thm d xem c nn ngi dng t quyt nh nu ngi dng ch dng Struts hoc cc framework khc vi cc API ca J2EE. V thnh phn c coi l quan trng nht trong tng trung gian, cc dch v qun l cu hnh ca Spring c th a vo mt tng kin trc no ca mt mi trng thc thi bt k. Spring s gip loi b tnh trng lan trn Singleton trong nhiu d n. Theo mt s nh nghin cu, y l mt vn ln, lm suy gim kh nng kim th v tnh hng i tng. Spring s khin cng ng dn qun i nhu cu s dng cc nh dng file thuc tnh thit k thng qua vic qun l cu hnh nht qun trong cc ng dng v cc d n. Vi IoC (Inversion of Control) v DI (Dependency

Injection), ngi dng ch cn quan st cc thuc tnh JavaBean ca lp cho cc tham s khi to m khng c phi c Javadoc hay m ngun. Spring gip cng vic lp trnh tr nn hiu qu hn bng cch gim chi ph lp trnh giao din, m khng phi l cc lp. Spring c thit k cc ng dng ph thuc mc ti thiu vo cc hm API. Phn ln cc i tng giao dch trong cc ng dng Spring u khng c s ph thuc no vo Spring. Cc ng dng xy dng trn nn Spring rt d kim th n v. Spring bin vic s dng EJB l mt ty chn thay v l thnh phn bt buc trong kin trc ng dng. Ngi dng c th chn ci t cc chun thng mi nh POJO hoc EJB cc b m khng nh hng ti m gi. Spring cn tr gip gii quyt nhiu vn m khng cn EJB. Spring cung cp mt cng c thay th EJB ph hp vi cc ng dng. V d, Spring s dng AOP phn phi cc qun l khai bo m khng dng container EJB, thm ch khng cn JTA, nu ch cn lm vic vi mt c s d liu. Spring cung cp mt framework nht qun truy cp c s d liu, d ngi dng s dng JDBC hay mt s sn phm nh x O/R nh TopLink, Hibernate hoc mt ci t JDO. Spring s dng mt m hnh lp trnh n gin, nht qun trong nhiu lnh vc, bin cng c ny tr thnh mt loi h gn kt kin trc l tng. C th thy r iu ny khi so snh vi vi JDBC, JMS, JavaMail, JNDI v nhiu hm API quan trng khc.

II.4.2. Cc thnh phn trong Spring


Spring framework c th c xem nh mt kin trc cha 7 module. Chc nng ca mi thnh phn nh sau : 1. Core container: Core container cung cp cc chc nng c bn ca Spring. Thnh phn chnh ca n l BeanFactory, mt ci t ca Factory Pattern. BeanFactory p dng IoC pattern c t s ph thuc t code ca ng dng. 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.

Hnh II.8 Cc module trong Spring


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 s dng 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 vo m ngun hng dn Spring ni v lm th no lin h vi aspect.

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 thng qua 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. 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. 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 request v gn cc tham s ca request vo cc i tng domain. 7. Spring MVC Framework MVC framework ci t y cc c tnh ca MVC pattern xy dng cc ng dng web. MVC framework cu hnh thng qua giao din v cha ng mt

s k thut view bao gm : JSP, Velocity, Tiles v generation of PDF v Excel file.

II.4.4. Cu hnh Spring


Ngi dng Spring thng cu hnh ng dng ca h trong cc file XML nh ngha bean. Th gc ca mt ti liu XML nh ngha bean l <bean>. Thnh phn <beans> cha mt hoc nhiu nh ngha <bean>. Chng ta thng ch ra lp v thuc tnh ca tng nh ngha bean. Chng ta cng phi xc nh id y s l tn s dng khi tham chiu n bean trong m chng trnh. Hy xem xt mt v d n gin thc hin vic cu hnh 3 i tng ng dng vi cc mi quan h thng thy trong cc ng dng J2EE:

Mt J2EE DataSource Mt DAO s dng DataSource Mt i tng nghip v s dng DAO trong qu trnh lm vic

Trong v d di y, chng ta s dng mt BasicDataSource t d n Jakarta Commons DBCP. (ComboPooledDataSource t d n C3PO cng l mt la chn tt). Cng ging nh cc lp sn c khc, BasicDataSource c th d dng c s dng trong mt Spring bean factory v n c th c cu hnh theo kiu JavaBean. Phng thc close cn c gi shutdown c ng k thng qua thuc tnh destroy-method ca Spring nhm trnh cho BasicDataSource khng phi ci t bt k giao din Spring no.
<beans> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mydb" /> <property name="username" value="someone" /> </bean>

Tt c cc thuc tnh ca BasicDataSource m chng ta chn vo l cc String, v vy, chng ta ch ra gi tr ca chng bng thuc tnh value. (Cch lm ngn gn ny c gii thiu trong Spring 1.2. N l mt cch thay th tin li cho phn t con <value> - rt hu ch cho cc gi tr m thuc tnh XML gp kh khn trong vic nh ngha). Spring s dng c ch JavaBean PropertyEditor chun chuyn i cc biu din String thnh cc kiu khc khi cn thit. By gi, chng ta nh ngha DAO, gm mt bean tham chiu ti DataSource. Cc mi quan h gia cc bean c ch ra bng cch s dng thuc tnh ref hay phn t <ref>:
<bean id="exampleDataAccessObject" class="example.ExampleDataAccessObject"> <property name="dataSource" ref="myDataSource" /> </bean>

i tng nghip v c mt tham chiu ti DAO, v mt thuc tnh kiu int (exampleParam). Trong trng hp ny, chng ta s dng c php phn t con quen thuc vi nhng ngi tng s dng cc phin bn Spring trc:
<bean id="exampleBusinessObject" class="example.ExampleBusinessObject"> <property name="dataAccessObject"> <ref bean="exampleDataAccessObject"/> </property> <property name="exampleParam"> <value>10</value> </property> </bean>

Cc mi quan h gia cc i tng thng c thit lp mt cch tng minh trong cu hnh. Tuy nhin, Spring cng cung cp ci m chng ta gi l h tr autowire, trong ch ra cc ph thuc gia cc bean. Hn ch ca vic ny cng nh vi PicoContainer l nu c nhiu bean thuc mt kiu c th th khng th tm ra thc th m ph thuc ca kiu p dng cho. V mt tch cc, cc ph thuc khng tho mn c th c pht hin khi khi to factory. (Spring cng cung cp mt c ch kim tra ph thuc ty chn cho cu hnh tng minh t c mc ch ny). Chng ta c th s dng tnh nng autowire nh sau, nu khng mun vit m tng minh cho cc mi quan h ny:
<bean id="exampleBusinessObject" class="example.ExampleBusinessObject" autowire="byType"> <property name="exampleParam" value="10" /> </bean>

Nh vy, vi cch ny, Spring s tm ra thuc tnh dataSource ca exampleBusinessObject cn c thit lp cho ci t ca DataSource m n tm thy trong biu din BeanFactory. S pht sinh li nu khng c, hoc c nhiu hn mt bean ca kiu yu cu trong biu din BeanFactory. Chng ta vn cn thit lp thuc tnh exampleParam, v n khng phi l mt tham chiu. Hy ch ti cc b thit lp thuc tnh (property setter) trong cc lp nghip v tng ng vi cc tham chiu XML trong ti liu nh ngha bean. Chng c gi bi Spring trc khi i tng c s dng. Lu rng cc thuc tnh JavaBean khng c khai bo trn cc giao din nghip v m cc i tng gi lm vic vi. Chng l mt ci t chi tit. Chng ta c th d dng plug-in cc lp ci t khc nhau vi cc thuc tnh bean khc nhau m khng lm nh hng ti cc i tng hay li gi lin quan.

II.4.5. u im ca Spring
Qun l phin. Spring gip kim sot hiu qu, d dng, v an ton cc n

v cng vic nh cc phin lm vic Hibernate hay TopLink. M lin quan ch s dng ring cng c ORM thng cn phi s dng km mt i tng Session kim sot tnh hiu qu v giao dch thch hp. Spring c th to mi v lin kt mt phin ti lung hin ti mt cch trong sut, bng cch s dng hoc hng tip cn kiu l chn AOP, hoc s dng mt lp bao

template tng minh ti mc m Java. Do vy, Spring gii quyt c nhiu vn lin quan ti s dng nh hng ti nhiu ngi dng ca cng ngh ORM.
Qun l ti nguyn. Cc ng cnh ng dng (application context) Spring c

th kim sot v tr v cu hnh ca cc Hibernate SessionFactories, cc ngun d liu JDBC cng nh cc ngun ti nguyn lin quan khc. Do vy, Spring Framework cho php cc gi tr ny c d dng qun l v thay i.
Qun l giao dch tch hp. Spring cho php bn bao m ORM bng mt l

chn phng thc AOP, hoc mt lp bao template tng minh ti mc m Java. Trong bt k trng hp no, ng ngha giao dch u c kim sot gip bn, v vic kim sot giao dch thch hp trong trng hp xy ra cc ngoi l cng c quan tm. Nh chng ta s cp sau y, bn cng nhn c li ch ca kh nng s dng v tro i cc b qun l giao dch khc nhau, m khng b nh hng ti m ORM lin quan. Ngoi ra, mt li ch khc m Spring em li l m JDBC lin quan c th hon ton tch hp vi m ORM, trong hu ht cc cng c h tr ORM. iu ny rt hu ch cho vic kim sot tnh nng khng tun theo ORM.
Bao ng ngoi l. Nh c cp trn, Spring c th bao ng cc ngoi

l t tng ORM, chuyn i chng t cc ngoi l c quyn ca cc hng thnh mt tp cc ngoi l tru tng thi gian chy. iu ny cho php bn kim sot hu ht cc ngoi l bn b nht, l nhng ngoi l khng c kh nng khi phc, ch trong cc tng thch hp, m khng lm nh hng ti cc cm catch/throw v cc khai bo ngoi l c s dng thng xuyn. Bn c th vn by v kim sot cc ngoi l bt k ni no cn thit. Lu rng cc ngoi l JDBC (bao gm c cc c trng c th ca DB) cng c chuyn i ti cng h thng cp bc, ngha l bn c th thc hin mt s thao tc vi JDBC bn trong mt m hnh lp trnh nht qun.
Trnh s b buc ca cc nh cung cp. Cc gii php ORM c cc c

tnh hiu nng khc, v khng c gii php no tha mn c tt c. Thay vo , bn c th s nhn thy rng tnh nng c th li khng ph hp vi mt ci t s dng cng c ORM ca bn. V vy, mt gii php khn ngoan l tch kin trc ca bn khi cc ci t ph thuc cng c. Nu bn cn chuyn ti mt ci t khc v cc l do lin quan ti chc nng, hiu nng, hay cc mi quan tm khc, th vic s dng Spring hin ti c th khin vic chuyn i c d dng hn rt nhiu. S tru tng ca Spring trong Transactions v Exceptions ca cng c ORM, cng vi hng tip cn IoC cho php bn d dng chuyn i trong cc i tng nh x/DAO ci t chc nng truy cp d liu khin n d c lp tt c cc m ph thuc vo ORM c th trong mt lnh vc ca ng dng m khng lm nh hng ti sc mnh ca cng c ORM. ng dng mu PetClinic i km vi Spring demo li ch ca tnh kh chuyn m Spring em li thng qua vic cung cp cc bin s dng JDBC, Hibernate, TopLink v Apache OJB ci t tng tn ti lu di (pesistence layer).
D dng kim th. S chuyn i hng tip cn iu khin ca Spring

khin n d dng chuyn i ci t v v tr ca ngun ti nguyn nh cc session factory ca Hibernate, cc ngun d liu, trnh qun l giao din, v cc

ci t i tng nh x (nu cn thit). Vic ny gip d dng hn rt nhiu trong vic c lp v kim th tng on m lin quan mt cch tch bit.

CHNG III : XY DNG NG DNG TUYN DNG


III.1. Gii thiu bi ton tuyn dng III.1.1. Mc ch
Hin nay, nn kinh t nc ta ang trong qu trnh hi nhp, cc cng ty, doanh nghip cng bc vo giai on cnh tranh khc lit hn. Nhu cu v ngun nhn lc c chuyn mn tt, k nng cao ang l vn rt quan trng. Tuy vy, cc cng ty hay doanh nghip gp kh nhiu kh khn trong qu trnh tm kim cc ng vin cc iu kin cn thit cho cng vic ca mnh. Rt nhiu cng ty phi tuyn cc nhn vin v v phi tri qua qu trnh training tng i di th nhng nhn vin mi p ng c vi yu cu cng vic. iu ny gy lng ph v thi gian, cng sc v tin bc. Do vy, h rt mun c h thng m c th gip h tm kim c cc ng vin c nng lc cng nh chuyn mn p ng c ngay vi cng vic. Ngc li, i vi nhng ngi ang tm kim cng vic ph hp, h cng rt cn mt h thng c th gip h tm nhng cng ty, doanh nghip mt cch nhanh chng, hiu qu p ng c cc yu cu ca h. H thng tuyn dng trc tuyn xy dng vi mc ch l cu ni gia cc doanh nghip v cc ng vin, n gip cho hai bn c th tm kim thng tin v nhau mt cch nhanh chng, linh hot, thun tin.

III.1.2. Mc tiu ca h thng


Mc tiu ca h thng l dch v cho hai nhn t chnh : nh tuyn dng v ng vin (ngi tm vic). i vi nh tuyn dng: Nh tuyn dng s dng h thng cp nht thng tin v cng ty mnh, a ra cc thng bo tuyn dng n cng chng. Ngoi ra, nh tuyn dng cn s dng h thng tm kim cc ng vin ph hp vi yu cu cng vic ca mnh, gi li mi n ng vin v nu ng vin chp nhn c th hn gp phng vn v trao i cc tha thun cn thit. i vi ng vin trong h thng m hin ang thuc cng ty mnh, nh tuyn dng c th a ra cc nh gi v h, thng qua nhng nh tuyn dng khc c th bit thm cc thng tin cn thit v ngi m mnh ang quan tm. i vi cc ng vin: Vi cc ng vin ang tm kim mt cng vic ph hp. H c th s dng h thng cp nht cc thng tin v bn thn, cc kinh nghim, k nng v cc d n v ang tham gia (cp nht CV). Cc ng vin ngoi chc nng tm kim cc cng ty, doanh nghip tha mn yu cu ca mnh, h c th tm kim cc ng vin khc v lu vo danh b bn b (c th cho mc ch kt bn hoc chia s kinh nghim trong cng vic). i vi nhng khch thng thng : H c th s dng h thng tm kim cc cng vic thng thng v xem cc thng tin m h thng cung cp. H c th ng k ti khon ca mt ng vin hoc lin h vi ngi qun tr tr mt chi ph nht nh c mt ti khon ca mt nh tuyn dng.

III.2. Phn tch bi ton tuyn dng III.2.1. Nhng yu cu v chc nng
III.2.1.1. i tng ngi dng v cc chc nng i tng s dng h thng bao gm 4 nhm chnh : Nhm qun tr : C vai tr qun tr ti nguyn h thng, qun l thng tin v cc nhm khc. Nhm cc nh tuyn dng : S dng h thng qun l tin tc, thng tin tuyn dng ca cng ty mnh, tm kim ng vin. Nhm nh qung co : S dng h thng qung co thng tin v cng ty mnh. Nhm cc ng vin : C chc nng qun l thng tin c nhn, tm kim cc cng ty tuyn dng, qun l blog v lin kt bn b.

Hnh III.1. Cc nhm s dng h thng S phn r cc chc nng :

Recruitment System

Admin (Qun tr ) QL h thng QL Advertiser Thm Sa Xa QL Company Thm Sa Xa QL Candidate Thm Sa Xa

Advertiser (Ngi qung co ) QL ti khon Thm qung co Sa qung co Xa qung co

Company (Nh tuyn dng ) QL ti khon Cp nht thng tin ng thng bo Tm ng vin Gi email lin h Lu cc ng vin m mnh quan tm(bookmarks ) QL tin tc

Candidate (ng vin) QL ti khon Cp nht CV, thng tin khc T ng tuyn (email lin h n company ) Tm kim Tm ng vin Tm Company Bookmarks

Kit xut Bo co Cc cng ty mnh quan tm Cc ng vin khc QL Blog Kit xut Bo co

Hnh III.2 S phn r chc nng III.2.1.2. Biu cc Use Case III.2.1.2.1. Actor: Admin (Ngi qun tr) Chc nng qun l Advertiser :

Hnh III.3 Use Case Admin qun l Advertiser Chc nng qun l Advertisment :

Hnh III.4 Use Case Admin qun l Advertisment Chc nng qun l Candidate :

Hnh III.5 Use Case Admin qun l Candidate Chc nng qun l Company :

Hnh III.6 Use Case Admin qun l Company Chc nng qun l News :

Hnh III.7 Use Case Admin qun l News III.2.1.2.2. Actor: Company (Nh tuyn dng) Chc nng qun l thng tin c nhn :

Hnh III.8 Use Case Company qun l Profile Chc nng qun l tin tc :

Hnh III.9 Use Case Company qun l tin tc Chc nng qun l thng tin tuyn dng :

Hnh III.10 Use Case Company qun l thng tin tuyn dng III.2.1.2.3. Actor: Advertiser (Nh qung co) Chc nng qun l qung co :

Hnh III.11 Use Case Advertiser qun l qung co III.2.1.2.4. Actor: Candidate (ng vin) Chc nng qun l thng tin c nhn :

Hnh III.12 Use Case Candidate qun l Profile

Chc nng qun l Friends :

Hnh III.13 Use Case Candidate qun l Friends Chc nng qun l Blog :

Hnh III.14 Use Case Candidate qun l Blog Nh vy, c th tng kt li h thng c cc chc nng chnh sau : Vi vai tr ca Admin: Cng nhn Admin Qun l Advertiser Qun l Advertisment Qun l Candidate Qun l Company Qun l News Vi vai tr ca nh tuyn dng: Cng nhn Company Qun l thng tin c nhn

Qun l tin tc Qun l thng tin tuyn dng Vi vai tr ca nh qung co: Cng nhn Advertiser Qun l thng tin qung co Vi vai tr ca ng vin: Cng nhn Candidate Qun l thng tin c nhn Qun l Friends Qun l Blog

III.2.2. La chn gii php cng ngh


T nhng phn tch v yu cu thc t ca bi ton, h thng cn xy dng c tnh cng ng, tng tc cao gia nhng ngi s dng. Do vy, gii php s dng mi trng Web l la chn ti u nht. Ch c trn mi trng Web, cc nh tuyn dng mi c th d dng tm kim thng tin v cc ng vin, qun l tin tc v a ra cc thng tin tuyn dng. Vi vic s dng mi trng Web, mc lan truyn thng tin l v cng ln v cc nh tuyn dng c th d dng t c nhng mc ch m mnh mong mun. Mi trng Web cn l mt la chn tt cho cc nh qung co mun qung b, thng tin, hnh nh ca cng ty mnh. i vi cc ng vin, nhng ngi c nhu cu tm nhng cng vic m mnh mong mun th mi trng Web cng l mt hnh thc gip cho h c th tm kim c cc thng tin mt cch nhanh chng v hiu qu. Thng qua h thng Web ny, cc ng vin c th lin kt bn b v qun l nht k c nhn. Vi vic la chn mi trng Web, cng ngh m tc gi mun p dng cho h thng l cng ngh Web 2.0 kt hp vi cng ngh Web ca Java l Struts v Hibernate. Vi vic s dng ngn ng Java, h thng s c tng cng tnh an ton, bo mt. Ngoi ra, y l ngn ng a nn, c th chy trn nhiu h iu hnh khc nhau. S dng cng ngh Struts v Hibernate s gip h thng c xy dng theo m hnh MVC (y l m hnh chun m nhiu cng ty, doanh nghip ln thng p dng trong qu trnh pht trin phn mm). Vi vic tun theo m hnh MVC, h thng s nng cao tnh n nh, tnh p ng cao, d nng cp v bo tr. III.2.2.1. Bng chi tit cc chc nng
M chc nng Chc nng chung Tn chc nng LogIn LogOut Add News Edit News M t Cho php ngi dng hp l ng nhp vo h thng. Cho php ngi dng thot khi h thng bt k lc no. Admin v nh tuyn dng c th thm mi tin tc. Admin v nh tuyn dng c th bin tp li ni dung tin tc.

F001 F002 F003 F004

F005 F006 F007 F008

Delete News Add Advertisment Edit Advertisment Delete Advertisment

Cho php Admin v nh tuyn dng c th xa ni dung tin tc. Admin v nh qung co thm mi ni dung qung co Thay i ni dung qung co (thuc quyn ca Admin v nh qung co tng ng). Xa ni dung qung co (thuc quyn ca Admin v nh qung co tng ng). Chc nng Edit Profile p dng chung cho Admin, nh tuyn dng, nh qung co v ng vin, cho php h c quyn thay i thng tin c nhn ca mnh. Chc nng cho php Admin to mi ti khon cho ngi dng. Chc nng cho php Admin thay i thng tin ti khon ngi dng, thay i quyn ca ngi dng. Chc nng xa ti khon ngi dng. Chc nng cho php nh tuyn dng thm mi thng tin tuyn dng. Nh tuyn dng c th thay i li ni dung thng bo tuyn dng. Chc nng cho php nh tuyn dng xa cc thng bo tuyn dng. Nh tuyn dng c th s dng h thng tm kim thng tin v cc ng vin m mnh quan tm. Khi tm c cc ng vin m mnh quan tm, nh tuyn dng c th lu li cc ng vin ny sau ny c th lin h. ng vin c th s dng h thng tm kim thng tin v cc ng vin khc, thng qua , c th lin kt bn b. ng vin c th tm kim cc cng ty, nh tuyn dng m mnh quan tm, thng qua , gi h s ng tuyn. Sau khi tm c cc cng ty hay nh tuyn dng m mnh quan tm, cc ng vin c th lu li sau ny d dng lin h. y l chc nng c nhn ca cc ng vin, h c th to, chnh sa hoc xa cc entry trong Blog ca mnh. Cc thng tin trong Blog c th c comment bi cc thnh vin khc.

F009 F010
Admin

Edit Profile

Add User Edit User Delete User Add Recruitment Notice Edit Recruitment Notice Delete Recruitment Notice Search Candidate

F011 F012 F013 F014 F015

Company

F016

F017

Bookmarks Candidate

F018

Search Candidate

F019
Candidate

Search Company

F020

Bookmarks Company

F021

Blog Individual

Bng 1: Danh sch cc chc nng III.2.2.2. Mt s biu din tin cc chc nng :
Chc nng F001: LogIn

Hnh III.15 S din tin chc nng LogIn

Chc nng F002: Logout

Hnh III.16 S din tin chc nng LogOut

Chc nng F003: Add News

Hnh III.17 S din tin chc nng Add News

Chc nng F004: Edit News

Hnh III.18 S din tin chc nng Edit News

Chc nng F005: Delete News

Hnh III.19 S din tin chc nng Delete News

Chc nng F009: Edit Profile

Hnh III.20 S din tin chc nng Edit Profile

Chc nng F010: Add User

Hnh III.21 S din tin chc Add User

Chc nng F011: Edit User

Hnh III.22 S din tin chc nng Edit User

Chc nng F012: Delete User

Hnh III.23 S din tin chc nng Delete User

Chc nng F016: Company Search Candidate

Hnh III.24 S din tin chc nng Company Search Candidate

Chc nng F017: Company bookmarks Candidate

Hnh III.25 S din tin chc nng Company bookmarks Candidate

Chc nng F021: Blog Individual

Hnh III.26 S din tin chc nng Blog Individual

III.3. Thit k v ci t chng trnh

III.3.1. Thit k d liu


III.3.1.1. M hnh quan h thc th
Username AccountID Password RoleID Description RoleName FunctionName Description

Account

Belong to

Role

Has

Function

AccountRole JobTypeID Name Description

RoleFunction NewsID

FunctionID Title ShortContent

JobType
1 Do CompanyID

Has

News
N Has 1

Content

1 N Company 1

CategoryID Name Description RecNoticeID

Belong to 1 Name Description

Category

Province
ProvinceID Name Name AdvertiserID

PostalCode Limit Advertisment

Has

N Recruitment

JobName Requirement

Notice
Title Image

AdverContentID

Advertiser
Name DegreeID N Has

Has

Adver_Content

Site_Url Fiend_of_CandidateID

Degree

Candidate
N 1

Has

Friend

FriendID BlogID

CandidateDegree

Has N Content N

Occupation
OccupationID Name

Has

Blog
1

Title Content

BlogCommentID

BlogComment

Has

Hnh III.27 M hnh ERD III.3.1.2. Thit k c s d liu III.3.1.2.1. Bng Account

Tn trng
ACCOUNT_ID LOGIN_NAME LOGIN_PASSWORD STATUS REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR TINYINT INT INT DATETIME DATETIME

di
11 25 150 1 11 11

ngha
M ca ngi dng Tn ng nhp ca ngi dng Mt khu ng nhp, m ha MD5 Trng thi, 0: Active 1: Disable ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 2: Bng Account III.3.1.2.2. Bng Role


Tn trng
ROLE_ID NAME DESCRIPTION REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR INT INT DATETIME DATETIME

di
11 255 1000 11 11 M ca vai tr Tn ca vai tr M t vai tr

ngha

ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 3: Bng Role III.3.1.2.3. Bng AccountRole


Tn trng
ACCOUNT_ID ROLE_ID REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT INT INT INT DATETIME DATETIME

di
11 11 11 11 M ca vai tr

ngha
M ca ngi dng

ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 4: Bng AccountRole III.3.1.2.4. Bng Function

Tn trng
FUNCTION_ID NAME DESCRIPTION

PK

FK

Kiu DL
INT VARCHAR VARCHAR

di
11 100 1000

ngha
M ca chc nng Tn ca chc nng M t chc nng

REG_USER UPD_USER REG_DTTM UPD_DTTM

INT INT DATETIME DATETIME

11 11

ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 5: Bng Function III.3.1.2.5. Bng RoleFunction


Tn trng
ROLE_ID ACCOUNT_ID REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT INT INT INT DATETIME DATETIME

di
11 11 11 11 M ca vai tr

ngha
M ca chc nng ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 6: Bng RoleFunction III.3.1.2.6. Bng Advertiser


Tn trng
ADVERTISER_ID NAME DESCRIPTION LIMIT_ADVER REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR INT INT INT DATETIME DATETIME

di
11 255 1000 4 11 11

ngha
M ca ngi qung co Tn ngi qung co M t v ngi qung co S lng qung co c php ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 7: Bng Advertiser III.3.1.2.7. Bng Adver_Content


Tn trng
ADVER_ID ADVERTISER_ID TITLE IMAGE SITE_URL POSITION CLICK_COUNT START_DATE END_DATE

PK

FK

Kiu DL
INT INT VARCHAR VARCHAR VARCHAR VARCHAR INT DATETIME DATETIME

di
11 11 255 255 255 2 11

ngha
M ca qung co M ca ngi qung co Tiu ca qung co ng dn ti nh(Flash) qung co a ch Website V tr hin th qung co S lng lt click vo qung co Ngy bt u qung co Ngy kt thc qung co

IS_DISPLAY REG_USER UPD_USER REG_DTTM UPD_DTTM

TINYINT INT INT DATETIME DATETIME

1 11 11

Trng thi hin th qung co ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 8: Bng Adver_Content III.3.1.2.8. Bng Job_Type


Tn trng
JOB_TYPE_ID JOB_TYPE_CODE NAME DESCRIPTION PRENT_ID REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR VARCHAR INT INT INT DATETIME DATETIME

di
11 50 255 1000 11 11 11 M vit tt

ngha
M ca loi cng vic

Tn loi cng vic M t loi cng vic M ca danh mc cha ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 9: Bng Job_Type III.3.1.2.9. Bng Company


Tn trng
COMPANY_ID JOB_TYPE_ID PROVINCE_ID NAME WORK_DESCRIPTION POSTAL_CODE LOGO SLOGAN ADDRESS BRANCHS PHONE_NUMBER FAX_NUMBER SITE_URL EMAIL FOUNDATION REG_USER UPD_USER

PK

FK

Kiu DL
INT INT INT VARCHAR TEXT 20 VARCHAR VARCHAR VARCHAR TEXT VARCHAR VARCHAR VARCHAR VARCHAR DATETIME INT INT

di
11 11 11 300

ngha
M ca cng ty M loi cng vic M tnh thnh Tn cng ty M t cng vic M bu in

255 255 1000

Logo cng ty Slogan cng ty a ch tr s chnh cng ty a ch cc chi nhnh khc

15 100 255 255

S in thoi cng ty S fax cng ty a ch Website a ch email ca cng ty Ngy thnh lp cng ty

11 11

ID ca ngi ng k ID ca ngi cp nht

REG_DTTM UPD_DTTM

DATETIME DATETIME

Ngy gi ng k Ngy gi cp nht

Bng 10: Bng Company III.3.1.2.10. Bng Province


Tn trng
PROVINCE_ID NAME AREA_CODE REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR INT INT DATETIME DATETIME

di
11 255 10 11 11

ngha
M ca tnh thnh Tn ca tnh thnh M bu in ca tnh thnh ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 11: Bng Province III.3.1.2.11. Bng Category


Tn trng
CATEGORY_ID NAME DESCRIPTION PARENT_ID ORDER_NO REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR INT INT INT INT DATETIME DATETIME

di
11 255 500 11 11 11 11 M ca loi tin

ngha
Tn ca loi tin M t loi tin M ca danh mc cha Th t hin th ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 12: Bng Category III.3.1.2.12. Bng News


Tn trng
NEWS_ID CATEGORY_ID COMPANY_ID TITLE SHORT_CONTENT CONTENT IMG_THUMB IMG_LARGE VIEW_NUM

PK

FK

Kiu DL
INT INT INT VARCHAR TEXT TEXT VARCHAR VARCHAR INT

di
11 11 11 255

ngha
M ca tin tc M ca loi tin tc M ca cng ty Tiu tin tc Ni dung gii thiu Ni dung chi tit

255 255 11

nh thu nh nh ln S lt xem

ORDER_NO AUTHOR SOURCE IS_DISPLAY IS_DISPLAY REG_USER UPD_USER REG_DTTM UPD_DTTM

INT VARCHAR VARCHAR TINYINT TINYINT INT INT DATETIME DATETIME

11 50 200 1 1 11 11

Th t hin th Tn tc gi Ngun tin tc C phi tin hot khng ? Trng thi c hin th tin tc khng ? ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 13: Bng News III.3.1.2.13. Bng Rec_Notice


Tn trng
REC_NOTICE_ID COMPANY_ID WORK_TYPE_ID PROVINCE_ID WORK_NAME WORK_REQUIREMENT WORK_DESCRIPTION WORK_TIME SKILL_REQUIREMENT WORK_PLACE SALARY QUOTA INTEREST PROMISE RECORD_INFO REG_DATE PERIOD_DATE RECORD_RECEIVER EMAIL_RECEIVER CONTACT_NAME CONTACT_PHONE CONTACT_ADDRESS REG_USER UPD_USER REG_DTTM

PK

FK

Kiu DL
INT INT INT INT VARCHAR TEXT TEXT VARCHAR TEXT VARCHAR VARCHAR VARCHAR TEXT TEXT TEXT DATETIME DATETIME VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR INT INT DATETIME

di
11 11 11 11 255

ngha
M ca thng bo tuyn dng M ca cng ty M loi hnh cng vic M tnh, thnh (Ni lm vic) Tn cng vic Yu cu i vi cng vic M t cng vic

255

Thi gian lm vic Yu cu v k nng, kinh nghim

255 255 100

Ni lm vic Mc lng S lng ngi cn tuyn Quyn li ca ng vin Trin vng thng tins Thng tin v h s Ngy ng tin tuyn dng Ngy ht hn tuyn dng

100 100 100 15 500 11 11

Ngi nhn h s Email ngi lin h Tn ngi lin h in thoi lin h a ch lin h ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k

UPD_DTTM

DATETIME

Ngy gi cp nht

Bng 14: Bng Rec_Notice III.3.1.2.14. Bng Occupation


Tn trng
OCCUPATION_ID OCCUPATION_CODE NAME DESCRIPTION PRENT_ID REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR VARCHAR INT INT INT DATETIME DATETIME

di
11 10 255 1000 11 11 11 M vit tt

ngha
M ca ngh nghip

Tn ca ngh nghip M t ngh nghip M ca danh mc cha ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 15: Bng Occupation III.3.1.2.15. Bng Candidate


Tn trng
CANDIDATE_ID OCCUPATION_ID FULLNAME SEX BIRTHDAY MOBILE PHONE NATIVE_COUNTRY CONTACT_ADDRESS EMAIL WEBSITE BLOG_URL FOREIGN_LEVEL WORK_HISTORY PROJECT_HISTORY SPEC_SKILL HOBBY SELF_EXPRESSIVE WORK_EXPECT AMBITION

PK

FK

Kiu DL
INT INT VARCHAR TINYINT DATE VARCHAR VARCHAR VARCHAR VRCHAR VARCHAR VARCHAR VARCHAR VARCHAR TEXT TEXT VARCHAR VARCHAR TEXT TEXT TEXT

di
11 11 100 1

ngha
M ca ng vin M ca ngh nghip Tn y ca ng vin Gii tnh: 1 - Nam; 0 - N Ngy sinh

12 15 200 300 100 255 255 500

S in thoi di ng S in thoi c nh Qu qun ca ng vin a ch lin h Email ca ng vin Website ca ng vin a ch Blog ca ng vin Trnh ngoi ng Cc cng ty trc y lm vic Cc d n ln tham gia

1000 1000

K nng chuyn mn S thch c nhn T bch v bn thn Cng vic mong mun trong tng lai Tham vng, hoi bo

SALARY_REQUIREMENT WORK_REQUIREMENT IMG1 IMG2 IMG3 IS_PUBLISH REG_USER UPD_USER REG_DTTM UPD_DTTM

VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR TINYINT INT INT DATETIME DATETIME

500 1000 255 255 255 1 11 11

Yu cu v mc lng Yu cu v cng vic nh c nhn 1 nh c nhn 2 nh c nhn 3 C cng khai thng tin CV khng ? ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 16: Bng Candidate III.3.1.2.16. Bng Degree


Tn trng
DEGREE_ID NAME DESCRIPTION REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT VARCHAR VARCHAR INT INT DATETIME DATETIME

di
11 100 1000 11 11

ngha
M ca bng cp Tn ca bng cp M t bng cp ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 17: Bng Degree III.3.1.2.17. Bng Candidate_Degree


Tn trng
DEGREE_ID CANDIDATE_ID NAME DESCRIPTION REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT INT VARCHAR VARCHAR INT INT DATETIME DATETIME

di
11 11 100 1000 11 11

ngha
M ca bng cp M ca ng vin Tn ca chuyn ngnh bng cp M t v chuyn ngnh bng cp ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 18: Bng Candidate_Degree III.3.1.2.18. Bng Friend


Tn trng
FRIEND_ID

PK

FK

Kiu DL
INT

di
11

ngha
M ID bn b

CANDIDATE_ID FRIEND_OF_CANDIDATE_ID REG_USER UPD_USER REG_DTTM UPD_DTTM

INT INT INT INT DATETIME DATETIME

11 11 11 11

M ca ng vin M bn ca ng vin ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 19: Bng Friend III.3.1.2.19. Bng Blog


Tn trng
BLOG_ID CANDIDATE_ID TITLE IMAGE CONTENT IS_DISPLAY BLOG_DATE REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT INT VARCHAR VARCHAR TEXT TINYINT DATETIME INT INT DATETIME DATETIME

di
11 11 255 255 M ca Blog

ngha
M ca ng vin Tiu ca Blog nh ca Blog Ni dung Blog

Trng thi c hin th hay khng ? Ngy vit Blog

11 11

ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 20: Bng Blog III.3.1.2.20. Bng Blog_Comment


Tn trng
BLOG_COMMENT_ID BLOG_ID CANDIDATE_COMMENT_ID COMMENT_NAME CONTENT REG_USER UPD_USER REG_DTTM UPD_DTTM

PK

FK

Kiu DL
INT INT INT VARCHAR TEXT INT INT DATETIME DATETIME

di
11 11 1000 100

ngha
M ca Blog Comment M ca Blog M ca ng vin vit comment Tn ca ngi vit comment Ni dung vit comment ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

11 11

Bng 21: Bng Blog_Comment III.3.1.2.21. Bng Work_Type


Tn trng PK FK Kiu DL di ngha

WORK_TYPE_ID NAME DESCRIPTION REG_USER UPD_USER REG_DTTM UPD_DTTM

INT INT INT INT INT DATETIME DATETIME

11 11 1000 11 11

M ca loi hnh cng vic Tn loi hnh cng vic M t loi hnh cng vic ID ca ngi ng k ID ca ngi cp nht Ngy gi ng k Ngy gi cp nht

Bng 22: Bng Work_Type

III.3.2. Thit k module


Mi mt trang Web c thit k v xy dng t cc module ring bit. Cc module c thit k da trn framework ca Struts v Hibernate, sau chng s c tch hp li vi nhau to nn cc chc nng ring ca trang. H thng tuyn dng chia lm 2 module chnh, l module qun tr v module ngi s dng. S cc gi module nh sau: Gi module chnh :

Hnh III.28 Cc gi module chnh Module Admin :

Hnh III.29 Module admin Module User :

Hnh III.30 Module User III.3.2.1. Thit lp mi trng lp trnh Mi trng lp trnh c thit lp cho h thng nh sau: -

Windows XP, Windows Server 2003 Web Server : Tomcat 6.0.14 hoc cc phin bn mi hn Java JDK 1.6 J2EE 1.4 IDE Eclipse 3.3 (hoc MyEclipse 6.0) MySQL 5.0.45 Framework Library : Struts 2.0.11, Hibernate 3.1, Spring 2.5 UML Design : JUDE Comunity 5.2.1

III.3.2.2. M hnh thit k module thit k cc module, chng ta s dng m hnh MVC c m t nh di y :

Hnh III.31 M hnh thit k Module theo Struts Trong :


Tng View : y l thnh phn hin th pha ngi dng, gip ngi dng c

th tng tc vi h thng, n l th hin cho chc nng ca cc module trong chng trnh. y l cc phn lp trnh v JSP, CSS, Javascript, Ajax, TagLib
Tng Controller : y chnh l phn nghip v x l ca h thng. C th

ni, y l tri tim ca h thng. Controller tip nhn yu cu t pha ngi dng, la chn iu hng cc action, kt hp vi tng Model x l cc yu cu v hin th kt qu tng View ti ngi s dng.
Tng Model : l cc lp m hnh ha c s d liu. Thng thng l

cc JavaBean nh x t cc bng trong c s d liu v c m hnh ha vi cc quan h hng i tng. Cc lp ny c to ra vi s h tr ca cng c Hibernate.

III.3.2.3. Thit k tng Model Tng Model bao gm ba thnh phn chnh:

Cc lp Java (JavaBean): nh x t cc bng trong c s d liu. y l cc lp thun Java, cha cc thuc tnh tng ng vi cc ct ca bng v cc phng thc setter v getter. Cc file xml nh ngha nh x (*.hbm.xml): l cc file xml m t vic nh x t mt bng trong c s d liu thnh mt i tng trong Java, trong m t r s chuyn i tn trng trong bng thnh tn thuc tnh trong i tng v s chuyn i kiu d liu tng ng. File cu hnh nh x c s d liu (hibernate.cfg.xml): y l file cha cc thng tin kt ni ti c s d liu, bao gm: tn c s d liu, tn

username, password truy nhp, tn cc file nh ngha nh x v cc thng tin cu hnh khc. Di y l v d m t cc thnh phn trn ( y ly v d vi bng account l bng cha thng tin truy nhp ca ngi dng): Lp JavaBean(Account.java):
package vn.rec.domain; import java.util.Date; import java.util.HashSet; import java.util.Set; public class Account implements java.io.Serializable { // Fields private private private private Integer accountId; String loginName; String loginPassword; Byte status;

// Constructors /** default constructor */ public Account() { } /** minimal constructor */ public Account(Integer accountId, String loginName, String loginPassword, Byte status) { this.accountId = accountId; this.loginName = loginName; this.loginPassword = loginPassword; this.status = status; } // Property accessors public Integer getAccountId() { return this.accountId; } public void setAccountId(Integer accountId) { this.accountId = accountId; } public String getLoginName() { return this.loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getLoginPassword() { return this.loginPassword; } public void setLoginPassword(String loginPassword) { this.loginPassword = loginPassword; }

public Byte getStatus() { return this.status; } public void setStatus(Byte status) { this.status = status; } }

File xml nh ngha nh x(Account.hbm.xml):


<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="vn.rec.domain.Account" table="account" catalog="recruitment"> <id name="accountId" type="java.lang.Integer"> <column name="account_id" /> <generator class="identity" /> </id> <property name="loginName" type="java.lang.String"> <column name="login_name" length="50" not-null="true" /> </property> <property name="loginPassword" type="java.lang.String"> <column name="login_password" length="150" not-null="true" /> </property> <property name="status" type="java.lang.Byte"> <column name="status" not-null="true" /> </property> <set name="accountRoles" inverse="true"> <key> <column name="account_id" not-null="true" /> </key> <one-to-many class="vn.rec.domain.AccountRole" /> </set> <set name="advertisers" inverse="true"> <key> <column name="advertiser_id" not-null="true" unique="true" /> </key> <one-to-many class="vn.rec.domain.Advertiser" /> </set> <set name="companies" inverse="true"> <key> <column name="company_id" not-null="true" unique="true" /> </key> <one-to-many class="vn.rec.domain.Company" /> </set> <set name="candidates" inverse="true"> <key> <column name="candidate_id" not-null="true" unique="true" /> </key> <one-to-many class="vn.rec.domain.Candidate" />

</set> </class> </hibernate-mapping>

File cu hnh(hibernate.cfg.xml):
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. <hibernate-configuration> -->

<session-factory> <property name="connection.username">root</property> <property name="connection.url"> jdbc:mysql://localhost:3306/recruitment? useUnicode=true&amp;characterEncoding=UTF-8 </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="myeclipse.connection.profile"> MySQL DB </property> <property name="hbm2ddl.auto">update</property> <property name="connection.password">123456</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="show_sql">true</property> <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory </property> <mapping resource="vn/rec/domain/AccountRole.hbm.xml" /> <mapping resource="vn/rec/domain/Function.hbm.xml" /> <mapping resource="vn/rec/domain/Account.hbm.xml" /> <mapping resource="vn/rec/domain/Role.hbm.xml" /> </session-factory> </hibernate-configuration>

III.3.2.4. Thit k tng View Tng view bao gm cc file CSS, JavaScript, cc file template nh JSP, Velocity hoc FreeMarker lm nhim v giao tip gia ngi dng vi h thng. l cc thnh phn gip ngi dng nhp liu, gi yu cu ti h thng v ly d liu c x l tng Controller tr v pha ngi dng. Cc file JSP c s dng cc th vin th (TagLig) ca Struts2 v JSTL h tr x l cng nh hin th d liu. III.3.2.5. Thit k tng Controller Tng Controller c thit k bao gm ba thnh phn chnh sau :
Cc lp DAO (Data Access Object) : y l cc lp truy xut d liu t c s

d liu thc da trn cc i tng JavaBean c nh x quan h (l tng

di cng gn Database nht). Vic truy xut d liu bao gm cc thao tc CRUD (Create,Retrive,Update,Delete) v mt s thao tc nghip v khc. Cc lp ny thc thi vi s h tr ca ngn ng HQL v qun l transaction ca Spring framework.
Cc lp Service : y l tng nm trn tng DAO. Cc lp trong tng ny ch

yu c nhim v thc hin cc chc nng nghip v ca h thng v n trc tip gi cc lp x l thao tc vi c s d liu ca tng DAO.
Cc lp Action : y l tng trn cng trong tng nghip v, n nm trn tng

Service v trc tip gi cc phng thc ca cc lp trong tng Service x l cc yu cu t pha ngi dng. C th m t cch b tr v thc thi cc tng nh hnh v di y :
Action Layer Service Layer DAO Layer

Database Server

Hnh III.32 M hnh thit k tng trong Controller Nguyn tc thc thi l : Cc lp thuc tng trn ch c th truy xut c n cc lp ngay di n. V d, Cc lp thuc tng Action ch c th truy xut n cc lp thuc tng Service v cc lp thuc tng Service cng ch c th truy xut n cc lp thuc tng DAO. Khng c th t truy xut ngc li t di ln trn. III.3.2.6. Cc file cu hnh h thng Cc file cn thit trong cu hnh h thng bao gm :

File web.xml : y l file cu hnh chung ca h thng, bao gm cc thng tin v vic s dng cc gi th vin, nh ngha v khi to cc file cu hnh khc, nh dng unicode, nh ngha cc b lc bo mt, dn rc File struts.xml : y l file cu hnh ca Struts framework. N c th khi to cc Bean, hng s v c bit n nh x cc action t pha ngi s dng n cc lp v phng thc tng ng cn x l v sau l iu hng hin th n tng view. File applicationContext.xml : y l file cu hnh ca Spring framework. N c th nh ngha loi kt ni v giao tip vi c s d liu. Ngoi ra, n cn cha thng tin v cc Bean trong h thng bao gm cc bean v DAO, Service phc v cho qu trnh x l nghip v t pha cc action. File tiles.xml : y l file cu hnh h tr cho vic s dng layout ca tng view. Vic s dng layout gip chia trang Web thnh cc thnh phn nh hn v s dng li cc thnh phn chung. iu ny gip gim thiu lng code v gip cho vic lp trnh tr nn ngn gn, n gin v d bo tr.

III.3.3. Thit k giao din Web

y l giai on thit k cc prototype cho trang Web. Ni dung cng vic bao gm xc nh giao din di dng b cc, cc chc nng, cc trng hp s dng v s lin kt gia cc trang trong tng th mt Web site. III.3.3.1. Thit k giao din Admin Giao din mn hnh Login

Hnh III.33 Mn hnh Login Giao din chnh

Hnh III.34 Mn hnh giao din chnh Giao din hin hin th danh sch

HEADER Menu

Function Management
No 1 2 Name

Add

Cancel

Total : 100

First Prev 1 2 3 9 Next Last

FOOTER

Hnh III.35 Mn hnh hin th danh sch Giao din thm mi, cp nht (Popup Windows)

Hnh III.36 Mn hnh thm mi, cp nht

III.3.3.2. Thit k giao din ngi dng Giao din trang ch :

Hnh III.37 Mn hnh giao din trang ch

KT LUN V NH GI
Kt qu t c n ny t c nhng kt qu c bn sau: Tm hiu cng ngh Struts, Hibernate v Spring, kt hp vi Ajax to thnh mt nn tng trong lp trnh ng dng Web. Xy dng mt ng dng tuyn dng vi cc chc nng c bn da trn cc cng ngh trn. nh gi V mt nghin cu cng ngh, sau khi hon thnh n tc gi nm bt c cc c im, v vai tr ca chng trong xy dng ng dng Web, bit cch s dng v tch hp ba framework trong mt ng dng c th. Tuy nhin, do thi gian tm hiu c hn nn cn nhiu tnh nng cng nh k thut x l tc gi cn cha nm bt c.
V xy dng bi ton tuyn dng, ng dng t c mt s kt qu nht

nh. Do thi gian hn hp v kin thc ca ngi thit k cn nhiu hn ch nn chng trnh cn mt s module cha hon thin cng nh mt s module xy dng nhng cha c ti u. Hy vng, trong thi gian sp ti, h thng s c xy dng hon thin v ti u c th a vo s dng.
Hng pht trin: Hin nay, cng ngh Struts, Hibernate v Spring vn ang c pht trin

mnh m v c s dng tng i rng ri trong cc ng dng Web, c bit l cc ng dng c quy m ln, phc tp. y u l nhng cng ngh m ngun m da trn ngn ng Java. Vi s pht trin mnh m ca cng ngh tri thc, c kh nhiu cng ngh Web mi ra i cnh tranh vi cc cng ngh trn. Tuy nhin, Struts, Hibernate v Spring vn c nhiu ngi yu thch v s dng rng ri trong nhiu ng dng khc nhau. n ny tp trung nghin cu v cng ngh Struts, Hibernate v Spring v p dng xy dng bi ton tuyn dng trc tuyn. y l bi ton hay v c th m rng v pht trin trong tng lai. Vi vic hon thin c cc chc nng nh m t v phn tch trong n, ng dng c th c trin khai trong thc t v p ng c nhiu nhu cu cn thit ca ngi s dng.

TI LIU THAM KHO


Cc ti liu tham kho :

Struts in Action (Ted N. Husted, Cedric Dumoulin, George Franciscus, David Winterfeldt) Struts Survival Guide (Srikanth Shenoy) Struts: The Complete Reference (James Holmes ) Jakarta Struts for Dummies (Mike Robinson, Ellen Finkelstein) Professional Jakarta Struts (James Goodwill, Richard Hightower) Apress - Beginning Apache Struts (Arnold Doray) Apress - Pro Apache Struts with Ajax (John Carnell, Rob Harrop, Kunal Mittal) Manning Webwork in Action (Patrick Lightbody, Jason Carreira) Starting Struts 2 (Ian Roughley) Apress Expert Spring MVC and Web Flows (Seth Ladd, Keith Donald) Spring Reference (Document of www.springframework.org) Manning - Spring in Action 2007 (Craig Walls, Ryan Breidenbach) Spring Live (Matt Raible) Agile Java Development (Anil Hemrajani) with Spring, Hibernate and Eclipse

Hibernate reference (Document of www.hibernate.org) Manning - Java persistence with Hibernate (Christian Bauer, Gavin King) Manning - Hibernate in Action (Christian Bauer, Gavin King) http://www.struts.apache.org http://www.springframework.org http://www.hibernate.org http://www.roseindia.net http://www.java.sun.com/j2ee http://www.javavietnam.org http://www.java-source.net/open-source http://www.wikipedia.org http://www.blogjava.net

Cc trang Web tham kho :


V rt nhiu cc trang din n v blog khc

You might also like