You are on page 1of 70

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

I HC NNG TRNG I HC BCH KHOA

KHOA CNG NGH THNG TIN


Tel. (84-511) 736 949, Fax. (84-511) 842 771 Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn

BO CO THC TP TT NGHIP
NGNH CNG NGH THNG TIN
M NGNH : 05115

TI : Nghin cu Cng ngh Java v Tm hiu Struts Framework

SINH VIN LP N V CBHD

: Nguyn nh Lnh : 10T1LT : Trng Cao ng FPT : Nguyn Khnh C.Huyn

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 1

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

LI CAM OAN
Ti xin cam oan : 1 2 3 Nhng ni dung trong bo co ny l do ti thc hin di s hng dn trc tip ca thy Nguyn Khnh v c Huyn1. Mi tham kho dng trong bo co ny u c trch dn r rng tn tc gi, tn cng trnh, thi gian, a im cng b. Mi sao chp khng hp l, vi phm quy ch o to, hay gian tr,ti xin chu hon ton trch nhim. Sinh vin,

Nguyn nh Lnh

Nu y tn v hc hm, hc v ca CBHD. V d ThS. GVC. ng B L.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 2

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

LI CM N

Li cm n u tin con xin dnh cho Ba M. Chng con xin cm n Ba M ngi lo cho chng con , ng vin chng con n hc nn ngi v c nh ngy hm nay, cng n chng con xin ghi khc trong lng. Em xin trn trng cm n thy Nguyn Khnh, c Huyn cng cc thy c trong trng Cao ng FPT nh hng ti v tn tnh hng dn, gip cng nh c nhng kin ng gp b ch gip em hon thnh tt trong t thc tp va qua. Em xin cm n tt c qu Thy C trng H Bch Khoa Nng tn tnh dy d v truyn t cho chng em nhng kin thc trong nhng nm hc qua.

Sinh Vin

Nguyn nh Lnh

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 3

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

MC LC
I. 1. 2. 3. II. Tm hiu i hc FPT ......................................................................................................................................5 Gii thiu chung ...........................................................................................................................................5 C cu t chc i hc FPT.........................................................................................................................7 Chng trnh o to ....................................................................................................................................9 Nghin cu cng ngh Java ............................................................................................................................13

1.1 Lp c s dn xut ............................................................................................................................ 13 1.2 Xy dng lp c s dn xut ............................................................................................................ 13 1.3 Tha k thuc tnh ............................................................................................................................. 15 1.4 Tha k phng thc ......................................................................................................................... 15 1.5 Khi to lp c s ............................................................................................................................. 15 1.6 Phng thc ghi ............................................................................................................................ 15 1.7 Thnh phn protected ........................................................................................................................ 15 1.8 T kha final ..................................................................................................................................... 16 III. Chng trnh Demo ....................................................................................................................................57 1. Thit k ng dng Struts ............................................................................................................................57 1.1 Thit k ng dng Login ................................................................................................................... 57 1.2 Yu cu ng dng .............................................................................................................................. 57 1.3 Cc thnh phn yu cu cho ng dng .............................................................................................. 57 1.4 To project trong Eclipse ................................................................................................................... 58 1.5 Thit lp cc th mc cho ng dng.................................................................................................. 58 1.6 Import cc file Struts ......................................................................................................................... 58 1.7 Cu hnh Eclipse s dng cc file th vin ................................................................................... 59 2. Trin khai ng dng ...................................................................................................................................60 2.1 2.2 2.3 2.4 2.5 2.6 To cc trang JSP .............................................................................................................................. 60 To cc formbean .............................................................................................................................. 63 To Javabean ..................................................................................................................................... 64 To action .......................................................................................................................................... 65 Cu hnh Struts .................................................................................................................................. 66 Chy ng dng................................................................................................................................... 68

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 4

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


I. Tm hiu i hc FPT
1. Gii thiu chung
Vi nt v Tp on FPT

Tp on FPT thnh lp ngy 13/09/1988, hin l tp on cng ngh thng tin v vin thng s 1 ca Vit Nam. Tp on FPT hin nay c ti 83 n v thnh vin vi hng trm n v kinh doanh v cc b phn h tr. Tp on FPT c tr s ti 6 quc gia: Nht, M, Php, c, Singapore v Malaysia. Nm 2008, bt chp khng hong ti chnh, ton tp on t doanh s hn 1 t USD, tr thnh doanh nghip t nhn u tin ca Vit Nam t ngng ny. FPT hin l i tc ca hn 200 tp on cng ngh ln nht trn ton cu. Bn cnh , FPT cng ang s hu trn 1.000 chng ch cng ngh cp quc t ca cc i tc cng ngh hng u th gii. c bit, trong chuyn thp tng Ch tch nc Nguyn Minh Trit sang M nm 2007, TG Trng Gia Bnh v on i biu FPT t c mt bc ngot trong quan h i tc chin lc vi Microsoft. Theo , cc Lp trnh vin ca FPT c tham gia vit cc phn mm ct li ca Microsoft cng nh c c s h tr ca Microsoft trong vic xy dng i hc FPT tr thnh Ngi trng ca th k 21. Ngay t nm 1999, nhn thy nhu cu ngun nhn lc cht lng cao l yu t sng cn ca vic pht trin Tp on v ngnh cng nghip cng ngh thng tin, FPT phi hp vi tp on o to cng ngh thng tin hng u th gii Aptech n trin khai h thng cc trung tm o to Lp trnh vin Quc t Aptech v M thut a phng tin Arena ti Vit Nam. Qua 10 nm hot ng, h thng hin c gn 40 trung tm trn ton quc v o to cho ngnh cng ngh thng tin ca Vit Nam trn 20.000 chuyn gia phn mm v m thut a phng tin.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 5

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

Vi nt v Trng i hc FPT Ngy 08/09/2006, Chnh ph c Quyt nh s 208/2006/Q-TTg cho php chnh thc thnh lp Trng i hc T thc FPT. S mnh ca Trng i hc FPT l xy dng m hnh ca mt trng i hc th h mi, c trit l gio dc hin i, gn lin o to vi thc tin cuc sng v nhu cu nhn lc ca t nc, gp phn a ngnh cng ngh thng tin Vit nam ln ngang tm cc nc tin tin trn th gii. Mc tiu trc mt ca Trng i hc FPT l o to v cung cp ngun nhn lc cht lng cao chuyn ngnh cng ngh thng tin v cc nhm ngnh khc c lin quan cho tp on FPT cng nh cho cc tp on cng ngh thng tin ton cu ti khp ni trn th gii v cc doanh nghip Vit Nam. S khc bit ca Trng i hc FPT so vi cc trng i hc khc l o to k s cng nghip, ngha l o to theo hnh thc lin kt cht ch vi cc doanh nghip cng ngh thng tin, gn o to vi thc tin, vi nghin cu trin khai v cc cng ngh hin i nht. Trit l v phng php gio dc hin i; o to con ngi ton din, hi ha; chng trnh lun c cp nht v tun th cc chun cng ngh quc t; c bit ch trng k nng ngoi ng; tng cng o to quy trnh t chc sn xut, k nng lm vic theo nhm v cc k nng c nhn khc l nhng im s m bo cho sinh vin tt nghip c nhng c hi vic lm tt nht ti tp on FPT v cc doanh nghip hng u khc. Vi nt v FPT Polytechnic H Cao ng thc hnh thuc i hc FPT, cn gi l FPT Polytechnic, c thc hin o to v cp bng Cao ng ngh theo Quyt nh ca Tng cc dy ngh bt u t ngy 01/07/2010. Trng hng ti mc tiu cung cp k nng ngh nghip cht lng cao cho ngi hc, m bo c tnh cnh tranh trong mi trng pht trin ngy cng cao. Vi nhn nh nn kinh t Vit Nam ang pht trin mnh m trong c s ng gp to ln t trn 500.000 doanh nghip va v nh vi t 10 n 200 nhn vin. FPT Polytechnic nhm ti mc tiu cung cp ngun nhn lc c o to tt cho nhu cu pht trin ca khng ch cc doanh nghip ln m cn cho cc doanh nghip ny.
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 6

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Hng ti ngi hc chung trn ton Vit Nam, chng trnh cao ng thc hnh ca trng c thit k da trn nhng k nng thit yu nht lm vic v tng thch vi cc h thng o to tin tin trn th gii.

2. C cu t chc i hc FPT
Hi ng c vn
Hi ng c vn ca Trng i hc FPT bao gm cc gio s, cc nh khoa hc hng u ca Vit Nam. Ngi Takeo Ogawa, Ch tch danh d v l cu TG ca Cng ty Hitachi Software c chn lm c vn cao cp cho cc chng trnh o to CNTT bng ting Nht. Trch nhim ca Hi ng c vn l tham gia nh hng v xy dng chin lc cho hot ng ca Trng, h tr Ban gim hiu trong cc cng vic nghin cu khoa hc v hp tc quc t.

Hi ng Qun tr
Hi ng qun tr l c quan qun l cao nht,chu trch nhim trc php lut v cc hot ng ca Trng. Hi ng qun tr c trch nhim ra cc quyt nh chin lc, nh hng hot ng, b nhim Hiu trng v cc v tr qun l then cht ca Trng. Ch tch HQT Trng i hc FPT l Ph gio s, Tin s Trng Gia Bnh, Ch tch HQT Tp on FPT. ng tt nghip Tin s Ton L ti i hc Tng hp Mat-xc-va mang tn L-m-n-xp (MGU), sng lp v iu hnh FPT, Tp on CNTT s 1 ca Vit Nam t nm 1988. ng cn l Trng khoa Qun tr kinh doanh HSB, i hc Quc gia H Ni; Ch tch Hi doanh nghip tr H Ni; Ch tch Hip hi phn mm Vit Nam (VINASA).

Ban Gim hiu


Ban Gim hiu ca Trng c chc nng iu hnh trc tip cc hot ng ca Trng. Hiu trng nhim k 2006 -2011 ca Trng l Tin s L Trng Tng. ng tt nghip i hc ti khoa Ton, i hc Tng hp Mat-xc-va mang tn Lm-n-xp (MGU), bo v Lun n Tin s ti Hc vin k thut qun s. ng cn l Tng gim c Hc vin quc t FPT, Ch tch Hi tin hc TP.H Ch Minh (HCA), Ph Ch tch Hi tin hc Vit Nam (VAIP), i biu HND TP.H Ch Minh.

C s vt cht v iu kin hc tp
phc v cho nh hng pht trin trong tng lai, Trng i hc FPT v ang u t xy dng cc c s o to vi quy m ln ti Khu Cng ngh cao Ha Lc H Ni vi din tch t l 30.7ha. Cc hng mc xy dng u tin ang chun b i vo hot ng phc v cho nm hc 2011 -2012. Khu th Cng ngh FPT Nng cng c dnh 28ha cho o to. Ti Tp. HCM Ta Nh Tinh Hoa thuc quyn s hu ca Trng vi tng din tch s dng gn 20.000m2 cng ang gp rt c a vo s dng. Trng lun ch trng ci tin iu kin c s vt cht phc v hiu qu cho o to. Trng hin c hn 140 phng hc multimedia. Cc lp hc, ging ng c s dng vi chc nng nh phng lab, phng thc hn h my; 100% sinh vin c trang b laptop hc tp; 100% ging vin v nhn vin c trang b my tnh lm vic; Cc lp hc c b tr theo m hnh lp t sinh vin, ti a 30 em/lp m bo cht lng o to; 100% cc mn hc u c gio trnh , cc mn hc u c ti nguyn ging dy cho ging vin.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 7

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


H thng th vin ca Trng c ci t phn mm gii php Th vin in t Libol 6.0(LIBrary OnLine). Libol 6.0 l sn phm phn mm th vin in t v qun l tch hp nghip v th vin thnh cng nht Vit Nam. Th vin gio trnh ca Trng hin 30659 bn cng vi 95 u sch c nhp khu t cc nh xut bn ln nh: Pearson Education, John Wiley, Mc Graw-Hill, Cengage Learning, Macmillan hoc in n ti Vit Nam vi bn quyn c mua hoc ng k. Th vin tham kho truyn thng c 9666 bn vi 3342 u sch. Ngoi ra sch in t gm 02 c s d liu (CSDL) vi 10398 u ti liu, trong CSDL ITpro c 9222 u sch v CNTT v FinalcePro c 1176 u sch v kinh t V h tng CNTT: L mt trng i hc o to chuyn su v CNTT -TT, Trng i hc FPT mong mun to mt mi trng cng ngh thc s cho sinh vin. Trng hin c 43 my ch; 525 my PC cho cn b ging vin; 4365 my laptop cho sinh vin; 171 Asscess point; 109 my chiu; 03 h thng hi tho trc tuyn Teleconference; ng truyn Internet bao gm Leasedline v FTTH vi tng bng thng 338Mb/s; H thng mng wifi ca Cisco p ng nhu cu cho khong 5000 ngi; Sinh vin ca Trng c cp email @fpt.edu.vn vi dung lng 7.5Gb truy cp ti nguyn hc tp v thng tin nh: H thng qun l kha hc online (CMS: http://cms.fpt.edu.vn), h thng qun l sinh vin online (AP: http://ap.fpt.edu.vn), h thng qun l th vin Libol: http://libol.fpt.edu.vn, din n sinh vin (http://svfpt.net)..., ph huynh c cp account xem thng tin online v lch hc, im, im danh ca con em; H thng qun l thi trc tuyn EOS (Exam Online System) c trin khai cho 35/38 mn hc.

i ng nh gio, cn b qun l v nhn vin


Hnh thc Hp ng thnh ging 213 213 89 12 74 11 17 10 3 1 22 7 3 1 2 3 17 251 52 61 Gio s tuyn dng STT Ni dung Tng Hp ng c hu Tng s ging vin, cn b qun l v nhn vin 846 (I+II) I 1 2 3 4 5 6 II 1 2 3 Ging vin B mn CNTT B mn Ton B mn Ting Anh B mn Ting Nht B mn Qun tr kinh doanh B mn C bn Cn b qun l v nhn vin Hiu trng Ph Hiu trng CBNV 459 242 17 103 24 35 38 387 1 5 381 246 153 5 29 13 18 28 387 1 5 381 5 1 61 23 7 2 206 114 8 56 3 12 13 20 192 0 105 2 45 21 1 18 251 52 61 0 633 5 64 226 443 52 61 Chc danh Ph Gio s Trnh o to Trnh khc

Tin Thc i Cao s s hc ng

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 8

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


T l s sinh vin / ging vin
Thc t: 6,3 Quy i: 8,2

Kim nh cht lng gio dc


Trng i hc FPT trin khai H thng Cht lng da trn chun ISO 9001: 2008 (p dng cho cc c s o to) v tiu chun cht lng Quc t ABET (dnh cho khi ngnh k ngh). Trng nhn c chng ch ISO 9001:2008 vo thng 6/2010, v mc tiu phn u trong 2 -3 nm ti s t c chng nhn ca ABET cho ngnh Software Engineering. Hin nay trng nhn chng ch cht lng ISO cho cc h o to Diploma (Aptech, Arena). Vic trin khai kim nh theo cc Tiu ch ca B Gio dc v o to c tin hnh song song khi xy dng h thng cht lng ISO. D kin nm 2012 Trng s hon thnh bo co T nh gi trong ni b trng v gi ln Cc Kho th v Kim nh Cht lng Gio dc i hc - B GD&T. V t chc, trng thnh lp Phng m bo Cht lng lm u mi thc hin. Trng cng c 1 cn b sang nghin cu ti M h tr trin khai ABET.

3. Chng trnh o to
Tng quan v chng trnh o to

Sinh vin ti thi im c nhp hc th ng k theo hc hai nhm ngnh c bn l Cng ngh thng tin hoc Kinh t Kinh doanh. Khi ngnh Cng ngh thng tin:
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 9

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Sinh vin hon thnh giai on u ca khi ngnh.Cng ngh thng tin bao gm 2 hc k s la chn mt trong hai chuyn ngnh l ng dng phn mm hoc Thit k Website trong giai on sau. Khi ngnh Kinh t Kinh doanh: Sinh vin hon thnh giai on u ca khi ngnh Kinh t Kinh doanh bao gm 2 hc k s la chn mt trong hai chuyn ngnh l K ton doanh nghip hoc Qun tr doanh nghip trong giai on sau. Vi khi ngnh Qun tr doanh nghip sinh vin s c hc chuyn su theo chuyn theo cc chuyn ngnh su gm: Marketing & Bn hng, Qun tr nhn s & vn phng, Quan h cng chng v truyn thng Danh mc mn hc Cc mn K nng

SKI101: K nng hc tp SKI201: K nng ngh nghip SKI202: K nng lm vic nhm SKI203: K nng bn hng SKI204: K nng m phn trong kinh doanh SKI205: K nng tuyn dng

Cc mn Vit Nam

VIE101: Chnh tr VIE102: Php lut VIE103: Gio dc th cht VIE104: Gio dc quc phng v an ninh VIE105: (Son tho) Vn bn hnh chnh VIE106: Kinh t chnh tr

Cc mn Ting Anh

ENG101: Ting Anh 1 (Topnotch 1) ENG102: Ting Anh 2 (Topnotch 2)

Cc mn v my tnh

COM101: Tin hc c s COM102: Tin hc vn phng COM103: Mng my tnh v Internet COM104: Bo tr v x l s c my tnh COM201: C s d liu COM202: Cu trc d liu v gii thut COM203: H qun tr c s d liu SQL Server COM204: Qun tr Server COM205: Qun tr c s d liu vi Access
Trang 10

SVTH: Nguyn nh Lnh Lp : 10T1LT

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


COM301: Thng mai in t COM302: An ton v bo mt thng tin

Cc mn v Lp trnh Web

WEB101: Thit k website WEB102: Qun tr website WEB103: Thit k Layout website WEB104: Lp trnh c s vi Javascript WEB201: Lp trnh Web vi PHP WEB202: K thut trnh by ni dung Web WEB203: H thng qun tr ni dung Web WEB205: Marketing trn Internet WEB301: Xy dng ng dng Web WEB302: Chuyn 1 (HTML5 & CSS3.0) WEB303: Chuyn 2 (Mobile web)

Cc mn v a phng tin

MUL101: ha ng dng MUL102: Cng c thit k v v ha MUL201: Thit k a truyn thng vi Flash

Cc mn v H thng thng tin


INF101: H thng thng tin INF201: Phn tch thit k h thng thng tin INF202: H thng mng Intranet INF203: H thng thng tin qun l INF204: Cc h thng m ngun m INF301: Chuyn (in ton m my)

Cc mn v Lp trnh

SOF101: Lp trnh c bn SOF201: Lp trnh Windows (Visual Basic .NET) SOF202: Lp trnh Web (ASP.NET)

Cc mn v K ton

ACC101: Nguyn l k ton ACC102: K ton ti chnh 1 ACC103: Thc hnh k ton ti chnh 1 ACC201: K ton ti chnh 2 ACC202: Thc hnh k ton ti chnh 2 ACC203: K ton quc t
Trang 11

SVTH: Nguyn nh Lnh Lp : 10T1LT

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


ACC204: K ton qun tr ACC301: K ton ti chnh 3 ACC302: Thc hnh k ton ti chnh 3 ACC304: Kim ton ACC305: K ton thu

Cc mn v Ti chnh

FIN101: Ti chnh doanh nghip FIN201: Thu FIN202: Ti chnh Tn dng FIN203: Thng k

Cc mn v Kinh doanh

BUS101: Nhp mn qun tr doanh nghip BUS102: Kinh t (vi m + v m) BUS103: Php lut kinh t BUS104: Hnh vi t chc BUS201: Phn tch hot ng kinh doanh BUS202: Tm l kinh doanh BUS203: Kinh doanh quc t BUS204: Kinh t thng mi dch v

Cc mn v Qun tr

MAN101: Qun tr vn phng MAN102: Qun tr chui cung ng MAN103: Qun tr marketing MAN104: Qun tr nhn lc MAN201: Qun tr tc nghip kinh doanh

Cc mn v Marketing

MAR101: Marketing c bn MAR201: Marketing thng mi

Cc mn v Nhn s

HUR101: Chnh sch v k hoch nhn s HUR102: T chc v o to nhn lc

Cc mn d n

PRO101: D n 1 (Nhm ngnh CNTT) PRO201: D n 2 (Ngnh Thit k web)


Trang 12

SVTH: Nguyn nh Lnh Lp : 10T1LT

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


PRO 301: D n tt nghip (Ngnh Thit k web) PRO202: D n 2 (Ngnh ng dng phn mm) PRO302: D n tt nghip (Ngnh ng dng phn mm) PRO102: D n 1 (Ngnh K ton doanh nghip) PRO304: D n tt nghip (Ngnh K ton doanh nghip) PRO305: D n tt nghip (Ngnh Marketing&Bn hng) PRO306: D n tt nghip (Ngnh Nhn s&Vn phng

II.

Nghin cu cng ngh Java

K tha K tha l vic xy dng lp mi da trn lp c sn Lp c sn l lp cha: superclass Lp mi l lp con: subclass V d: Hnh vung k tha t hnh ch nht Con ch k tha t loi ng vt di nc Ch : Tnh k tha th hin quan h is a, khc vi quan h has a (composition) Composition: mt i tng cha cc i tng thuc lp khc. V d: t c cc bnh xe Cy k tha:

1.1 Lp c s dn xut Mt lp c xy dng thng qua k tha t mt lp khc gi l lp dn xut (hay cn gi l lp con, lp hu du ), lp dng xy dng lp dn xut c gi l lp c s ( hay cn gi l lp cha, hoc lp t tin ) Mt lp dn xut ngoi cc thnh phn ca ring n, n cn c k tha tt c cc thnh phn ca lp cha 1.2 Xy dng lp c s dn xut ni lp b l dn xut ca lp a ta dng t kho extends, c php nh sau: class b extends a{
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 13

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


// phn thn ca lp b }

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 14

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


1.3 Tha k thuc tnh Thc tnh ca lp c s c tha k trong lp dn xut, nh vy tp thuc tnh ca lp dn xut s gm: cc thuc tnh khai bo trong lp dn xut v cc thuc tnh ca lp c s, tuy nhin trong lp dn xut ta khng th truy cp vo cc thnh phn private, package ca lp c s 1.4 Tha k phng thc Lp dn xut k tha tt c cc phng thc ca lp c s tr: Phng thc to dng Phng thc finalize 1.5 Khi to lp c s Lp dn xut k tha mi thnh phn ca lp c, iu ny dn ta n mt hnh dung, l lp dn xut c cng giao din vi lp c s v c th c cc thnh phn mi b sung thm. nhng thc t khng phi vy, k tha khng ch l sao chp giao din ca lp ca lp c s. Khi ta to ra mt i tng ca lp suy dn, th n cha bn trong n mt s vt con ca lp c s, s vt con ny nh th ta to ra mt s vt tng minh ca lp c s, th th lp c s phi c bo m khi u ng, thc hin iu trng java ta lm nh sau: Thc hin khi u cho lp c s bng cch gi cu t ca lp c s bn trong cu t ca lp dn xut, nu bn khng lm iu ny th java s lm gip ban, ngha l java lun t ng thm li gi cu t ca lp c s vo cu t ca lp dn xut nu nh ta qun lm iu , c th gi cu t ca lp c s ta s dng t kho super Trt t khi to Trt t khi u trong java c thc hin theo nguyn tc sau: java s gi cu t ca lp c s trc sau mi n cu t ca lp suy dn, iu ny c ngha l trong cy ph h th cc cu t s c gi theo trt t t gc xung dn n l Trt t dn dp Mc d java khng c khi nim hu t nh ca C++, tuy nhin b thu rc ca java vn hot ng theo nguyn tc lm vic ca cu t C++, tc l trt t thu rc th ngc li so vi trt t khi u. 1.6 Phng thc ghi Hin tng trong lp c s v lp dn xut c hai phng thc ging ht nhau ( c tn ln b tham s) gi l ghi phng thc ( Override ), ch Override khc Overload. Gi phng thc b ghi ca lp c s Bn trong lp dn xut, nu c hin tng ghi th phng thc b ghi ca lp c s s b n i, c th gi phng thc b ghi ca lp c s ta dng t kho super truy cp n lp cha, c php sau: super.overriddenMethodName(); Ch : Nu mt phng thc ca lp c s b bi ti ( Overload ), th n khng th b ghi ( Override ) lp dn xut. 1.7 Thnh phn protected
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 15

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Trong mt vi bi trc ta lm quen vi cc thnh phn private, public, sau khi hc v k tha th t kho protected cui cng c ngha. T kho protected bo cho java bit y l thnh phn ring t i vi bn ngoi nhng li sn sng vi cc con chu 1.8 T kha final T kho final trong java c nhiu ngha khc nhau, ngha ca n tu thuc vo ng cnh c th, nhng ni chung n mun ni ci ny khng th thay i c a. Thuc tnh final Trong java cch duy nht to ra mt hng l khai bo thuc tnh l final V d: public class A { // nh ngha hng tn MAX_VALUE gi tr 100 static final int MAX_VALUE = 100; public static void main ( String arg[] ) { A thu = new A (); System.out.println("MAX_VALUE= " +thu.MAX_VALUE); } } Ch : 1) khi khai bo mt thuc tnh l final th thuc tnh ny la hng, do vy ta khng th thay i gi tr ca n 2) khi khai bo mt thuc tnh l final th ta phi cung cp gi tr ban u cho n 3) nu mt thuc tnh va l final va l static th n ch c mt vng nh chung duy nht cho c lp b. i s final Java cho php ta to ra cc i final bng vic khai bo chng nh vy bn trong danh sch i, ngha l bn trong thn ca phng php ny, bt c c gng no thay i gi tr ca i u gy ra li lc dch V d sau b bo li lc dch v n c gng thay i gi tr ca i final public class A { static public void thu ( final int i ) { i=i+1;//khng cho php thay i gi tr ca tham s final System.out.println ( i );; } public static void main ( String arg[] )
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 16

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


{ hu ( i ); } } chng trnh ny s b bo li: "A.java": variable i might already have been assigned to at line 5, column 9 c. Phng thc final Mt phng thc bnh thng c th b ghi lp dn xut, i khi ta khng mun phng thc ca ta b ghi lp dn xut v l do g , mc ch ch yu ca cc phng thc final l trnh ghi , tuy nhin ta thy rng cc phng thc private s t ng l final v chng khng th thy c trong lp dn xut ln chng khng th b ghi , nn cho d bn c cho mt phng thc private l final th bn cng ch thy mt hiu ng no d. Lp final Nu bn khng mun ngi khc k tha t lp ca bn, th bn hy dng t kho final ngn cn bt c ai mun k tha t lp ny. Ch : do mt lp l final (tc khng th k tha )do vy ta khng th no ghi cc phng thc ca lp ny, do vy ng c gng cho mt phng thc ca lp final l final a hnh 2.1 Gii thiu Tnh a hnh cho php chng ta lp trnh mt cch tng qut hn l lp trnh c th. t bit, a hnh cho php x l nhng i tng chia s cng lp super, iu ny lm cho vic lp trnh tr nn n gin. Vi tnh a hnh, chng ta c th thit k v thc thi nhng h thng vi kh nng d dng m rng. Nhng lp mi c thm c th chnh sa mt t hoc khng nhng thnh phn chung ca chng trnh. Tnh a hnh th hin qua vic: cng mt phng thc nhng c ni dung thc hin khc nhau trn cc i tng khc nhau. Phng thc gi c xc nh thng qua i tng c tham chiu, khng thng qua kiu khai bo ca tham chiu. Trong Java, cc phng thc lun mang tnh a hnh.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 17

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


2.2 V d v a hnh

Thit k hng i tng vi UML 3.1 Gii thiu UML UML l mt ngn ng m hnh ho thng nht c phn chnh bao gm nhng k hiu hnh hc, c cc phng php hng i tng s dng th hin v miu t cc thit k ca mt h thng. N l mt ngn ng c t, trc quan ho, xy dng v lm su liu cho nhiu kha cnh khc nhau ca mt h thng c nng phn mm cao. UML c th c s dng lm cng c giao tip gia ngi dng, nh phn tch, nh thit k v nh pht trin phn mm. Trong qu trnh pht trin c nhiu cng ty h tr v khuyn khch pht trin UML c th k ti nh: Hewlett Packard, Microsoft, Oracle, IBM, Unisys Ngn ng m hnh ha thng nht (Unifield Modeling Language UML) l mt ngn ng biu din m hnh theo hng i tng c xy dng bi ba tc gi trn vi ch ch l: M hnh ho cc h thng s dng cc khi nim hng i tng. Thit lp mt kt ni t nhn thc ca con ngi n cc s kin cn m hnh ho. Gii quyt vn v mc tha k trong cc h thng phc tp, c nhiu rng buc khc nhau. To mt ngn ng m hnh ho c th s dng c bi ngi v my. 3.2 UML v cc giai on pht trin phn mm Giai on nghin cu s b:
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 18

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


UML a ra khi nim Use Case nm bt cc yu cu ca khch hng (ngi s dng). UML s dng biu Use case (Use Case Diagram) nu bt mi quan h cng nh s giao tip vi h thng. Qua phng php m hnh ha Use case, cc tc nhn (Actor) bn ngoi quan tm n h thng s c m hnh ha song song vi chc nng m h i hi t pha h thng (tc l Use case). Cc tc nhn v cc Use case c m hnh ha cng cc mi quan h v c miu t trong biu Use case ca UML. Mi mt Use case c m t trong ti liu, v n s c t cc yu cu ca khch hng: Anh ta hay ch ta ch i iu g pha h thng m khng h n vic chc nng ny s c thc thi ra sao. Giai on phn tch: Giai on phn tch quan tm n qu trnh tru tng ha u tin (cc lp v cc i tng) cng nh c ch hin hu trong phm vi vn . Sau khi nh phn tch nhn bit c cc lp thnh phn ca m hnh cng nh mi quan h gia chng vi nhau, cc lp cng cc mi quan h s c miu t bng cng c biu lp (class diagram) ca UML. S cng tc gia cc lp nhm thc hin cc Use case cng s c miu t nh vo cc m hnh ng (dynamic models) ca UML. Trong giai on phn tch, ch duy nht cc lp c tn ti trong phm vi vn (cc khi nim i thc) l c m hnh ha. Cc lp k thut nh ngha chi tit cng nh gii php trong h thng phn mm, v d nh cc lp cho giao din ngi dng, cho ngn hng d liu, cho s giao tip, trng hp, v.v..., cha phi l mi quan tm ca giai on ny. Giai on thit k: Trong giai on ny, kt qu ca giai on phn tch s c m rng thnh mt gii php k thut. Cc lp mi s c b sung to thnh mt h tng c s k thut: Giao din ngi dng, cc chc nng lu tr cc i tng trong ngn hng d liu, giao tip vi cc h thng khc, giao din vi cc thit b ngoi vi v cc my mc khc trong h thng,.... Cc lp thuc phm vi vn c t giai on phn tch s c "nhng" vo h tng c s k thut ny, to ra kh nng thay i trong c hai phng din: Phm vi vn v h tng c s. Giai on thit k s a ra kt qu l bn c t chi tit cho giai on xy dng h thng. Giai on xy dng: Trong giai on xy dng (giai on lp trnh), cc lp ca giai on thit k s c bin thnh nhng dng code c th trong mt ngn ng lp trnh hng i tng c th (khng nn dng mt ngn ng lp trnh hng chc nng!). Ph thuc vo kh nng ca ngn ng c s dng, y c th l mt cng vic kh khn hay d dng. Khi to ra cc m hnh phn tch v thit k trong UML, tt nht nn c gng n trnh vic ngay lp tc bin i cc m hnh ny thnh cc dng code. Trong nhng giai on trc, m hnh c s dng d hiu, d giao tip v to nn cu trc ca h thng; v vy, vi
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 19

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


vng a ra nhng kt lun v vic vit code c th s thnh mt tr ngi cho vic to ra cc m hnh chnh xc v n gin. Giai on xy dng l mt giai on ring bit, ni cc m hnh c chuyn thnh code. Th nghim: Nh trnh by trong phn Chu Trnh Pht Trin Phn Mm, mt h thng phn mm thng c th nghim qua nhiu giai on v vi nhiu nhm th nghim khc nhau. Cc nhm s dng nhiu loi biu UML khc nhau lm nn tng cho cng vic ca mnh: Th nghim n v s dng biu lp (class diagram) v c t lp, th nghim tch hp thng s dng biu thnh phn (component diagram) v biu cng tc (collaboration diagram), v giai on th nghim h thng s dng biu Use case (use case diagram) m bo h thng c phng thc hot ng ng nh c nh ngha t ban u trong cc biu ny. 3.3 Cc thnh phn ca ngn ng UML Ngn ng UML bao gm mt lot cc phn t ha (graphic element) c th c kp hp vi nhau to ra cc biu . Bi y l mt ngn ng, nn UML cng c cc nguyn tc kt hp cc phn t . Mt s nhng thnh phn ch yu ca ngn ng UML: Hng nhn (view): Hng nhn ch ra nhng kha cnh khc nhau ca h thng cn phi c m hnh ha. Mt hng nhn khng phi l mt bn v, m l mt s tru tng ha bao gm mt lot cc biu khc nhau. Ch qua vic nh ngha ca mt lot cc hng nhn khc nhau, mi hng nhn ch ra mt kha cnh ring bit ca h thng, ngi ta mi c th to dng nn mt bc tranh hon thin v h thng. Cng chnh cc hng nhn ny ni kt ngn ng m hnh ha vi quy trnh c chn cho giai on pht trin. Biu (diagram): Biu l cc hnh v miu t ni dung trong mt hng nhn. UML c tt c 9 loi biu khc nhau c s dng trong nhng s kt hp khc nhau cung cp tt c cc hng nhn ca mt h thng. Phn t m hnh ha (model element): Cc khi nim c s dng trong cc biu c gi l cc phn t m hnh, th hin cc khi nim hng i tng quen thuc. V d nh lp, i tng, thng ip cng nh cc quan h gia cc khi nim ny, bao gm c lin kt, ph thuc, khi qut ha. Mt phn t m hnh thng c s dng trong nhiu biu khc nhau, nhng n lun lun c ch mt ngha v mt k hiu. C ch chung: C ch chung cung cp thm nhng li nhn xt b sung, cc thng tin cng nh cc quy tc ng php chung v mt phn t m hnh; chng cn cung cp thm cc c ch c th m
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 20

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


rng ngn ng UML cho ph hp vi mt phng php xc nh (mt quy trnh, mt t chc hoc mt ngi dng). 3.4 Hng nhn (View) M hnh ha mt h thng phc tp l mt vic lm kh khn. L tng nht l ton b h thng c miu t ch trong mt bn v, mt bn v nh ngha mt cch r rng v mch lc ton b h thng, mt bn v ngoi ra li cn d giao tip v d hiu. Mc d vy, thng th y l chuyn bt kh thi. Mt bn v khng th nm bt tt c cc thng tin cn thit miu t mt h thng. Mt h thng cn phi c miu t vi mt lot cc kha cnh khc nhau: V mt chc nng (cu trc tnh ca n cng nh cc tng tc ng), v mt phi chc nng (yu cu v thi gian, v ng tin cy, v qu trnh thc thi, v.v. v v.v.) cng nh v kha cnh t chc (t chc lm vic, nh x n vo cc code module,...). V vy mt h thng thng c miu t trong mt lot cc hng nhn khc nhau, mi hng nhn s th hin mt bc nh nh x ca ton b h thng v ch ra mt kha cnh ring ca h thng.

Hnh - Cc View trong UML Mi mt hng nhn c miu t trong mt lot cc biu , cha ng cc thng tin nu bt kha cnh c bit ca h thng. Trong thc t khi phn tch v thit k rt d xy ra s trng lp thng tin, cho nn mt biu trn tht t c th l thnh phn ca nhiu hng nhn khc nhau. Khi nhn h thng t nhiu hng nhn khc nhau, ti mt thi im c th ngi ta ch tp trung vo mt kha cnh ca h thng. Mt biu trong mt hng nhn c th no cn phi n gin to iu kin giao tip d dng, dnh lin vi cc biu khc cng nh cc hng nhn khc, lm sao cho bc tranh ton cnh ca h thng c miu t bng s kt hp tt c cc thng tin t tt c cc hng nhn. Mt biu cha cc k hiu hnh hc m t cc phn t m hnh ca h thng. UML c tt c cc hng nhn sau:

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 21

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Hng nhn Use case (use case view): y l hng nhn ch ra kha cnh chc nng ca mt h thng, nhn t hng tc nhn bn ngoi. Hng nhn logic (logical view): ch ra chc nng s c thit k bn trong h thng nh th no, qua cc khi nim v cu trc tnh cng nh ng x ng ca h thng. Hng nhn thnh phn (component view): ch ra kha cnh t chc ca cc thnh phn code. Hng nhn song song (concurrency view): ch ra s tn ti song song/ trng hp trong h thng, hng n vn giao tip v ng b ha trong h thng. Hng nhn trin khai (deployment view): ch ra kha cnh trin khai h thng vo cc kin trc vt l (cc my tnh hay trang thit b c coi l trm cng tc). Khi bn chn cng c v biu , hy chn cng c no to iu kin d dng chuyn t hng nhn ny sang hng nhn khc. Ngoi ra, cho mc ch quan st mt chc nng s c thit k nh th no, cng c ny cng phi to iu kin d dng cho bn chuyn sang hng nhn Use case ( xem chc nng ny c miu t nh th no t pha tc nhn), hoc chuyn sang hng nhn trin khai ( xem chc nng ny s c phn b ra sao trong cu trc vt l - Ni mt cch khc l n c th nm trong my tnh no). Ngoi cc hng nhn k trn, ngnh cng nghip phn mm cn s dng c cc hng nhn khc, v d hng nhn tnh-ng, hng nhn logic-vt l, quy trnh nghip v (workflow) v cc hng nhn khc. UML khng yu cu chng ta phi s dng cc hng nhn ny, nhng y cng chnh l nhng hng nhn m cc nh thit k ca UML ngh ti, nn c kh nng nhiu cng c s da trn cc hng nhn . 3.1.1 Hng nhn Use case (Use case View):

Hng nhn Use case miu t chc nng ca h thng s phi cung cp do c tc nhn t bn ngoi mong i. Tc nhn l thc th tng tc vi h thng; c th l mt ngi s dng hoc l mt h thng khc. Hng nhn Use case l hng nhn dnh cho khch hng, nh thit k, nh pht trin v ngi th nghim; n c miu t qua cc biu Use case (use case diagram) v thnh thong cng bao gm c cc biu hot ng (activity diagram). Cch s dng h thng nhn chung s c miu t qua mt lot cc Use case trong hng nhn Use case, ni mi mt Use case l mt li miu t mang tnh c th cho mt tnh nng ca h thng (c ngha l mt chc nng c mong i). Hng nhn Use case mang tnh trung tm, bi n t ra ni dung thc y s pht trin cc hng nhn khc. Mc tiu chung ca h thng l cung cp cc chc nng miu t trong hng nhn ny cng vi mt vi cc thuc tnh mang tnh phi chc nng khc v th hng nhn ny c nh hng n tt c cc hng nhn khc. Hng nhn ny cng c s dng thm tra (verify) h thng qua vic th nghim xem hng nhn Use case c ng vi mong i ca khch hng (Hi: "y c phi l th bn mun") cng nh c ng vi h thng va c hon thnh (Hi: "H thng c hot ng nh c t?). 3.1.2 Hng nhn Logic(Logical View)
Trang 22

SVTH: Nguyn nh Lnh Lp : 10T1LT

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Hng nhn logic miu t phng thc m cc chc nng ca h thng s c cung cp. Ch yu n c s dng cho cc nh thit k v nh pht trin. Ngc li vi hng nhn Use case, hng nhn logic nhn vo pha bn trong ca h thng. N miu t k c cu trc tnh (lp, i tng, v quan h) cng nh s tng tc ng s xy ra khi cc i tng gi thng ip cho nhau cung cp chc nng nh sn. Hng nhn logic nh ngha cc thuc tnh nh trng tn (persistency) hoc song song (concurrency), cng nh cc giao din cng nh cu trc ni ti ca cc lp. Cu trc tnh c miu t bng cc biu lp (class diagram) v biu i tng (object diagram). Qu trnh m hnh ha ng c miu t trong cc biu trng thi (state diagram), biu trnh t (sequence diagram), biu tng tc (collaboration diagram) v biu hot ng (activity diagram). 3.1.3 Hng nhn thnh phn (Component View)

L mt li miu t ca vic thc thi cc modul cng nh s ph thuc gia chng vi nhau. N thng c s dng cho nh pht trin v thng bao gm nhiu biu thnh phn. Thnh phn y l cc modul lnh thuc nhiu loi khc nhau, s c ch ra trong biu cng vi cu trc cng nh s ph thuc ca chng. Cc thng tin b sung v cc thnh phn, v d nh v tr ca ti nguyn (trch nhim i vi mt thnh phn), hoc cc thng tin qun tr khc, v d nh mt bn bo co v tin trnh ca cng vic cng c th c b sung vo y.

3.1.4

Hng nhn song song (Concurrency View)

Hng nhn song song nhm ti s chia h thng thnh cc qui trnh (process) v cc b x l (processor). Kha cnh ny, vn l mt thuc tnh phi chc nng ca h thng, cho php chng ta s dng mt cch hu hiu cc ngun ti nguyn, thc thi song song, cng nh x l cc s kin khng ng b t mi trng. Bn cnh vic chia h thng thnh cc tiu trnh c th c thc thi song song, hng nhn ny cng phi quan tm n vn giao tip v ng b ha cc tiu trnh . Hng nhn song song ginh cho nh pht trin v ngi tch hp h thng, n bao gm cc biu ng (trng thi, trnh t, tng tc v hot ng) cng cc biu thc thi (biu thnh phn v biu trin khai). 3.1.5 Hng nhn trin khai (Deployment View)

Cui cng, hng nhn trin khai ch cho chng ta s trin khai v mt vt l ca h thng, v d nh cc my tnh cng nh cc my mc v s lin kt gia chng vi nhau. Hng nhn trin khai ginh cho cc nh pht trin, ngi tch hp cng nh ngi th nghim h thng v c th hin bng cc biu trin khai. Hng nhn ny cng bao gm s nh x cc thnh phn ca h thng vo cu trc vt l; v d nh chng trnh no hay i tng no s c thc thi trn my tnh no.
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 23

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


3.5 Biu (diagram) 3.5.1 Biu Use case (Use Case Diagram)

Mt biu Use case ch ra mt s lng cc tc nhn ngoi cnh v mi lin kt ca chng i vi Use case m h thng cung cp (nhn hnh 3.2). Mt Use case l mt li miu t ca mt chc nng m h thng cung cp. Li miu t Use case thng l mt vn bn ti liu, nhng km theo cng c th l mt biu hot ng. Cc Use case c miu t duy nht theo hng nhn t ngoi vo ca cc tc nhn (hnh vi ca h thng theo nh s mong i ca ngi s dng), khng miu t chc nng c cung cp s hot ng ni b bn trong h thng ra sao. Cc Use case nh ngha cc yu cu v mt chc nng i vi h thng. Cc biu Use case s c miu t chi tit hn trong chng 4 (Use case).

Hnh 3.2- Biu use case ca mt cng ty bo him 3.5.2 Biu lp (Class Diagram)

Mt biu lp ch ra cu trc tnh ca cc lp trong h thng (nhn hnh 3.3). Cc lp l i din cho cc vt c x l trong h thng. Cc lp c th quan h vi nhau trong nhiu dng thc: lin kt (associated - c ni kt vi nhau), ph thuc (dependent - mt lp ny ph thuc vo lp khc), chuyn bit ha (specialized - mt lp ny l mt kt qu chuyn bit ha ca lp khc), hay ng gi ( packaged - hp vi nhau thnh mt n v). Tt c cc mi quan h u c th hin trong biu lp, i km vi cu trc bn trong ca cc lp theo khi nim thuc tnh (attribute) v th tc (operation). Biu c coi l biu tnh theo phng din cu trc c miu t y c hiu lc ti bt k thi im no trong ton b vng i h thng.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 24

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Mt h thng thng s c mt lot cc biu lp chng phi bao gi tt c cc biu lp ny cng c nhp vo mt biu lp tng th duy nht v mt lp c th tham gia vo nhiu biu lp. Biu lp c miu t chi tit trong chng sau.

Hnh 3.3 - Biu lp cho mt giao dch Ti chnh 3.5.3 Biu i tng (Object Diagram)

Mt biu i tng l mt phin bn ca biu lp v thng cng s dng cc k hiu nh biu lp. S khc bit gia hai loi biu ny nm ch biu i tng ch ra mt lot cc i tng thc th ca lp, thay v cc lp. Mt biu i tng v vy l mt v d ca biu lp, ch ra mt bc tranh thc t c th xy ra khi h thng thc thi: bc tranh m h thng c th c ti mt thi im no . Biu i tng s dng chung cc k hiu ca biu lp, ch tr hai ngoi l: i tng c vit vi tn c gch di v tt c cc thc th trong mt mi quan h u c ch ra (nhn hnh 3.4). Biu i tng khng quan trng bng biu lp, chng c th c s dng v d ha mt biu lp phc tp, ch ra vi nhng thc th c th v nhng mi quan h nh th th bc tranh ton cnh s ra sao. Mt biu i tng thng thng c s dng lm mt thnh phn ca mt biu cng tc (collaboration), ch ra li ng x ng gia mt lot cc i tng.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 25

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

Hnh 3.4 - Biu lp v biu i tng th hin ca lp 3.5.4 Biu trng thi (State Diagram)

Mt biu trng thi thng l mt s b sung cho li miu t mt lp. N ch ra tt c cc trng thi m i tng ca lp ny c th c, v nhng s kin (event) no s gy ra s thay i trng thi (hnh 3.5). Mt s kin c th xy ra khi mt i tng t gi thng ip n cho n - v d nh thng bo rng mt khong thi gian c xc nh qua i hay l mt s iu kin no c tha mn. Mt s thay i trng thi c gi l mt s chuyn i trng thi (State Transition). Mt chuyn i trng thi cng c th c mt hnh ng lin quan, xc nh iu g phi c thc hin khi s chuyn i trng thi ny din ra. Biu trng thi khng c v cho tt c cc lp, m ch ring cho nhng lp c mt s lng cc trng thi c nh ngha r rng v hnh vi ca lp b nh hng v thay i qua cc trng thi khc nhau. Biu trng thi cng c th c v cho h thng tng th. Biu trng thi c miu t chi tit hn trong chng sau (M hnh ng).

Hnh 3.5- Mt v d v biu trng thi 3.5.5 Biu trnh t (Sequence Diagram)

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 26

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Mt biu trnh t ch ra mt cng tc ng gia mt lot cc i tng (xem hnh 3.6). Kha cnh quan trng ca biu ny l ch ra trnh t cc thng ip (message) c gi gia cc i tng. N cng ch ra trnh t tng tc gia cc i tng, iu s xy ra ti mt thi im c th no trong trnh t thc thi ca h thng. Cc biu trnh t cha mt lot cc i tng c biu din bng cc ng thng ng. Trc thi gian c hng t trn xung di trong biu , v biu ch ra s trao i thng ip gia cc i tng khi thi gian tri qua. Cc thng ip c biu din bng cc ng gch ngang gn lin vi mi tn (biu th thng ip) ni lin gia nhng ng thng ng th hin i tng. Trc thi gian cng nhng li nhn xt khc thng s c a vo phn l ca biu .

Hnh 3.6 - Mt biu trnh t cho Print Server 3.5.6 Biu cng tc (Collaboration Diagram)

Mt biu cng tc ch ra mt s cng tc ng, cng ging nh mt biu trnh t. Thng ngi ta s chn hoc dng biu trnh t hoc dng biu cng tc. Bn cnh vic th hin s trao i thng ip (c gi l tng tc), biu cng tc ch ra cc i tng v quan h ca chng (nhiu khi c gi l ng cnh). Vic nn s dng biu trnh t hay biu cng tc thng s c quyt nh theo nguyn tc chung sau: Nu thi gian hay trnh t l yu t quan trng nht cn phi nhn mnh th hy chn biu trnh t; nu ng cnh l yu t quan trng hn, hy chn biu cng tc. Trnh t tng tc gia cc i tng c th hin trong c hai loi biu ny. Biu cng tc c v theo dng mt biu i tng, ni mt lot cc i tng c ch ra cng vi mi quan h gia chng vi nhau (s dng nhng k hiu nh trong biu lp/ biu i tng). Cc mi tn c v gia cc i tng ch ra dng chy thng ip gia cc i tng. Cc thng ip thng c nh km theo cc nhn (label), mt trong nhng chc nng ca nhn l ch ra th t m cc thng ip c gi i. N cng c th ch ra cc iu kin, ch ra nhng gi tr c tr v, v.v... Khi lm quen vi cch vit nhn, mt nh pht trin c th c biu cng tc v tun th theo dng thc thi cng nh s trao i thng ip. Mt biu cng tc cng c th cha c cc
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 27

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


i tng tch cc (active objects), hot ng song song vi cc i tng tch cc khc (hnh 3.7). Biu cng tc c miu t chi tit trong chng sau.

Hnh 3.7 - Mt biu cng tc ca mt printer server 3.5.7 Biu hot ng (Activity Diagram)

Mt biu hot ng ch ra mt trnh t ln lt ca cc hot ng (activity) (hnh 3.8). Biu hot ng thng c s dng miu t cc hot ng c thc hin trong mt th tc, mc d n cng c th c s dng miu t cc dng chy hot ng khc, v d nh trong mt Use case hay trong mt trnh t tng tc. Biu hot ng bao gm cc trng thi hnh ng, cha c t ca mt hot ng cn phi c thc hin (mt hnh ng - action). Mt trng thi hnh ng s qua i khi hnh ng c thc hin xong (khc vi biu trng thi: mt trng thi ch chuyn sang trng thi khc sau khi xy ra mt s kin r rng !). Dng iu khin y chy gia cc trng thi hnh ng lin kt vi nhau. Biu cn c th ch ra cc quyt nh, cc iu kin, cng nh phn thc thi song song ca cc trng thi hnh ng. Biu ngoi ra cn c th cha cc loi c t cho cc thng ip c gi i hoc c nhn v, trong t cch l thnh phn ca hnh ng c thc hin.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 28

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Hnh 3.8 - Mt biu hot ng cho mt printer server 3.5.8 Biu thnh phn (Component Diagram)

Mt biu thnh phn ch ra cu trc vt l ca cc dng lnh (code) theo khi nim thnh phn code. Mt thnh phn code c th l mt tp tin source code, mt thnh phn nh phn (binary) hay mt thnh phn thc thi c (executable). Mt thnh phn cha cc thng tin v cc lp logic hoc cc lp m n thi hnh, nh th c ngha l n to ra mt nh x t hng nhn logic vo hng nhn thnh phn. Biu thnh phn cng ch ra nhng s ph thuc gia cc thnh phn vi nhau, tr gip cho cng vic phn tch hiu ng m mt thnh phn c thay i s gy ra i vi cc thnh phn khc. Thnh phn cng c th c miu t vi bt k loi giao din no m chng bc l, v d nh giao din OLE/COM; v chng c th c nhm gp li vi nhau thnh tng gi (package). Biu thnh phn c s dng trong cng vic lp trnh c th (xem hnh 3.9).

Hnh 3.9 - Mt biu thnh phn ch ra s ph thuc gia cc thnh phn m 3.5.9 Biu trin khai (Deployment Diagram)

Biu trin khai ch ra kin trc vt l ca phn cng cng nh phn mm trong h thng. Bn c th ch ra tng my tnh c th v tng trang thit b c th (node) i km s ni kt gia chng vi nhau, bn cng c th ch ra loi ca cc mi ni kt . Bn trong cc nt mng (node), cc thnh phn thc thi c cng nh cc i tng s c xc nh v tr ch ra nhng phn mm no s c thc thi ti nhng nt mng no. Bn cng c th ch ra s ph thuc gia cc thnh phn. Biu trin khai ch ra hng nhn trin khai, miu t kin trc vt l tht s ca h thng. y l mt hng nhn rt xa li miu t duy chc nng ca hng nhn Use case. Mc d vy, trong mt m hnh tt, ngi ta c th ch tt c nhng con ng dn t mt nt mng trong mt kin trc vt l cho ti nhng thnh phn ca n, cho ti lp m n thc thi, cho ti nhng tng tc m cc i tng ca

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 29

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


lp ny tham gia ri cui cng, tin ti mt Use case. Rt nhiu hng nhn khc nhau ca h thng c s dng ng thi to ra mt li miu t thu o i vi h thng trong s tng th ca n.

Hnh 3.10 - Mt biu trin khai ch ra kin trc vt l ca h thng Multithreads 4.1 Gii thiu Thread l mt n v x l c bn trong h thng. Mi thread x l tun t cc on code ca n, s hu mt con tr lnh, mt tp cc thanh ghi v mt vng nh stack ring, cc thread chia s CPU vi nhau ging nh cch chia s gia cc tin trnh. Mt tin trnh s hu nhiu thread, tuy nhin mt thread ch c th thuc v mt tin trnh, cc thread bn trong cng mt tin trnh chia s nhau khng gian a ch chung, iu ny c ngha l cc thread c th chia s nhau cc bin ton cc ca tin trnh. Mt thread cng c th c cc trng thi ging nh cc trng thi ca mt tin trnh.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 30

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


4.2 Vng i ca thread

Hnh Biu trng thi UML ca vng i thread Trng thi New v Runable: Mt thread mi bt u trong trng thi New. N s gi trng thi ny cho n khi chng trnh khi ng thread, t n vo trng thi Runable. V lc ny coi nh n ang thc hin mt nhim v. Trng thi Waitting: i khi thread Runable chuyn sang trng thi ch trong khi n i mt thread khc thc hin nhim v. Trng thi ch chuyn ngc li trng thi Runable khi n c thread khc thng bo cho n tip tc thc hin. Trng thi Timed waitting : Trng thi Runable c th vo trng thi ch trong khong thi gian nht nh. N chuyn li trng thi ch khi ht thi gian ch hoc khi c s kin ch xy ra. Trng thi Terminate: Mt thread runable vo trng thi Terminate (trng thi cht) khi hon thnh nhim v no hoc c th kt thc mt cch khc c th do li xy ra. Trong biu UML trn, trng thi Terminate l trng thi cui cng bo hiu kt thc ca qu trnh chuyn giai on. Trng thi Blocked: Thread runable chuyn sang trng thi Blocked khi n ang thc hin nhim v no , nhng khng th hon thnh nhanh c v n tm thi ch cho n khi hon thnh. 4.3 Multithread trong Java

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 31

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Vi Java ta c th xy dng cc chong trnh a lung. Mt ng dng c th bao gm nhiu lung. Mi lung c gn mt cng vic c th, chng c thc thi ng thi vi cc lung khc. C hai cch to ra lung Cch 1: To ra mt lp k tha t lp Thread v ghi phng thc run ca lp Thread nh sau: class MyThread extends Thread{ public void run(){ //M lnh ca tuyn } } Cch 2: To ra mt lp trin khai t giao din Runnable, ghi phng thc run class MyThread implements Runnable{ public void run(){ //M lnh ca tuyn } } Lp Thread Lp Thread cha phng thc to dng Thread() cng nh nhiu phng thc hu ch c chc nng chy, khi ng, tm ngng, tip tc, gin on v ngng tuyn. to ra v chy mt tuyn ta cn lm 2 bc: M rng lp Thread v Ghi phng thc run() Gi phng thc start() bt u thc thi tuyn Lp Thread khng c nhiu phng thc lm, chng ch c mt vi phng thc hu dng c lit k sau: public void run() c java gi thc thi tuyn thi hnh, bn phi ghi phng thc ny thc thi nhim v ca tuyn, bi v phng thc run()ca lp Thread ch l phng thc rng public void start() khi ta to ra tuyn n cha thc s chy cho n khi, phng thc start() c gi, khi start() c gi th phng thc run() cng c kch hot public void stop() c chc nng ngng tuyn thi hnh, phng thc ny khng an ton, bn nn gn null vo bin Thread dng tuyn, thay v s dng phng thc stop() public void suspend() C chc nng tm ngng tuyn, trong java 2, phng thc ny t c s dng, bi v phng thc ny khng nh ti nguyn m n lm gi, do vy c th nguy c dn n deadlock ( kho cht ), bn nn dng phng thc wait(), tm ngng tuyn thay v s dng phng thc suspend() public void resume() Tip tc vn hnh tuyn nu nh n ang b ngng, nu tuyn ang thi hnh th phng thc ny b b qua, thng thng phng thc ny c dng kt hp vi phng thc suspend(), k t java 2 phng thc ny cn vi phng thc suspend()b t chi, do vy bn nn dng phng thc notify () thay v s dng phng thc resume() public static void sleep( long millis) Threadows InterruptedException
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 32

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


t tuyn thi hnh vo trng thi ng, trong khong thi gian xc nh bng mili giy. ch sleep() l phng thc tnh. public void interrupt() lm gin on tuyn thi hnh public static boolean isInterrupt() kim tra xem tuyn c b ngt khng public void setpriority( int p) n nh u tin cho tuyn thi hnh, u tin c xc nh l mt s nguyn thuc on [1,10] public final void wait() throws InterruptException t tuyn vo trng thi ch mt tuyn khc, cho n khi c mt tuyn khc thng bo th n li tip tc, y l phng thc ca lp c s Object public final void notify () nh thc tuyn ang ch, trn i tng ny public final void notifyAll() nh thc tt c cc tuyn ang ch trn i tng ny isAlive() Tr v True, nu lung l vn cn tn ti (sng) getPriority() Tr v mc u tin ca lung join() i cho n khi lung kt thc isDaemon() Kim tra nu lung l lung mt lung chy ngm (deamon) setDeamon(boolean on) nh du lung nh l lung chy ngm 4.4 ng b ha Khi nhiu tuyn truy cp ng thi vo ti nguyn dng chung, m ti nguyn ny li khng th chia s, cho nhiu tuyn, khi ti nguyn dng chung c th b hng. V d, mt lung c th c gng c d liu, trong khi lung khc c gng thay i d liu. Trong trng hp ny, d liu c th b sai. Trong nhng trng hp ny, bn cn cho php mt lung hon thnh trn vn tc v ca n, v ri th mi cho php cc lung k tip thc thi. Khi hai hoc nhiu hn mt lung cn thm nhp n mt ti nguyn c chia s, bn cn chc chn rng ti nguyn s c s dng ch bi mt lung ti mt thi im. Bi trong java khng c bin ton cc, chng ta ch c thuc tnh ca i tng, tt c cc thao tc c th dn n hng hc u thc hin qua phng thc, do vy java cung cp t kho synchronized, t kho ny c thm vo nh ngha ca phng thc bo cho java bit y l mt phng thc ng b, mi i tng s c mt b qun l kho, b qun l kho ny ch cho 1 phng thc synchronized ca i tng chy ti mt thi im Mu cht ca s ng b ha l khi nim monitor (gim st), hay cn gi semaphore (c hiu). Mt monitor l mt i tng m c kha c quyn. Ch mt lung c th c monitor ti mi thi im. Tt c cc lung khc c gng thm nhp vo monitor s b tr hon, cho n khi lung u tin thot khi monitor. Cc lung khc c bo ch i monitor. Mt lung c th monitor mt i tng nhiu ln. 4.5 Nhm thread

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 33

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Nhm tuyn l mt tp hp gm nhiu tuyn, khi ta tc ng n nhm tuyn ( chng hn nh tm ngng, ) th tt c cc tuyn trong nhm u nhn c cng tc ng , iu ny l tin li khi ta mun qun l nhiu tuyn thc hin cc tc v tng t nhau. to mt nhm tuyn ta cn: To ra mt nhm tuyn bng cch s dng phng thc to dng ca lp ThreadGroup() ThreadGroup g=new ThreadGroup(ThreadGroupName); ThreadGroup g= new ThreadGroup(ParentThreadGroup,ThreadGroupName); Dng lnh trn to ra mt nhm tuyn g c tn l ThreadGroupName, tn ca tuyn l mt chui v khng trng vi tn ca mt nhm khc. a cc tuyn vo nhm tuyn dng phng thc to dng ca lp Thread() : Thread =new Thread (g, new ThreadClass(),ThisThread); 4.6 Thit lp u tin trong thread Khi mt tuyn c to ra, n nhn mt u tin mc nh, i khi ta mun iu chnh u tin ca tuyn t c mc ch ca ta, tht n gin, t u tin cho mt tuyn ta ch cn gi hng thc setPriority() v truyn cho n mt s nguyn s ny chnh l u tin m bn cn t. Ta vit li v d trn nh sau: Thm vo phng thc main() 2 dng lnh: t.setPriority(1);//Tuyn ny c u tin l 1 t1.setPriority(10);// Tuyn ny c u tin l 1 Chy li chng trnh ny sau khi sa v trc khi sa ta thy tuyn t1 c cp thi gian s dng CPU nhiu hn tuyn t, l do l ta t u tin ca tuyn t1, ln hn u tin ca tuyn t Ch : 1) u tin ca mt tuyn biu th bi mt s nguyn nm trong on t 1 n 10, mt li s pht sinh nu ta gn cho n u tin, nm ngoi khong ny 2) Nu mt tuyn khng c t u tin th n s nhn u tin mc nh ( bng 5 ), ta c th kim tra iu ny bng cch gi phng thc getPriority() File, Stream, Serialiazation 5.1 Gii thiu Mt chng trnh thng xuyn lm vic vi d liu, c th lu tr lu di chng ta phi lu tr v nhn li d liu t thit b lu tr ngoi, ngun thng tin ngoi khng ch gm d liu c lu tr trn a t, a CD m n c th l d liu ca mt chng trnh khc, hoc c th l c lu tr trn mng d chng c lu tr u chng cng ch c 1 s dng nh: i tng, k t, hnh nh hoc m thanh, d d liu c lu tr di hnh thc no, lu tr u th java u tru tng ho thnh
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 34

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


cc lung, iu ny l rt tinh vi n lm cho ta khng cn phi quan tm d liu c lu tr u, di dng thc nh th no, n ng nht mi ngun d liu vi nhau: nhn v cc thng tin, mt chng trnh m mt lung lin kt vi i tng ngun( tp tin, b nh, Socket) v c cc thng tin tun t. Tng t ghi thng tin ra cc thit b ngoi bng cch m mt lung n i tng ch v ghi thng tin ra mt cch tun t nh

Lung l s tru tng ho mc cao, do vy bt k d liu c c vo t u hoc ghi ra u, th thut ton c/ghi tun t u ta nh sau: c vo open a stream while more information read information close the stream Ghi ra open a stream while more information write information close the stream 5.2 File v Stream Java a ra nhiu lp lung, x l mi loi d liu, java chia lung ra thanh 2 loi: lung byte ( byte stream) v lung k t (character stream), lp InputStream v OutputStream l hai lp c s cho mi lung nhp xut hng byte, v lp Reader/ Writer l hai lp c s cho vic c ghi hng k t. Lp RandomAccessFile k tha t lp Object v trin khai giao din, InputStream v OutputStream, y l lp duy nht h tr c c ln ghi. Lp nhp, xut hng k t Reader v Writer l hai lp c s tru tng cho lung hng k t, hai lp ny cung cp mt giao din chung cho tt c cc lp c/ ghi hng k t, mi ln c/ ghi ra lung l c 2 byte tng ng vi mt k t unicode, Sau y l m hnh phn cp cc lp c/ ghi hng k t

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 35

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

Stream hng byte: c th c ghi 1 byte, ta phi s dng lung hng byte, hai lp InputStream v OutputStream l hai lp c s tru tng cho cc lung hng byte, mi ln c/ ghi ra lung l c/ ghi 8 bit d liu ra lung, Hnh sau th hin mi quan h phn cp gia lp c/ ghi hng byte S tng t gia hai lung hng byte v hng k t Lp Reader v InputStream c mt giao din ging nhau, chng ch khc nhau v kiu d liu c vo, v d lp Reader c cc phng thc sau gip cho vic c mt k t hoc mt mng cc k t int read() int read(char cbuf[]) int read(char cbuf[], int offset, int length)

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 36

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

th trong lp InputStream cng c cc phng thc vi tn tng t cho vic c mt byte hoc mt mng cc byte int read() int read(byte cbuf[]) int read(byte cbuf[], int offset, int length) Cng tng t vy lp Writer v OutputStream cng c mt giao din tng t nhau, v d lp Writer nh ngha cc phng thc ghi mt k t, mt mng cc k t ra lung

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 37

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


int write(int c) int write(char cbuf[]) int write(char cbuf[], int offset, int length) th lp OutputStream cng c cc phng thc tng ng, ghi mt byte, mt mng byte ra lung int write(int c) int write(byte cbuf[]) int write(byte cbuf[], int offset, int length) X l tp tin x l tp tin ngoi tr, ta s dng cc lung lin quan n tp tin nh FileInputStream v FileOutputStream cho vic c ghi tp hng byte, FileReader v FileWriter cho vic c ghi hng k t, thng thng mun s dng lung tp tin ta s dng hm to ca cc lp tng ng lin kt lung vi mt tp tin c th. public void FileInputStream ( String FileName) public void FileInputStream ( File file) public void FileOutputStream ( String FileName) public void FileOutputStream (File file) public void FileWriter ( String FileName) public void FileWriter (File file) public void FileReader ( String FileName) public void FileReader (File file) Lung d liu c/ ghi cc kiu d liu nguyn thu, ta s dng lung DataInputStream v DataOutputStream, lp DataInputStream trin khai giao din DataInput, cn lp DataOutputStream trin khai giao din DataOuput Cc phng thc sau c nh ngha trong giao din DataOutput void write(byte[] b) Ghi mt mng byte ra lung void write(byte[] b, int off, int len) Ghi mt mng byte ra lung k t v tr off, len byte void write(int b) Ghi mt byte ra lung void writeBoolean(boolean v) Ghi mt gi tr logic ra lung void writeByte(int v) Ghi ra lung phn thp ca v void writeBytes(String s) Ghi mt xu ra lung void writeChar(int v) Ghi mt k t ra lung void writeChars(String s) Ghi mt xu k t ra lung void writeDouble(double v) Ghi mt s double ra lung void writeFloat(float v) Ghi mt s thc ra lung void writeInt(int v) Ghi mt s nguyn ra lung void writeLong(long v) Ghi mt s long ra lung void writeShort(int v) Ghi mt s short ra lung void writeUTF(String str) Chi mt xu k t Unicode ra lung Cc phng thc sau c nh ngha trong giao din DataInput:
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 38

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


boolean readBoolean() byte readByte() char readChar() double readDouble() float readFloat() void readFully(byte[] b) voidreadFully(byte[] b, int off, int len) int readInt() String readLine() long readLong() short readShort() int readUnsignedByte() in treadUnsignedShort() c String readUTF() int skipBytes(int n) 5.3 Lp File Lp File cung cp giao din chung x l h thng tp c lp vi mi trng ca cc my tnh. Mt ng dng c th s dng cc chc nng chnh ca File x l tp hoc cc th mc (directory) trong h thng tp. x l cc ni dung ca cc tp th s dng cc lp FileInputStream, FileOutputStream v RandomAccessFile. Lp File nh ngha cc thuc tnh ph thuc vo mi trng (platform) c s dng x l tp v tn gi cc ng dn trong cc th mc mt cch c lp vi mi trng. public static final char separatorChar public static final String separator nh ngha cc k hiu hoc cc xu s dng ngn cch cc thnh phn trong tn ca ng dn. K hiu / ngn cch cho Unix, \ c s dng ngn cch cc mc ca ng dn trong Window. V d: C:\book\Java l tn ng dn trong Window. public static final char pathSeparatorChar public static final String pathSeparator nh ngha cc k hiu hoc cc xu s dng ngn cch cc tp hoc tn th mc trong danh sch ca cc ng dn. K hiu ngn cch : cho Unix, ; c s dng phn cch cc ng dn trong Window. V d: C:\book; C:\Java; D:\Anh\ABC; A:\Docs l danh sch cc ng dn trong Window. File(String pathName)
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 39

c mt gi tr logic t lung c mt byte t lung c mt k t t lung c mt s double t lung c mt s float t lung c mt mng byte t lung v ghi vo mng c len byte t lung v ghi vo mng t v tr off c mt s nguyn c mt xu k t cho n khi gp k t xung dng v b qua k t xung dng c mt s long c mt s short c mt s nguyn khng du trong khong 0..255 mt s nguyn khng du trong on t 0..65535 c mt xu k t Unicode B qua n byte t lung

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Gn ng dn c tn pathName cho i tng ca lp File. pathName c th l ng dn tuyt i (c c tn a, tn ca tt c cc mc ln lt theo cy th mc) hoc ng dn tng i (bt u t th mc hin thi). V d: File ch1 = new File(File.separator + book + File.separator + chuong1); File(File direct, String filename) Gn tp c tn filename th mc direct cho i tng ca lp File. Nu direct l null th filename c x l th mc hin thi, ngc li tn ng dn s l i tng direct ghp vi separator v filename. V d: File mucNhap = new File(book + File.separator + duThao); File ch2 = new File(mucNhap, chuong1); Lp File c th s dng truy vn vo cc h thng tp bit c cc thng tin v tp v cc th mc. Lp File cung cp cc hm nhn c cc biu din ph thuc vo mi trng ca ng dn v cc thnh phn ca ng dn. String getName() Hm getName() cho li tn ca tp trong th mc ch nh. V d, tn ca C:\java\bin\javac l javac. String getPath() Hm getPath() cho li tn ca ng dn (tuyt i hoc tng i) cha tp ch nh. String getAbsolutePath() Hm getAbsolutePath() cho li tn ca ng dn tuyt i cha tp ch nh. long lastModified() Hm ny cho li thi gian dng s long ca ln sa i tp ln cui cng. long length() Hm ny cho li kch thc ca tp tnh theo byte. boolean equals(Object obj) Hm ny so snh tn cc ng dn ca cc i tng tp, cho kt qu true nu chng ng nht vi nhau. boolean isFile() Hai hm ny cho kt qu true nu tp tn ti trn ng dn hin thi. boolean isDirectory() Hm ny cho kt qu true nu th mc tn ti trn a hin thi. boolean createNewFile() throws IOException Mt tp mi l rng c to ra th mc hin thi ch khi tp ny cha c. boolean mkdirs() To ra cc ng dn c xc nh trong i tng ca File. boolean renameTo(File dest) Hm ny i tn tp hin thi thnh dest.
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 40

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


String[] list() Hm ny hin th danh sch cc tp th mc hin thi. boolean delete() Hm ny xo tp hin thi.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 41

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Networking 6.1 Gii thiu Lp java.net.InetAddress biu din mt a ch Internet. N bao gm hai trng thng tin: hostName (mt i tng kiu String) v address (mt s kiu int). Cc trng ny khng phi l trng public, v th ta khng th truy xt chng trc tip. Lp ny c s dng bi hu ht cc lp mng, bao gm Socket, ServerSocket, URL, DatagramSocket, DatagramPacket, 6.2 Lp trnh mng vi InetAddress, URL v URL connection 6.2.1 Lp InetAddress

a. To cc i tng InetAddress Lp InetAddress c s dng biu din cc a ch IP trong mt ng dng mng s dng Java. Khng ging vi cc lp khc, khng c cc constructor cho lp InetAddress. Tuy nhin, lp InetAddress c ba phng thc tnh tr v cc i tng InetAddress Cc phng thc trong lp InetAddress public static InetAddress InetAddress.getByName(String hostname) public static InetAddress[] InetAddress.getAllByName(String hostname) public static InetAddress InetAddress.getLocalHost() Tt c cc phng thc ny u thc hin kt ni ti server DNS cc b bit c cc thng tin trong i tng InetAddress b. Nhn cc trng thng tin ca mt i tng InetAddress Ch c cc lp trong gi java.net c quyn truy xut ti cc trng ca lp InetAddress. Cc lp trong gi ny c th c cc trng ca mt i tng InetAddress bng cch gi phng thc getHostname v getAddress(). public String getHostName(): Phng thc ny tr v mt xu biu din hostname ca mt i tng InetAddress. Nu my khng c hostname, th n s tr v a ch IP ca my ny di dng mt xu k t. public byte[] getAddress() : Nu bn mun bit a ch IP ca mt my, phng thc getAddress() tr v mt a ch IP di dng mt mng cc byte. Mt s a ch IP v mt s m hnh a ch c cc ngha c bit. V d, 127.0.0.1 l a ch loopback. Cc a ch IPv4 trong khong 224.0.0.0 ti 239.255.255.255 l cc a ch multicast. Java 1.5 thm vo hai phng thc cho lp InetAddress cho php cc ng dng kim tra liu mt nt c th c n c hay khng vi nt xut pht l nt hin hnh; ngha l kim tra xem mt lin kt mng c thit lp hay cha. Cc lin kt c th b phong ta v nhiu nguyn nhn nh firewall, cc server y quyn, cc router hot ng sai chc nng, dy cp b t, hoc host xa khng bt.
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 42

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


public boolean isReachable(int timeout) throws IOException public boolean isReachable(NetworkInterface interface, int ttl, int timeout) throws IOException Cc phng thc ny c gng kt ni trn cng echo trn host xa tm xem n c th n c hay khng. Nu host p ng trong khong thi gian timeout mili giy, cc phng thc ny tr v gi tr true nu n c, ngc li n tr v gi tr false. 6.2.2 Lp URL

Cch n gin nht mt chng trnh Java nh v v tm kim d liu l s dng mt i tng URL. Bn khng cn phi lo lng ti cc chi tit bn trong ca giao thc ang c s dng, khun dng d liu c nhn, hay lm th no truyn tin vi server; bn ch cn cho bit URL, Java s ly d liu v cho bn. Lp java.net.URL l mt khi nim v b nh v ti nguyn thng nht. Nu lu tr URL di dng mt i tng String s khng c li so vi vic t chc URL nh mt i tng vi cc trng : giao thc (protocol), hosname, cng (port), ng dn (path), tn tp tin (filename), mc ti liu (document section), mi trng c th c thit lp mt cch c lp. a. To cc URL C bn constructor, khc nhau v thng tin m n cn. Constructor m bn s dng ph thuc vo thng tin m bn c, v khun dng trong URL . Tt c cc constructor ny s a ra ngoi l MalformedURLException (URL khng ng khun dng) nu ta to ra mt URL cho mt giao thc m n khng c h tr.URL cung cp cc hm cu t sau: public URL(String url) throws MalformedURLException public URL(String protocol, String host, String file) throws MalformedURLException public URL(String protocol, String host, int port, String file) throws MalformedURLException public URL(URL u, String s) throws MalformedURLException b. Phn tch mt URL thnh cc thnh phn

C su trng thng tin trong lp URL: giao thc, port, file, mc tham chiu ti liu. public String getProtocol() public String getHost() public int getPort() trong URL. public int getDefaultPort() public String getFile() public String getRef() c. Tm kim d liu t mt URL
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 43

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Nu ch c URL thun ty th khng c g th v. iu th v l d liu nm trong cc tp tin m n tr ti. Lp java.net.URL c ba phng thc tm kim d liu t mt URL public final InputStream openStream() throws java.io.IOException public URLConnection openConnection() throws java.io.IOException public final Object getConetent() throws java.io.IOException d. Cc phng thc tin ch Lp URL cung cp hai phng thc tin ch thc hin cc thao tc trn URL. Phng thc sameFile() xc nh xem hai URL c cng tr ti mt ti liu hay khng. Phng thc toExternalForm() chuyn i mt i tng URL thnh mt xu k t c s dng trong mt lin kt HTML hoc hp thoi ca trnh duyt. public boolean sameFile(URL other) 6.2.3 Lp URL connection URLConnection l mt lp tru tng biu din mt lin kt tch cc ti mt ti nguyn c xc nh bi mt URL. Lp URLConnection c hai mc ch khc nhau nhng lin quan vi nhau. Th nht, n cung cp nhiu kh nng iu khin hn thng qua vic tng tc vi mt server ch khng phi lp URL. Vi URLConnection ta c th kim tra cc headerMIME c gi bi mt Http Server phn ng tng ng. Ta cng c th s dng lp URLConnection ti v cc tp nh phn. Ngoi ra URLConnection cho php bn gi d liu tr li Web server bng lnh POST. Th hai, URLConnection l mt phn ca c ch qun tr giao thc, c ch ny cn bao gm c lp URLStreamHandler. tng ng sau cc trnh qun tr giao thc rt n gin: chng cho php bn phn tch cc chi tit x l mt giao thc vi vic x l cc kiu d liu c th, cung cp cc giao din ngi dng, v thc hin cc cng vic khc m mt trnh duyt thng lm. Lp c s URLConnection l mt lp tru tng; ci t mt giao thc c th bn cn phi vit mt lp con. Cc lp con ny c th c ti bi cc ng dng ca ring bn hay bi cc trnh duyt HotJava; trong tng lai, cc ng dng Java c th ti v cc trnh qun tr giao thc khi cn. M cc URLConnection Mt chng trnh s dng lp URLConnection trc tip theo mt dy cc bc c bn sau: Xy dng mt i tng URL. Gi phng thc openConnection() ca i tng URL tm kim mt i tng URLConnection cho URL . Cu hnh i tng URL. c cc trng header. Nhn mt lung nhp v c d liu. Nhn mt lung xut v ghi d liu.
Trang 44

SVTH: Nguyn nh Lnh Lp : 10T1LT

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


ng lin kt. Mc d lp URLConnection l mt lp tru tng nhng n c mt phng thc c ci t. Phng thc l connect(); phng thc ny to mt lin kt ti mt server; v vy n ph thuc vo kiu dch v m ta ci t (HTTP, FTP,..). Tt nhin, ta c th cm thy tin li hay cn thit phi np chng cc phng thc ny trong lp. Rt nhiu cc phng thc v cc trng trong lp URLConnection c l phng thc protected. Mt khc ta ch c th truy cp ti chng thng qua cc th hin ca lp URLConnection hoc cc lp con ca n. Rt t khi chng ta khi to v truy cp trc tip cc i tng; thay vo , mi trng thi gian chy s to ra cc i tng khi cn ty thuc vo giao thc s dng. Sau lp s c khi to bng cch s dng cc phng thc forName() v newInstance() ca lp java.lang.Class. public abstract void connect() throws IOException c d liu t mt server Di y l cc bc ti thiu cn tm kim d liu t mt URL bng cch s dng i tng URLConnection: Bc 1: Xy dng mt i tng URL. Bc 2: Gi phng thc openConnection() ca lp URL tm kim mt i tng URL Connection cho i tng URL . Bc 3: Gi phng thc getInputStream(). Bc 4: c t lung nhp bng cch s dng API. public Object getContent() throws IOException public InputStream getInputStream() public OutputStream getOutputStream() 6.2.3.1 Phn tch Header HTTP Server cung cp mt s lng thng tin ng k trong cc header MIME trc mi p ng. Thng tin trong cc header MIME c th bao gm c ch m ha ni dung c s dng, ngy v gi, chiu di ca ni dung c tr v bng byte, ngy ht hn ca ni dung, ngy m ni dung c sa i ln cui. Tuy nhin, thng tin c gi ph thuc vo server; mt server no gi tt c cc thng tin ny cho mi yu cu, cc server khc gi cc thng tin no , v mt s t server khng gi thng tin no. Cc phng thc ca mc ny cho php ta truy vn mt URLConnection tm ra thng tin MIME no m server cung cp. public String getContentType() public int getContentLength() public String getContentEncoding() public long getDate() public long getExpiration() public long getLastModified()

6.2.3.2 Tm kim cc trng Header MIME Su phng thc cui cng i hi cc trng nht nh t header MIME, nhng khng c gii hn no v s cc trng header m mt thng ip MIME c th c. Nm phng thc tip theo kim tra cc trng nht nh trong header MIME. FileURLConnection khng c cc header MIME thc s , v vy tt c cc phng thc ny tr v gi tr null khi bn ang lm vic vi mt file: URL, hnh vi mc
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 45

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


nh ca chng. HttpURLConnections tm ra mt trng header tha mn yu cu ca bn. Nu c tm thy, n c tr v, ngc li n tr v gi tr null. public String getHeaderField(String name) public String getHeaderFieldKey(int n) public String getHeaderField(int n) public long getHeaderFieldDate(String name, long default)

6.2.3.3 Cc phng thc RequestProperty Bn phng thc sau khng thc hin bt k cng vic g trong lp c s URLConnection, cng khng c ci t trong cc lp FileURLConnection hoc HttpConnection. Bn c th mong mun np chng chng trong mt lp con ci t phng thc tra cu bng bm, chng hn xy dng mt bng bm cha tt c cc header MIME ca yu cu. public String getRequestProperty(String property_name) public static void setDefaultRequestProperty(String property_name, String property_value) public void setRequestProperty(String property_name, String property_value) public String getDefaultRequest(String property_name) protected URLConnection(URL u) 6.3 Thit lp kt ni n Server s dng Stream Socket

Lp ServerSocket c mi th ta cn vit cc server bng Java. N c cc constructor to cc i tng ServerSocket mi, cc phng thc lng nghe cc lin kt trn mt cng xc nh, v cc phng thc tr v mt Socket khi lin kt c thit lp, v vy ta c th gi v nhn d liu. Vng i ca mt server 1. Mt ServerSocket mi c to ra trn mt cng xc nh bng cch s dng mt constructor ServerSocket. 2. ServerSocket lng nghe lin kt n trn cng bng cch s dng phng thc accept(). Phng thc accept() phong ta cho ti khi mt client thc hin mt lin kt, phng thc accept() tr v mt i tng Socket m lin kt gia client v server. 3. Ty thuc vo kiu server, hoc phng thc getInputStream(), getOutputStream() hoc c hai c gi nhn cc lung vo ra truyn tin vi client. 4. server v client tng tc theo mt giao thc tha thun sn cho ti khi ngt lin kt. 5. Server, client hoc c hai ngt lin kt 6. Server tr v bc hai v i lin kt tip theo. 6.3.1 Cc constructor public ServerSocket(int port) throws IOException, BindException public ServerSocket(int port, int queuelength, InetAddress bindAddress)throws IOException 6.3.2 Chp nhn v ngt lin kt

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 46

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Mt i tng ServerSocket hot ng trong mt vng lp chp nhn cc lin kt. Mi ln lp n gi phng thc accept(). Phng thc ny tr v mt i tng Socket biu din lin kt gia client v server. Tng tc gi client v server c tin hnh thng qua socket ny. Khi giao tc hon thnh, server gi phng thc close() ca i tng socket. Nu client ngt lin kt trong khi server vn ang hot ng, cc lung vo ra kt ni server vi client s a ra ngoi l InterruptedException trong ln lp tip theo public Socket accept() throws IOException public void close() throws IOException Nu ta kt thc lm vic vi mt i tng server socket th cn phi ng li i tng ny 6.4 Thit lp kt ni n Client s dng Stream Socket 6.4.1 Cc constructor

public Socket(String host, int port) throws UnknownHostException, IOException Hm ny to mt socket TCP vi host v cng xc nh, v thc hin lin kt vi host xa public Socket(InetAddress host, int port)throws IOException public Socket (String host, int port, InetAddress interface, int localPort) throws IOException, UnknownHostException public Socket (InetAddress host, int port, InetAddress interface, int localPort) throws IOException, UnknownHostException Constructor ch khc constructor trn ch a ch ca host lc ny c biu din bi mt i tng InetAddress 6.4.2 Nhn cc thng tin v Socket i tng Socket c mt s trng thng tin ring m ta c th truy nhp ti chng thng qua cc phng thc tr v cc thng tin ny. public InetAddress getInetAddress() public int getPort() public int getLocalPort() public InetAddress getLocalAddress() public InputStream getInputStream() throws IOException public OutputStream getOutputStream() throws IOException 6.4.3 ng Socket n thi im ta c y cc thng tin cn thit trin khai mt ng dng pha client. Khi vit mt chng trnh ng dng pha client tt c mi cng vic u chuyn v vic qun l lung v chuyn i d liu t lung thnh dng thc m ngi s dng c th hiu c. Bn thn cc socket rt n gin bi v cc phn vic phc tp c che du i. y chnh l l do socket tr thnh mt la chn c tnh chin lc cho lp trnh mng public void close() throws IOException

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 47

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Mi khi mt Socket b ng li, ta vn c th truy xut ti cc trng thng tin InetAddress, a ch cc b, v s hiu cng cc b thng qua cc phong thc getInetAddress(), getPort(), getLocalHost(), v getLocalPort(). Tuy nhin khi ta gi cc phng thc getInputStream() hoc getOutputStream() c d liu t lung c InputStream hoc ghi d liu OuputStream th ngoi l IOException c a ra. Phng thc close() ng c cc lung nhp v lung xut t socket. Trong mt s trng hp ta ch mun ng mt na kt ni, hoc l lung nhp hoc l lung xut. Bt u t Java 1.3, cc phng thc shutdownInput() v shutdownOutput() cho php ta thc hin iu ny. public void shutdownInput() throws IOException public void shutdownOutput() throws IOException 6.4.4 Thit lp cc ty chn cho Socket

TCP_NODELAY public void setTcpNoDelay(boolean on) throws SocketException public boolean getTcpNoDelay() throws SocketException SO_LINGER public void setSoLinger(boolean on, int seconds) throws SocketException public int getSoLinger() throws SocketException SO_TIMEOUT public void setSoTimeout(int milliseconds) throws SocketException public int getSoTimeout() throws SocketException 6.4.5 Cc phng thc ca lp Object

Lp Socket np chng phng thc chun ca lp java.lang.Object, toString(). V cc socket l cc i tng tm thi v thng ch tn ti khi lin kt tn ti. public String toString() Phng thc toString() to ra mt xu k t nh sau: Socket[addr=www.oreilly.com/198.122.208.11,port=80,localport=50055] Phng thc ny thng hu ch cho vic g ri 6.4.6 Cc ngoi l Socket Hu ht cc phng thc ca lp Socket c khai bo a ra ngoi l IOException, hoc lp con ca lp IOExcepton l lp SocketException. 6.4.7 Cc lp SocketAddress Lp SocketAddress bt u c t phin bn Java 1.4, biu din mt u cui ca lin kt. Lp SocketAddress l mt lp tru tng m khng c phng thc no ngoi construtor mc nh. Lp ny c th c s dng cho c cc socket TCP v socket khng phi l TCP. Cc lp con ca lp SocketAddress cung cp thng tin chi tit hn thch hp cho kiu socket. Trong thc t, ch h tr TCP/IP.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 48

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Mc ch chnh ca lp SocketAddress l cung cp mt ni lu tr cc thng tin lin kt socket tm thi (nh a ch IP v s hiu cng) c th c s dng li to ra socket mi. public SocketAddress getRemoteSocketAddress() public SocketAddress getLocalSocketAddress() C hai phng thc ny tr v gi tr null nu socket vn cha kt ni ti. 6.5 Lp trnh vi giao thc UDP 6.5.1 Tng quan v giao thc UDP

Giao thc UDP l giao thc n gin, phi lin kt v cung cp dch v trn tng giao vn vi tc nhanh. N h tr lin kt mt-nhiu v thng c s dng thng xuyn trong lin kt mt-nhiu bng cch s dng cc datagram multicast v unicast. 6.5.2 LpDatagramPacket

Cc datagram UDP a rt t thng tin vo datagram IP. Header UDP ch a tm byte vo header IP. Header UDP bao gm s hiu cng ngun v ch, chiu di ca d liu v header UDP, tip n l mt checksum ty chn. V mi cng c biu din bng hai byte nn tng s cng UDP trn mt host s l 65536. Chiu di cng c biu din bng hai byte nn s byte trong datagram ti a s l 65536 tr i tm 8 byte dnh cho phn thng tin header. public final class DatagramPacket extends Object Lp ny cung cp cc phng thc nhn v thit lp cc a ch ngun, ch t header IP, nhn v thit lp cc thng tin v cng ngun v ch, nhn v thit lp di d liu. Cc trng thng tin cn li khng th truy nhp c t m Java thun t 6.5.3 DatagramSocket

gi hoc nhn mt DatagramPacket, bn phi m mt DatagramSocket. Trong Java, mt datagram socket c to ra v c truy xut thng qua i tng DatagramSocket public class DatagramSocket extends Object 6.5.4 c cc gi tin

Trc khi mt ng dng c th c cc gi tin UDP c gi bi cc my xa, n phi gn mt socket vi mt cng UDP bng cch s dng DatagramSocket, v to ra mt DatagramPacket s ng vai tr nh l mt b cha cho d liu ca gi tin UDP. Hnh v di y ch ra mi quan h gia mt gi tin UDP vi cc lp Java khc nhau c s dng x l n v cc ng dng thc t.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 49

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

6.5.5

Gi cc gi tin

Lp DatagramSocket cng c s dng gi cc gi tin. Khi gi gi tin, ng dng phi to ra mt DatagramPacket, thit lp a ch v thng tin cng, v ghi d liu cn truyn vo mng byte. Nu mun gi thng tin phc p th ta cng bit a ch v s hiu cng ca gi tin nhn c. Mi khi gi tin sn sng gi, ta s dng phng thc send() ca lp DatagramSocket gi gi tin i

Servlet 7.1 Gii thiu Servlet Java servlet l nhng chng trnh clpplatform v nh chy pha server clptrnh m rng chc nng ca web server(Web server phih tr Java). C ch hot ng theo m hnh CGI m rng. Chng trnh servlet: Thng extends class HttpServlet. Khng c method main. Phi cdch ra dng byte-code(.class) v khai bo vi web server. Cn c package servlet.jar bin dch (http://java.sun.com/products/servlet/) Cc server hinh tr Servlet: Apache Tomcat (http://jakarta.apache.org) Suns Java Web Server (http://wwws.sun.com/software/jwebserver/) New Atlantas ServletExec, tch hp ServletEngine vo cc web server(http://newatlanta.com) http://www.macromedia.com/software/jrun/trial/
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 50

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


7.2 Vng i Servlet

7.3 Lp trnh vi servlet API Java Servlet API gm: javax.servlet.* Cha cc class v interface clpvi HTTP javax.servlet.http.* Cha cc class c th cho HTTP Ttc sevlet uphihinthcgiaodin javax.servlet.Servlet. Tuy nhin do chng ta dng giao thc HTTP nn javax.servlet.http.HttpServlet l lp hin thc giao din Servlet, nn V vyta thng phi k tha t lp ny v override cc method doGet()/doPost(). 7.4 C ch hot ng ca Servlet Web server nhn yu cu triu gi servlet t client. Nu servlet chyln u, web server load file servlet tng ng, khi to cc thng s bng qua method init() Nu servlet ckhito, tomt thread x l yu cu. Gi methods doXxx() x l cc request tng ng theo giao thcHTTP: doGet cho HTTP GET, doPost cho HTTP POST 7.5 Cu trc n gin ca Servlet import java.io.*; import java.servlet.*; import java.servlet.http.*; public class Sample extends HttpServlet{ public doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 51

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


//dng itng request cd liut client //dng itng response xutd liu cho client PrintWriter out = response.getWriter(); //dng itng out ghi (method print) d liu cho client } } 7.6 Lp trnh web vi Servlet API cho HttpServletRequest 1. Object getAttribute(String name) 2. void setAttribute(String name, Object att ) 3. Enumeration getAttributeNames() 4. int getContentLength() 5. String getParameter(String name) 6. Enumeration getParameterNames() 7. Enumeration getParameterValues() 8. String getRemoteHost() 9. RequestDispatcher getRequestDispatcher( String path ) 10. boolean isSecure() 11. ServletInputStream getServletInputStream() 12. int getContentLength() Lyd liut web client gi nbng servlet Dng itng ca class HttpServletRequest Cc methods ly thng s: getParameter(para-name) getParameterValues(para-name) String username= request.getParameter(username); String[] choice = request.getParameterValues(comments); Dng itng ca class HttpServletRequest ly cc thng tin HTTP header V d: Request Parameter Ly cc thng s HTTP request header class HttpServletRequest cung cp cc method ly cc thng s request header. String getHeader(header-name): lyni dung ca header-name Enumeration getHeaderNames(): lyttc cc header-name. Mts method inhnh: z Cookie[] getCookies(): dy Cookie t client z int getContentLength(): tr gi tr Content-Length z int getContentType(): tr gi tr Content-Type z int getRemoteUser(): gi tr username nu c authenticate o V d: Request Header Lyccgitr cabinmitrng CGI: QUERY_STRING: getQueryString() REMOTE_ADDR: getRemoteAddr() REMOTE_HOST: getRemoteHost()
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 52

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


REQUEST_METHOD: getMethod() PATH_INFO: getPathInfo() SCRIPT_NAME: getServletPath() SERVER_NAME: getServerName() SERVER_PORT: getServerPort() HTTP_XXX_YYY: getHeader(Xxx-Yyy) o Vd : Request Info API cho HttpServletResponse 1. String getCharaterEncoding() 2. ServletOutputStream getOutputStream() 3. PrintWriter getWriter() 4. setContentLength( int len ) 5. setContentType( String type ) 6. setBufferSize( int len ) 7. int getBufferSize() 8. flushBuffer() Gid liu cho web client Dng itng caclass HttpServletResponse. To itng PrintWriter ghi d liugi PrintWriter out = response.getWriter(); X l cc m HTTP tr v vi cc method caclass HttpServletResponse: void setStatus(int statusCode): gi cc m response void sendError(int errorCode,String msg): gi m li theo giao thc HTTP v message void sendRedirect(String URL): chuyn nmt trang URL khc Cc m c th theo giao thc HTTP hoc dng cc hng s trong class HttpServletResponse. X l Cookie vi web browser Chcnng Cookie Kthp vi web browser lu cc thng s cnthit. Thng tin c th dng thitlp phin lm vic (session) trong cc ng dng thng mi int (ecommerce). Lutr username, password Thng tin customize web site cho user hay dng cho c ch personalization Ghi thng tin Cookie ln my client Thng tin ctruyn i trong field Set-Cookie HTTP header Dng method addCookie(Cookie cookie) ca class HttpServletResponse. Cc thuctnhquantrng trong class Cookie: Cookie name: setName(String name) getName() Cookie value: setValue(String value) getValue() Max Age: setMaxAge(int seconds) getMaxAge() V d: Cookie Lu thng tin v phin lm vic ca user class HttpSession. C th dng lu bt k i tng no. i tng ca class HttpSession c tr v t method getSession() ca class HttpServletRequest.
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 53

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Cc method thng s dng: Object getValue(String name) [2.2: getAttribute] void putValue(String name,Object object) [2.2: putAttribute] void removeValue(String name) [2.2: removeAttribute] String[] getValueNames() [Enumeration getAttributeNames()] String getId() void setMaxInactiveInterval(int seconds) V d: Session 7.7 Lp trnh web vi JSP 7.7.1 Gii thiu JSP

L mt trang HTML c xen cc onmJava. c web server bin dch thnh bytecode. C ch hot ng tng t nh Servlet. c to sn cc itng ca cc class HttpServletRequest v HttpServletResponse x l giao tipvi web client. 7.7.2 Lp trnh web vi JSP

Cc itng c xy dng sn request: itng class HttpServletRequest response: itng class HttpServletResponse out: itng class PrintWriter session: i tng class HttpSession to ra t method getSession() ca i tng request application: itng class ServletContext config: itng class ServletConfig Cc on m Java trong trang JSP c t trong tag <% . %> Gi tr biuthc: <%= biuthc%> Khai bo cc bin <%! [type variable;]+ %> Java code <% Java code %> Ch thch <%-- comments --%> Cc khai bo ch th (directive) <%@ page import=[package][,package]* %> <%@ page isThreadSafe={true|false} %> <%@ page session={true|false} %> <%@ include file=filename %> Struts 8.1 Gii thiu kin trc MVC M hnh Model-View-Controller chia cc components ca ng dng thnh 3 loi khc nhau l Model (mu), View (hin th), v Controller iu khin). Cc components ca m hnh MVC m
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 54

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


nhn mt trch nhim nht nh v mi components u c lp vi cc components khc. Vic thay i 1 components s khng nh hng hoc nh hng rt t n cc components khc .Nhim v ca cc components ny l:

Model (mu) : Model m nhn nhim v cung cp d liu t c s d liu v lu cc thng tin ni cha d liu. Tt c cac Business Logic u c thc thi Model. D liu c nhp vo bi ngi s dng qua View s c kim tra Model trc khi c lu vo c s d liu. Truy xut d liu,s hp l ca d liu v data saving logic l cc thnh phn ca Model. View (hin th) : View trnh by vic hin th ca ng dng v nhn trch nhim ly d liu t ngi s dng, gi cc yu cu n Controller ri sau nhn tr li t Controller v hin th kt qu n ngi s dng. HTML, JSPs, cc th vin Tag v cc file ngun l cc phn ca view component. Controller (iu khin) : Controller l trung gian gia Model v View. Controller c trch nhim nhn cc yu cu t Client. Khi m yu cu uc nhn t Client,Controller s thc thi business logic thch hp t Model v sau xut ra d liu cho user s dng View component. ActionServlet, Action, ActionForm v struts-config.xml l cc thnh phn ca Controller. 8.2 Khi nim Struts Struts l mt MVC Framework: Struts cung cp mt framework thng nht deploy cc ng dng Servlet v JSP s dng kin trc MVC. Struts l mt tp cc Utilities: Struts cung cp cc lp tin ch iu khin hu ht cc tc v trong vic pht trin cc ng dng Web. Struts l mt tp th vin cc th JSP ty chn (Custom JSP Tag): Struts cung cp cc th vin th ty chn cho vic th hin cc thuc tnh ca bean, qun l cc HTML forms, lp li cc kiu cu trc d liu, v a ra cc HTML c iu kin. 8.3 Kin trc Struts Mt hoc nhiu Action, mi action trong trang web s nh x chnh xc n mt thnh phn <action> c nh ngha trong file struts-config.xml. Action c triu gi bi ngi dng t mt trang HTML hoc JSP thng qua mt lin kt hay thng qua thuc tnh action trong th <form>.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 55

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Mt thnh phn <action> s nh ngha mt lp ActionForm, trong mt s trng hp, n s c s dng validate cc d liu trong form c submit bi ngi s dng. N cng nh ngha lp Action no s c s dng x l cc yu cu t pha ngi dng.

Mt lp ActionForm c th s dng mt hoc nhiu forward c nh ngha trong th <action> ni cho mt ActionServlet tr v cc response tng ng vi cc request ca ngi dng. Chng ta c th nh ngha nhiu forward trong th <action-mapping>. 8.4 Cc thnh phn chnh ca Struts ActionServlet: ng vai tr nh l mt controller trong m hnh MVC, hay ni cch khc ActionServlet l s thc thi controller ca Struts i vi m hnh MVC. ActionServlet ly v cc request t pha ngi dng v nh x chng n thnh phn <action> trong file struts-config.xml. Action: nh ngha mt tc v c th c gi bi ngi dng. N cng nh ngha lp s s l cc request t pha ngi dng v trang JSP s hin th kt qu v cho ngi s dng. Lp Action: cha ton b nhng s l cho cc yu cu ca ngi dng. ActionForm: i km vi th <action> trong file struts-config.xml, n qun l ton b cc d liu c submit ln t pha ngi dng v c th thc hin validate cc d liu . Trang JSP: c s dng tr v trang HTML th hin kt qu c s l cho ngi dng. 8.5 Cc file cu hnh cn thit xy dng ng dng Struts web.xml: file ny cha ton b cc cu hnh ca ActionServlet, cc s nh x ca cc yu cu t pha ngi dng n ActionServlet, v tt cc Struts Tag Library Definitions (TLDs). struts-config.xml: file ny cha tt c cc thng tin cu hnh cho mt ng dng xy dng da trn Struts. ApplicationResources.properties: file ny trung tm cha cc ni dung tnh c s dng trong ton b ng dng Struts. N cho php cc nh pht trin d dng thay i ni dung cc text v cc ni dung dng chung s dng trong ng dng. Cc th vin th Struts xy dng cc thnh phn trnh din trong mt ng dng:
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 56

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


+ <templete>: cung cp cho nh pht trin ng dng mt tp cc th JSP chia nh giao din ngi dng thnh cc thnh phn c th d dng tho rp. + <bean>: cung cp cho nh pht trin ng dng mt tp cc th JSP qun l u ra t mt JavaBean. +<logic>: c th c s dng ng dng cc iu kin logic trong mt trang JSP. + <html>: c th s dng to ra cc thnh phn form

III.

Chng trnh Demo


Thit k ng dng Struts 1.1 Thit k ng dng Login

ng dng Login l mt v d n gin ta c th nghin cu mt cch chung nht v framework Struts. Chng ta thit k mt cch chi tit to nn mt ng dng web da trn framework Struts: Thit k t nht mt thnh phn View Vi Controller, mt lp con ca lp Action cung cp cc hm x l cho ng dng Vi Controller, mt lp con ca lp ActionForm kt hp vi mi thnh phn View submits d liu i vi Model, t nht mt Javabean i din cho d liu c trnh by cho mi thnh phn View Vi cc file cu hnh, yu cu phi c cp nht 1.2 Yu cu ng dng Cc yu cu cho ng dng Login kh n gin: Khi login vo trang ng dng vi yu cu username v password Xc nh li username v password mt ln na vi kho lu tr username v password Nu user c chp nhn th ng dng hin th thng bo thnh cng Nu user khng ph hp th ng dng hin th nhc nh v yu cu xc nhn ln na 1.3 Cc thnh phn yu cu cho ng dng Khi phn tch cc yu cu cho ng dng phn trn, ta nhn thy rng cn hai thnh phn View. Mt trang hin th cc trng username v password , trang khc hin th user ng nhp thnh cng. i vi Controller, cn c mt lp Action x l yu cu t trang Log In v mt lp ActionForm nm d liu yu cu . Thnh phn Model, cn mt Javabean phc v nh l kho lu tr d liu. Javabean cha danh sch cc username v password kt hp vi nhau cho vic chng thc ngi dng v cc phng thc cn thit lm vic vi danh sch .
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 57

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Cui cng, to s lin kt gia cc thnh phn trn, ta cn cu hnh v thit lp trong cc file struts-config.xml v web.xml, y l hai file cu hnh chnh cho mi ng dng Struts. 1.4 To project trong Eclipse Khi to Eclipse To mt project, chn FileNewProject JavaProject Trong Project name, ta to tn project l Login . Mt nh, project to trong C:\eclipse\workspace folder. 1.5 Thit lp cc th mc cho ng dng By gi, ta to cu trc folder cho vic lu d tt c cc file ca ng dng. Cu trc folder ny rt quan trng trong mt ng dng Web container. Ta to cu trc th mc theo cc bc sau: To folder lu d cc file m ngun Java. Kch chut phi trn Login project, chn NewSource Folder. To tn folder l source trong Folder Name text box, kch Finish Tip tc, to folder mi vi tn WEB-INF. Folder ny s cha ng dng Web ca ta. Trong folder WEB-INF, to mi hai folder con l classes v lib.

1.6 Import cc file Struts Import tt c cc file th vin vo folder WEB-INF/lib Import cc file m t th th vin vo WEB-INF
SVTH: Nguyn nh Lnh Lp : 10T1LT Trang 58

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Ta thc hin theo cc bc sau import cc file trn: Kch phi vo WEB-INF/lib v chn Import Fils System Chn tt c cc file .jar trong folder jakarta-struts-2.3.1/contrib/struts-el/lib Finish 1.7 Cu hnh Eclipse s dng cc file th vin Chng ta import cc file .jar vo Eclipse, ta s bo cho Eclipse bit cch tm chng khi bin dch, cc bc thc hin nh sau: Kch phi trn Login project, chn Properties chn Java Build Path. Chn tab Libraries trn hp Diaglog kch nt Add jar Tm n folder Login/WEB-INF/lib, chn tt c file .jar Open Tip tc kch nt Add External JARs chn servlet.jar trong folder: Tomcat-4.1/common/lib Open Kch OK ng hp thoi Prorperties.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 59

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Trin khai ng dng
2.1 To cc trang JSP

Ta xc nh c ng dng c hai file JSP trong thnh phn View, c biu din nh sau: Trong folder Login/WEB-INF , to file jsp mi vi tn login.jsp. Trang login.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- JSTL tag libs --%> <%@ taglib prefix="fmt" uri="/WEB-INF/fmt.tld" %> <%-- Struts provided Taglibs --%> <%@ taglib prefix="html" uri="/WEB-INF/struts-html-el.tld" %> <html:html locale="true"/> <head> <fmt:setBundle basename="ApplicationResources" /> <title><fmt:message key="login.title"/></title> </head> <body> <html:errors property="login"/> <html:form action="login.do" focus="userName"> <table align="center"> <tr align="center"> <td><H1><fmt:message key="login.message"/></H1></td> </tr> <tr align="center"> <td> <table align="center"> <tr> <td align="right"> <fmt:message key="login.username"/> </td> <td align="left"> <html:text property="userName" size="15" maxlength="15" /> <html:errors property="userName" /> </td> </tr> <tr> <td align="right"> <fmt:message key="login.password"/> </td> <td align="left"> <html:password property="password" size="15" maxlength="15" redisplay="false"/> <html:errors property="password" /> </td> </tr> <tr> <td colspan="2" align="center"> <html:submit> <fmt:message key="login.button.signon"/> </html:submit> </td> </tr> </table> </td> </tr> </table> </html:form> </body> </html>

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 60

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


Trang login.jsp s dng hai th vin. Th nht l th JSTL ftm nh dng v cung cp thng tin v message. Th hai l th th vin Struts, struts-html-el. Error message c to ra trong Controller v c hin th thch hp. Tip tc to trang loggedin.jsp, trang ny dng kim tra tnh hp l ca username v password. Loggedin.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- JSTL tag libs --%> <%@ taglib prefix="fmt" uri="/WEB-INF/fmt.tld" %> <%-- Struts provided Taglibs --%> <%@ taglib uri="/WEB-INF/struts-html-el.tld" prefix="html" %> <html:html locale="true"/> <head> <fmt:setBundle basename="ApplicationResources" /> <title><fmt:message key="loggedin.title"/></title> </head> <body> <H2> <fmt:message key="loggedin.msg"> <fmt:param value='${requestScope.userName}' /> </fmt:message> </H2> </body> </html>

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 61

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


To file ApplicationResources.properties trong folder source. ApplicationResources.properties:
# Resources for Login Project # Struts Validator Error Messages # These two resources are used by Struts HTML tag library # to format messages. In this case we make sure that errors # are red so that they can be noticed. errors.header=<font color="red">* errors.footer=</font> #errors associated with the Login page error.username.required=username is required. error.password.required=password is required. error.login.invalid=The system could not verify your username or password. Is your CAPS LOCK on? Please try again. #login page text login.title=Login Project - Log In, Please login.message=Please Log In! login.username=username: login.password=password: login.button.signon=Log In #loggedin page text loggedin.title=Login Project loggedin.msg=Welcome, {0}. You are now logged in.

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 62

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

2.2 To cc formbean

Class ActionForm l mt phn ca Struts Controller, n c kt hp vi mt hoc nhiu Views. Mc ch chnh ca ActionForm l nm gi cc thuc tnh form c submit. V th, n c nhng thuc tnh ca JavaBean nn c gi l formbean. Chng ta cn tham chiu n mi thuc tnh form trong lp con ca ActionForm. Class LoginForm.java:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception { // create a new LoginBean with valid users in it LoginBean lb = new LoginBean(); // check to see if this user/password combination are valid if(lb.validateUser(((LoginForm)form).getUserName(),((LoginForm)form).getPassword())) { request.setAttribute("userName",((LoginForm)form).getUserName()); return (mapping.findForward("success")); } else // username/password not validated { // create ActionError and save in the request ActionErrors errors = new ActionErrors(); ActionError error = new ActionError("error.login.invalid"); errors.add("login",error); saveErrors(request,errors); return (mapping.findForward("failure")); } } }

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 63

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


2.3 To Javabean

JavaBean i din cho nhm Model v lu gi d lin v username v password. Class LoginBean:
package dummies.struts; import java.util.HashMap; public class LoginBean { private HashMap validUsers = new HashMap(); public LoginBean() { validUsers.put("Twinkle Toes","tt"); validUsers.put("administrator","admin"); validUsers.put("Barbara Smith","smitty"); validUsers.put("linh","nguyen"); } public boolean validateUser(String userName, String password) { if(validUsers.containsKey(userName)) { String thePassword = (String)validUsers.get(userName); if(thePassword.equals(password)) return true; } return false; } }

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 64

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


2.4 To action

Class Acction trong ng dng ny l class LoginAction, c dng x l yu cu ngi dng. Class LoginAcion.java:
package dummies.struts;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { public ActionForward execute( ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response)throws Exception { // create a new LoginBean with valid users in it LoginBean lb = new LoginBean(); // check to see if this user/password combination are valid if(lb.validateUser(((LoginForm)form).getUserName(),((LoginForm)form).getPassword())) { request.setAttribute("userName",((LoginForm)form).getUserName()); return (mapping.findForward("success")); } else // username/password not validated { // create ActionError and save in the request ActionErrors errors = new ActionErrors(); ActionError error = new ActionError("error.login.invalid"); errors.add("login",error); saveErrors(request,errors); return (mapping.findForward("failure")); } } }

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 65

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


2.5 Cu hnh Struts

chy c ng dng, ta cn cu hnh Web container v Struts. Thng qua vic ny, cc thnh phn ca chng ta s gn kt li vi nhau. Trc tin, ta cu hnh Web container n thy c ng dng ca chng ta. nh ngha file web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <!-- Action Servlet Configuration --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- The Welcome File List --> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <!-- JSTL Tag Library Descriptor --> <taglib> <taglib-uri>/WEB-INF/c.tld</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/fmt.tld</taglib-uri> <taglib-location>/WEB-INF/fmt.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/sql.tld</taglib-uri> <taglib-location>/WEB-INF/sql.tld</taglib-location> </taglib> <taglib>

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 66

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


<taglib-uri>/WEB-INF/x.tld</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> <!-- Struts Tag Library Descriptors --> <taglib> <taglib-uri>/WEB-INF/struts-bean-el.tld</taglib-uri> <taglib-location>/WEB-INF/struts-bean-el.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-html-el.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html-el.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-logic-el.tld</taglib-uri> <taglib-location>/WEB-INF/struts-logic-el.tld</taglib-location> </taglib> </web-app>

cu hnh Struts vi file struts-config.xml. File struts-config.xml s gn kt Views, Forms v Action ca ta li vi nhau. struts-config.xml
Tip theo <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <!-- This is the Struts configuration file for the Login example application -->

<struts-config> <!-- ========== Form Bean Definitions =================================== --> <form-beans> <form-bean name="loginForm" type="dummies.struts.LoginForm"/></form-beans> <!-- ========== Action Mapping Definitions ============================== --> <action-mappings> <action path="/login" type="dummies.struts.LoginAction" name="loginForm" scope="request" input="/login.jsp" validate="true"> <forward name="failure" path="/login.jsp"/> <forward name="success" path="/loggedin.jsp"/> </action> </action-mappings> <!-- ========== Message Resources Definitions =========================== --> <message-resources null="false" parameter="ApplicationResources"/> </struts-config>

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 67

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework


2.6 Chy ng dng

chy ng dng, ta cn thm vi bc na, ta cn copy vi file v folder vo folder webapps trong folder ng dng Tomcat. Thc hin theo cc bc nh sau: Trong folder webapps ca Tomcat, to folder Login, cha cc file ng dng ca ta. Copy hai file jsp v folder WEB-INF trong folder workspace ca ng dng Eclipse vo folder Login ta to bc trn. Nh vy, ta trin khai xong ng dng Login. chy c ng dng, cn phi khi ng Tomcat, sau vo trnh duyt web g theo a ch : http://localhost:8080/Login/login.jsp. Sau y l vi hnh nh minh ha cho ng dng Login ca chng ta

Login thnh cng

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 68

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

TI LIU THAM KHO


[1] Mike Robinson, Allen Finkelstein, Jakarta Struts For Dummies. Wiley Publishing, Inc 2004 [2] Paul and Harvey Deitel. JAVA FOR PROGRAMMERSSECOND EDITION. Pearson Education. [3] Ted Husted, Cedric Dumoulin, George Franciscus, David Winterfeldt. Struts in Actio.Manning Publications 2003. [4] Trang web : http://struts.apache.org/. [5] ...

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 69

ti: Nghin cu cng ngh Java & Tm hiu Struts Framework

NHN XT CA GIO VIN HNG DN

.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..

SVTH: Nguyn nh Lnh Lp : 10T1LT

Trang 70

You might also like