Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 35

Bn hng dn s dng Framework

1.Quy trnh hot ng


Vi Framework cc ng dng Eb c thit k theo m hnh Moldel_View_Controller
(MVC) c m t nh sau:

User

POST
Form(jsp)

(2)
FBean

(1)

Action Form
(9)

(10a)

(3)

(8)

Request
(11)
Out

(10b)

Business Object
(BO)
FBeans

Layout

(4)

(7)

Data Access Object


(DAO)
(5)

(6)

Database

Moldel: (Bussiness object, Data Access object v FormBean): M hnh d liu kt ni ti


CSDL.

View: (Form(*.jsp) v Layout): Thnh phn giao din ca ng dng. S dng cc trang
jsp hin th v tng tc vi ngui s dng.
Controller: (Action Form, mapping-config.xml): Phn iu khin cu trc hot ng ca
ng dng l cc yu cu, d liu c a vo (qua phng thc POST), sau c
x l v tr v cc kt qu qua thnh phn View.

2.M t hot ng ca Framework


Bc 1: Khi ngi s dng tng tc vi h thng thng qua Form GET hoc POST
d liu, FBean c nhim v a d liu thng qua phng thc setXxx() trong cc i tng
(F*.java k tha t FSeed) vo ActionForm.
Ch : Vic s dng i tng F*.java no tip nhn thng tin l do cu hnh trong file
mapping-cnig.xml
VD:<form-bean name=login type=com.form.login.FloginSystem/>
Bc 2:Lp Action (A*.java) s tip nhn cc yu cu t FBean (tn FBean c th trong
thuc tnh name ca action, y cng l tn form trn trang *.jsp) gi ti, chng thc hin x l
v gi d liu ti Business Object (BO).
Ch : Vic s dng i tng A*.java no iu hng v x l do cu hnh trong file
mapping-cnig.xml.
VD:<action name=login path=/sigin type=com.action.login.ASignin validate=false>
<forward name=_SUCCESS path=/index.jsp/>
</action>
Bc 3: lp Business object (B*.java) ny s to ra i tng DBconnector nhm kim
sot cc giao dch v thc hin iu khin qu trnh kt ni vi lp DAO(Data Access Object).
Bc 4: lp data Access Object (D*.java) c nhim v truy cp vo CSDL ca ng dng
thc hin cc thao tc trn d liu thng qua lp vic gi cc lnh truy vn SQL c trin
khai ti DSql.java
Bc 5,6: cc thao trn d liu do DAO thc thi s c h qun tr c s d liu thc
hin v tr v kt qur tng ng.
Bc 7: lp DAO nhn c kt qu t h qun tr c s d liu s thc hin thng bo
cho lp BO bit kt qu. C th nhng kt qu thu c s c lu gi trong cc lp
FBean(truongf hp cho mt gi tr), v lu gi trong FBeans nu cn lu gi nhiu gi tr.
Bc 8: Lp BO c th iu khin lp DAO nn sau khi nhn c kt qu t DAO tr
v s c x l trc khi kt thc giao dch v chuyn hot ng ti Action.
Bc 9: Action s n kt qu t BO v ra quyt nh thnh cng hay tht bi ca tng
tc thng qua cc hng s iu hng do bin target x l.
Bc 10: Cc kt qu do BO tr v cho Action (bao gm cc FBean v FBeans) s c
lu trong request (bao gm c cc thng bo li)
Bc 11: Cc trang jsp thc hin tm kim cc thng s hin c trong request v hin th
ra theo cu trc HTML sau a ra kt qu tng tc vi ngi s dng.

Action

BO

DAO

DAO

Ch : Quy tc gi cc lp nh sau:
- Lp Action c php gi ti nhiu lp BO
- Lp BO c php gi ti nhiu lp DAO
- Lp DAO c php gi ti cc lp DAO khc
2.1 Cu trc ca m hnh Framework

BO

DAO

DAO

Ch : Cc file *.java,*.propeties c t ti Application Sources, cc file *.jsp, *.js,


*.css, *.xml c t ti Web Content, cc file to b ci t, trin khai ti Resource.
2.2. Thnh phn Application Sources
2.2.1.Form h thng
STT
1

Tn
FBean

FBeans

Nhim v
- Ly d liu mt i tng
- t d liu ln jsp
- Ly nhiu d liu
- t d liu ln jsp

Quy c
Cc file to ra k tha t FSeed v c
t tn di dng F*.java
Lun tn ti trong h thng t
com.form.FBeans

2.2.2. Action
To ra lp A*.java k tha t lp ACore.java, thc hin n nhn d liu ca Form, cha cac
phng thc iu hng, iu khin lp BO v nhn kt qu d liu t v t lp BO. Khung m
ngun nh sau:
Public class AClasName extends ACore
{
public ActionForward excuteAction(ActionMapping mapping, ActionForm form.
HttpServletResquest request, HttpServletResponse response) throws
Eception,IOException,SvletException,SQLException
{
-Nhn tham s t form
VD: F* bean = (F*)form;
-Kim tra tnh ng n ca d liu v thao tc
VD: errors = validateForm(bean);
-Truy vn BO (l cch gi cc lp B*)
VD: B* bo= new B*();
- A* tr li thng tin cn thit cho jsp
VD: request.setAttribute(bo,bo);
- nh hosng lung trn mapping-cnig.xml
VD: return mapping.findForward(target);
}
}
Thng thng vic kim ta tnh ng n ca cc thao tc v d liu do ngi s dng to ra s
c thc hin trn Action (nn hn ch kim tra client qua javascript(). Phng php thc hin
kim tra thng qua hm sau:
Private ActionErrors validateForm(F* bean)
{
Sttring anchor = bean.getValue(APP_ANCHOR,);
If(anchor.equals(Hng s iu hng 1)){
Kim tra;
Thng bo li
}else if(anchor.equals(Hng s iu hng 1)){
Kim tra;
Thng bo li
}
}
VD:
Private ActionErrors validateForm(FEmpDecides bean)
ActionErrors errors = new ActionErrors();

If(anchor.equals(_CREATE)){
If((bean.getateSign()==null)||(bean.getDateSign().equals())){
Errors.add(StudentErrors,
newActionError(errors.student.datesign));}}
Return errors;
}
M t: Nu d liu ngy k(getDateSign) t FEmpDecides m cha c nhp th a ra
thng bo thiu: errors.student.datesign, ni dung ca thng bo c lu tr ti
Application_vn_VN.properties phn com.res.
2.2.2.1 Ni dung cc thnh phn trong action
(xem trong file ACore)
1. Users: dung lu gi cc thng tin ton b ngi ang s dng ang lm vic vi ng
dng.
2. me: Thng tin ti kho ca ngi s dng ang online.
3. seed: ung nhn d liu t F* trong bao gm request v response.
2.2.2.2 Mt s hng s iu hng
1. APP _ANCHOR: l hng s nh hng c s dng nhn cc gi tr anchor t jsp.
Public static final String APP _ANCHOR;
2._HOME: dung khi mun quay v trang ch
Public static final String _HOME;
3. _LOGIN: dng khi login
Public static final String _LOGIN;
4. _LOGOUT: dung khi Logout
Public static final String _LOGOUT;
5.Cc hng s nh hng to d liu (CREAT)
public static final String _CREAT;
// Dng khi chun b to d liu
public static final String _PREPARE_CREAT;
// Dng khi to mi d liu thnh cng
public static final String _CREAT_SUCCESS;
// Dng khi to d liu nhng gp li
public static final String _CREAT_FALSE;
6. Cc hng s nh hng sa d liu (EDIT)
public static final String _EDIT;
// Chun b sa
public static final String _PREPARE_EDIT;
// Sa thnh cng
public static final String _EDIT_SUCCESS;
// Sa gp li
public static final String _EDIT_FALSE;
7.Cc hng s nh hng xa d liu (DELETE)
public static final String _DELETE;
// Chun b xa
public static final String _PREPARE_DELETE;
// Xa thnh cng
public static final String _DELETE_SUCCESS;
// Xa gp li

public static final String _DELETE_FALSE;


(Xem ton b cc hng s nh hng ti ICoreAction)
Tt c cc bin trn s c mapping-cnig iu khin theo m sau:
Target= hng s nh hng;
Return mapping.findForward(target);
2.2.3. BO
Cc lp B*.java cha cc phng thc kt ni n lp DAO v nhn v cc kt qu t
lp DAO thng qua tham s seed thuc i tng FSeed. Khung m ngun nh sau:
Public class BClassname
{
Public [kiu tr v] tn hm(FSeed seed) throws EException
{
-Khi ng kt ni(VD: Connnection cnn=null;)
- Gi lp D*(VD: D* dao=null;)
- Xc lp bin tr v (VD: FBeans beans=null;)
-Nhn cc tham s t F*, do A* truyenf vo (VD: F* bean=(F*)seed;)
Try{
-To kt ni CSDL
VD:Connection cnn= DBConnector.getConnection();
- Truy cp DAO, thng qu cc hm m ta lp trnh trong
- VD: beans=dao.gtmpDecidesAllEmployeeId(cnn,bean);}
Catch (Eception ex){
Dng bt li, khi phuc trng thi ban u
VD: DBConnector.rollBackTransaction(cnn);
If(AppConfigs.APP_DEBUG) throw new Eception(LOCATION,sqle);
}
Finally{
ng kt ni nu hon thnh cng vic
VD: DBConnector.closeConnection(cnn);}
-Tr kt qu v cho Action (VD: return beans;)
}
- Kiu tr v c th l FBean,FBeans.F*,booleanKiu tr v c th l khng kiu: void.
- Tn hm l do chng ta t t sao cho hp l vi ni dung tr v. (VD bn mun ly thng
tin ca nhiu sinh vin trong 1 lp th tn hm l getAllStudents, kiu tr v phi l FBeans;
cn nu mun ly thng tin ca 1 SV th tn hm c th l getStudent, hm tr v s l
FStudent)
Lu : Cch th v bt li trn cc hm nh sau:
Th li: Ch th li Eception thng qua hai khai bo sau
+ public [kiu tr v] tn hm(FSeed seed) throws Eception
+throw new Eception(LOCATION,sqle);
Bt li: Bt li ty vo hm th ra li no m ta s bt li thng qua phng thc
trycatch. (Bt li cng c dung lp DAO)
Try{
Cc lnh thc thi vi trng hp ng, nu sai th tr v catch}
Catch(SQLException ex){
// bt li SQLException,., bt li no th t ti ay

Hm x l li;
Throw new Eception(LOCATION,sqle);// Th li khi cn}
Kim tra v x l li: hn ch li c th xy ra th chng ta cn phi lm cc hm kim
tra li lp A* (Xem li lp A* c hng dn cch kim tra li)
Ni dung ca hm trong BO
1. DBConnector.starttransaction(conn)
Hm ny s gip khi ng cc phin lm vic voeis CSDL, bt u nhn c cc kt ni,
sp xp th t lm vic v nh hng n ni cn ly d liu thng qua cc yu caauf.
2. DBConnector.getConnection()
Hm ny gipkhowir ng cc kt ni n c s d liu, ch i cc thng tin a vo. Nu kt
ni n nhiu CSDL, sau lnh ny th cc kt qu ca cc cu lnh mi c thc hin v tc
ng vo CSDL mc nh ca h thng.
3. DBConnector.endTransaction(conn)
Hm ny s xc nhn ton b cc giao dch din ra trong DAO sau dng cc phin lm
vic vi CSDL, sau lnh ny th cc kt qu ca cc cu lnh mi c thc hin v tc ng
vo CSDL.
4. DBConnector.rollBackTransaction(conn)
Ngt kt ni vi CSDL, cc kt ni ny c th tn ti trong b nh ty thuc tham s
DTBASE.CONNECTION.TIMEOUT trong com.r.Cnigs.properties
2.2.4. DAO
To ra lp D*.java k tha t lp DSql cha cc phng thc tc ng n CSDL thng
qua vic gi cc truy vn SQL t trong DSql. Khung m chng trnh nh sau:
Public class Dample extends DSql
{
Public [kiu tr v] tn hm (Connection cnn,FSeed seed) throws Eexception{
- Xc lp cc thng s cho data base
VD: PreparedStatement prpstm = null;
RultSet rs = null;
- Nhn tham s t seed F* bean= (F*)seed;
- - Xc lp bin tr v (VD: FBeans beans = null;)
Try{
- Truy cp CSDL thng qua vic gi cc cu SQL
VD: prpstm=cnn.prepareStatement(SQL_GET_EMPECIDES_BY_EMDECIDES_ID);
- Ly thng tin cn thit cho vic thc thi cu lnh SQL
VD: prpstm.setInt(PARAM_01,bean.gtmployee_Id());
Prpstm.sttring(PM_02,bean.getCode());
- Thc thi lnh
VD: rs= prpstm.cuteQuery();}
Catch (Eception ex){
Dng bt li nu kt ni c vn }
Finally{
ng kt ni nu hon thnh cng vic
VD: closeResultSet(rs);
closePreparedStatement(prpstm);}
- Tr kt qu v cho BO(VD: return beans;)}
Ch :
- Kiu tr v ging nh B*.java
- tn hm tr v ging nh B*.java
2.2.4.1. Ni dung ca cc hm s dng trong DAO:

- prpstm=cnn.prepareStatement(SQL)
Hm ny ly cu lnh SQL t DSql.java trong DAO
- prpstm,setXxxx(PARAM_XX,bean.getXxxxxxx())
Lnh ny gn thng tin cho Qution. C th c nhiu PM, s lng PARAM s bng s
lng QUSTION trong cu lnh SQL.
- rs= prpstm.excecuteQuery()
Hm ny thc thi cu lnh SQL v ly ra thng tin tr v cho rs.
- closeResultSet(rs):
Sau khi cc thng tin cn thit c ly ra th ngt rs gii phng b nh cho h thng
- closePreparedStatement(prpstm):
Dng hy cu lnh SQL khi b nh ca h thng.
2.2.4.2. Lp DSql.java
y l lp rt quan trng, c dung tp hp cc cu lnh SQL truy cp vo CSDL.
Mt s hm, hng s c tha k t DCore.java c th ng dng trong DSql nh sau:
STT
1

Tn hm
Hm PARAMS(s lng tham s s
truyn vo)
Thng c dng vi lnh NERT,
ch nh n tp hp cc trng trong
c s d liu m ta mun sa d liu
Hm FIELDS(tn tp hp cc trng,
true(false))
Thng c dung vi lnh
NERT_INTO, ch nh n tp hp
cc trng trong c s d liu m ta
mun thm mi d liu. Gi tr mc
nh l false khi ta gi FIELDS(tn tp
hp cc trng)

Hm FIELDS(tn bng,tn tp hp cc
trng, true(false))
Thng c dung vi lnh
NERT_INTO hoc SELECT, ch
nh n tp hp cc trng trong c s
d liu m ta mun thm mi d liu.
Gi tr mc nh l false khi ta gi
FIELDS(tn tp hp cc trng)

Hm SETS(Tn tp hp cc trng,
true(false))
Thng c dng vi lnh UPDATE,
ch nh n tp hp cc trng
trong c s d liu m ta mun sa d
liu. Gi tr mc nh l false khi ta gi
SETS(Tn tp hp cc trng)

Cch s dng
Tham s Tn tp hp cc trng s c
nh ngha trong lp IField.java vi cu trc:
PARAMS(4)=(?,?,?,?)
Tham s Tn tp hp cc trng s c
nh ngha trong lp IFeld.java vi cu trc:
-public final String[] TN
BNG_ALL_FIELDS={trng 1, trng 2, .
. .};
- Tham s true hoc false:
+nu dng l true th chng trnh s t ng
thm () -> (trng 1, trng 2, )
+ nu dung l false th gi nguyn ->trng
1, trng 2,
Tham s Tn tp hp cc trng s c
nh ngha trong lp IFeld.java vi cu trc:
-public final String[] TN
BNG_ALL_FIELDS={trng 1, trng 2, .
. .};
- Tham s true hoc false:
+nu dng l true th chng trnh s t ng
thm () -> (tn bng.trng 1, tn
bng.trng 2, )
+ Nu dng l false th gi nguyn ->tn
bng.trng 1, tn bng.trng 2,
Tham s Tn tp hp cc trng s c
nh ngha trong lp IFeld.java vi cu trc:
-public final String[] TN
BNG_ALL_FIELDS={trng 1, trng 2, .
. .};
- Tham s true hoc false:
+nu dng l true th chng trnh s t ng
thm () -> (trng 1=?, trng 2=?. )

6
7

Hng s PARAM_XX: (XX l cc


s:01,02,,40)
Thng c s dng ch nh v tr
tham s cn mang gi tr khi thc thi
cu truy vn SQL
Hm VALUES(S lng tham s)
Thng s dng cho cc cu lnh
NERT
Hm delete(kt ni, tn bng, iu kin
xa)

+ Nu dng l false th gi nguyn ->trng


1 =?, trng 2=?,
Ta c PM_XX=XX

VALUES(4)=VALUES(?,?,?,?)
c s dng khi cn xa d liu trn bng
vi iu kin tng ng

VD: Cu lnh SQL ban u nh sau:


Public final String
SQL_XXX_ADD_NEW=NERT_INTO+TABLE_XXX+FIELDS(XXX_ALL_FIELD,true)
+VALUES + OPEN +QUESTION +COMMA +QUESTION +COMMA+ QUESTION
+COMMA + QUESTION +COMMA + QUESTION + CLOSE;
Cu lnh SQL rt gn nh sau
Public final String SQL_XXX_ADD_NEW = NERT_INTO + TABLE_XXX +
FIELDS(XXX_ALL_FIELDS,true) + VALUES(XXX_ALL_FIELDS,length);
2.2.5. FORM
To ra lp F*.java k tha t lp FSeed cha cc phng thc ly d liu (phng thc
getXxx()) v a d liu vo (phng thc setXxx()). Khung m chng trnh nh sau:
Public class FClassName extends FSeed
{
Public [kiu d liu] getXxx()
{}
Public [kiu d liu] setXxx()
{}
}
Ch : Cc bin trong F* ch nn c 2 kiu l String v int.
Mt s hm s dng cho F*
STT
Tn hm
S dng
1
Public String getValue(String p1){}
P1: tn bin c trong form cn ly d
liu.
Tr v String l gi tr ca bin p1.
2
Public String[] getValue(String p1){}
P1: tn bin c trong form cn ly d
liu.
Tr v l mng gi tr lu tr trong
bin p1.
3
Public String getValue(String p1, String default) Ly gi tr t chui a vo, nu
{}
khng tn ti bin p1 trn form th
ly gi tr default
4
Public int stringToInt(String p1, String default)
Chuyn tham s dng String sang
{}
kiu s dng int, nu chui a ra
khng hp l th ly gi tr default
5
Public int stringToInt(String p1){}
Chuyn tham s dng String sang
kiu s dng int

Public long stringToLong(String p1, long p2) {}

Public int stringToLong(String p1){}

Public int stringToFloat(String p1){}

Public long stringToFloat(String p1, lfloat p2)


{}

10

Public long stringToDouble(String p1, double


p2){}

11
12

Public long upload(FormFile upFile, Stringpath)


{}
Public boolean isDate(String p1){}

13

Public int countElementsDate(String p1){}

14

Public long download(String filename,String


dowloadName,String contentType){}

15
16

Public Boolean deleteFile(String path){}


Public Boolean renameFile(String
oldName,String newName){}
Public java.util.Date stringToDate(String
date,Boolean autoadd){}

17

18

Public java.util.Date stringToDate(String p1){}

19

Public java.sql.Date stringToSqlDate(String


date, Boolean autoadd){}

20

Public java.sql.Date stringToSqlDate(String


date){}
Public String

21

dateToString(java.sql.Date p1,String default){}


22
23

Public String dateToString(java.sql.Date date){}


Public java.sql.Date getCurrentSqlDate(){}

Chuyn tham s dng String sang


kiu s dng long, nu chui a ra
khng hp l th ly gi tr default
Chuyn tham s dng String sang
kiu s dng long
Chuyn tham s dng String sang
kiu s dng float
Chuyn tham s dng String sang
kiu s dng float chui a ra
khng hp l th ly gi tr default
Chuyn tham s dng String sang
kiu s dng long, nu chui a ra
khng hp l th ly gi tr default
Upload file trn form dng multi-pt
chuyn ti v tr lu tr trn my ch
Kim tra tham s a vo c phi
kiu ngy hay khng
Kim tra xem 1 ngy c nh dng
nh th no:
-Gi tr 0: tham s khng phi kiu
ngy
- Gi tr 1: ch c nm
- Gi tr 2: thng, nm
- Gi tr 3: ngy, thng, nm
Dload file vi cc thng s a vo:
ng dn, tn file hin th pha
client v kiu ni dung file.
Xa file ti v tr path
i tn file t oldName sang
newName
Chuyn chui sang nh dng ngy,
nu khng cc thnh phn
ngy/thng th t dng chn them
vo l 01
Chuyn chui thnh dng ngy thng
nm
Chuyn chui sang nh dng ngy
ca SQL, nu khng cc thnh
phn ngy/ thng th t ng chn
thm vo l 01
Chuyn chui sang nh dng ngy
ca SQL
Chuyn ngy a vo sang dng
chui, nu ngy a vo khng phi
kiu ngy th ly ngy mc nh
(default)
Chuyn dng ngy sang kiu chui
Ly ra ngy hin ti theo nh dng
SQL

24
25
26

Public java.util.Date getCurrentDate(){}


Public java.sql.Date
DateToSqlDate((java.sql.Date p1){}
Public int getDay(java.sql.Date p1){}

27

Public int getDate(java.sql.Date p1){}

28
29
30

32

Public int getMonth(java.sql.Date p1){}


Public int getYear(java.sql.Date p1){}
Public int getDays(java.sql.Date fromDate,
java.sql.Date toDate){}
Public java.sql.Date addDays(java.util.Date
date,int days){}
Public boolean isInteger(String p1){}

33

Public boolean isPositive(String p1){}

34

Public boolean isNegative(String p1){}

35

Public boolean isFloat(String p1){}

36

Public String ncrToString(String ncr)

37

Public int getDaysOfMonth(java.sql.Date date


date){}
Public int getDaysOfMonth(int month,int year)
{}
Public Boolean isLeapYear(int year)

31

38
39

Ly ra ngy hin ti
Chuyn mt ngy a vo thnh
ngy theo nh dng ca SQL
Ly ra th ca ngy m ta a
vo(th 2 l s 2)
Ly ra ngy th my ca ngy m ta
a vo(ngy 30 l s 30)
Ly ra thng ca ngy m ta a vo
Ly ra nm ca ngy m ta a vo
Ly ra s ngy nm trong 1 khong
ngy m ta a vo
Thm vo bao nhiu ngy k t ngy
ang tnh
Dng kim tra xem chui a vo l
s nguyn hay k
Dng kim tra xem chui a vo l
ng hay sai
Dng kim tra xem chui a vo l
s m hay dng
Dng kim tra xem chui a vo l
dng s thp phn
Chuyn tham s t dng ch NCR
sang dng String
Ly s ngy trong mt thng vi
tham s l kiu ngy
Ly s ngy trong mt thng vi
tham s thnags v nm
Kim tra nm c phi nm nhun hay
khng

2.2.6. Inf
Cha cc giao din, hng s, kha kt ni, danh sch bng c s d liu, m t tn trng
Iactions.java, Ifields.java, Iroles.java v Itable.java.

IActions.java: Khai bo hng s nhm iu hng cc hnh ng trong mappingconfig.xml, chng c khai bo dng chui vi quy tc _TENHANGSODIEUHUONG
V d:
public interface IActions extends ICoreAction{
public static final String _ENGLISH
=_ENGLISH;
public static final String _VIETNAMESE
=__VIETNAMESE;
public static final String _FALSEACCOUNT=_FALSEACCOUNT;
public static final String _FALSEACCOUNT_AJAX=_FALSEACCOUNT_AJAX;
public static final String _NORMAL
public static final String _AJAX
public static final String _SUCCESS_AJAX

= _NORMAL;
= _AJAX;
= _SUCCESS_AJAX;

}
Ch : Cc tn v cc gi tr phi ging nhau, khng nn khai bo thm v tn ti cc gi tr
iu hng cn thit trong IcoreAction.
IFields.java: Khai bo cc hng cha tn ca cc trng trong bng CSDL vi quy tc
sau:
TENBANG_TENTRUONG=Tn trng trong c s d liu ;
V d:
public interface Ifields extends IParams {
/** Fields of Account table **/
public final String ACCOUNT_ID = ID;
public final String ACCOUNT_USERNAME = USERNAME;
public final String ACCOUNT_PASSWORD = PASSWORD;
public final String [] ACCOUNT_ALL_FIELDS={ACCOUNT_USERNAME,
ACCOUNT_PASSWORD}
}
IRoles.java: Khai bo cc hng s v gn gi tr cho hng s l cc vai tr v quyn.
V d:
pubic interface IRoles{
public static final int NONE
= 0;
public static final int pSELECT = 1;
public static final int pUPDATE = 2;
public static final int pINSERT = 4;
public static final int pDELETE = 8;
public static final int pDOWNLOAD = 16;
/*All role*/
public static final int rOFFICER = 1;
public static final int rLEADER = 2;
public static final int rMANAGER = 4;
public static final int rACCOUNTANT = 8;
public static final int rEDITOR = 16;
public static final int rVIEWER = 32;
public static final int rDIRECTOR = 64;
/*Privileges for USER */
public static final int POFFICER =pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;
public static final int PLEADER =pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;

public static final int PMANAGER =pSELECT| pUPDATE| pINSERT| pDELETE|


pDOWNLOAD| pUPLOAD;
public static final int PACCOUNTANT=pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;
public static final int PEDITOR =pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;
public static final int PEDITOR=pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;
public static final int POVIEWER =pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;
public static final int PDIRECTOR =pSELECT| pUPDATE| pINSERT| pDELETE|
pDOWNLOAD| pUPLOAD;
public static final int PADMINISTRATOR=16777215;
/* Roles for USER access */
public static final int ROFFICIER = rOFFICER;
public static final int RLEADER = rOFFICER|rLEADER;
public static final int RMANAGER = rOFFICER|rLEADER|rMANAGER;
public static final int RACCOUNTANT =
rOFFICER|rMANAGER|rACCOUNTANT;
public static final int REDITOR =rEDITOR;
public static final int RVIEWER =rVIEWER;
public static final int RDIRECTOR = rDIRECTOR;
public static final int RADMINISTRATOR=16777215;
}
ITables.java: Khai bo cc hng s l cc tn bng trong CSDL vi quy tc:
TABLE_TENBANG
V d:
public interface ITables{
// SET OF TABLES IN DATABASE
public final String TABLE_ACCOUNT =ACCOUNT;//COMENT
2.2.7.Res:
Cha cc lp thuc tinh giao din, cu hnh cho toan b ng dng:

Configs.properties: La chn cc s dng CSDL, cc nh dng v kt ni d liu, hin


th dng, bt li, ngy thng,tng ng trong cc chng trnh hot ng: s dng CSDL,
dng m sau:
#----CSDL mc nh----#
#Khai bo cc kiu d liu s dng trn MySQL
TABASE.TYPE=2;
#Tn truy cp to k ni vi CSDL

DATA.USERNAME=VMS_EMPLOYEE
#Mt khu
DATABASE.PASSWORD=1;
# i ch IP hoc tn my ch t CSDL
DATABASE.HOSTNAME=192.18.0.201.
#tn CSDL
DATABASE.NAME=VSN45
#chui kt ni a vo khi DATABASE.TYPE=-1;
DATABASE.URL=jdbc:oracle:thin:VMS_EMPLOYEE/@192.168.0.201:1521:
VNS45
# Tn trnh iu khin khi DATABASE.TYPE =-1;
DATABASE.DRIVE =com.microstof.sqlsever.djbc..SQLSeverDrive.
#Cng kt ni vi c s d liu trong trng hp kt ni khng thit lp ti cng mc nh
DATABASE.PORT =-1;
#S lng kt ni ti a c th ch to ra mt thi im.
DATABASE.CONNECTION.MAX=2;
#S ln c gng kt ni li nu kt ni c khng thnh
DATABASE.CONNECTION.RETRY= 4;
#Thi gian tt ti trong n nh ca mi kt ni.
DATABASE.CONNECTION.TIMEOUT=1;
Trn y l cch s dng CSDL mc nh cho defaurt cho framwork, tuy nhin trong nhiu
trng hp Framework ca chng ta c th s dng nhiu kt ni khc do thc hin vic
ny ta c th lm nh sau:
#------CSDL gc------#
DATABASE.TYPE=2
DATABASE.USERNAME=VMS_EMPLOYEE
DATABASE.PASSWORD=1
DATABASE.HOSTNAME=192.168.0.201
DATABASE.NAME=VNS45
DATABASE.URL=
DATABASE.DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDrive
DATABASE.PORT=-1
DATABASE.CONNECTION.MAX=2
DATABASE.CONNECTION.RETRY=4
DATABASE.CONNECTION.TIMEOUT=1
#-----CSDL TH 2------#
DATABASE.TYPE.SALARY=2
DATABASE.USERNAME.SALARY=VMS_SALARY
DATABASE.PASSWORD.SALARY=1
DATABASE.HOSTNAME.SALARY=192.168.0.201
DATABASE.NAME.SALARY=VNS45
Nh vy, kt ni 2 cn thm 1 tham s na, chinh l .SALARY, v tham s ny s c khai
bo trong com.inf.IKey vi on m sau:
Public static final String SALARY_CONNECTION= .SALARY;
gi kt ny trong B* ta cn lm nh sau:
Conn =Dbconnector.getConnection(IKey.SALARY_CONNECTION);
thit lp phn trang cho JSP
APP.ROWS.VIEW=20 //s dng trong mt trang.
APP.PAGES.VIEW=10 //s trang nhiu nht.
hn ch dung lng ti a truyn file
FILE.UPLOAD.MAXSIZE=1048576 // Dng cho upload

FILE.DOWNLOAD.MAXSIZE=1048576 // Dng cho download


FILE.BUFFER.SIZE=1048576
nh dng ngy thng cho chng trnh
AAP.DATE.YAER=yyyy // kiu nm
AAP.DATE.MONTH=MM/yyyy // kiu thng/ nm
AAP.DATE.DEFAULT=dd/MM/yyyy //kiu ngy/thng/nm
AAP.DATE.TIME=dd/MM/yyyy HH:mm:ss // kiu ngy gi
AAP.DATE.AUTOADD=1
AAP.DATE.SEPARATE=/
// Dng phn cch
AAP.DATE.YEAR.MIN=1900 //nm nh nht
AAP.DATE.YEAR.MAX=2100 // nm ln nht
nh dng ngn ng
APP.LANGUAGE.DEFAULT=vn // dng ngn ng ting Vit
g ri chng trnh
APP.DEBUG=TRUE
Application_vn_VN.properties: To ra cc trnh by bng ting Vit ti cc v tr nh
trong cc trang jsp. V d:
# TEXT FOR MENU AND FUNCTIONS
menu.language.english=English
menu.language.vietnamese=Ti&#7871;ng vi&#7879;t
menu.left.login=&#272;&#259;ng nh&#7853;p
menu.left.function_2=Ch&#7913;c n&#259;ng 2
menu.left.function_3=Ch&#7913;c n&#259;ng 3
on m ny s gi ti trang left.jsp:
<%@ include file= /commons/tags.jsp%>
<%@ include file= /commons/Params.jsp%>
<html:form action= /login/signin/>
<table>
<tr><td>
<html:link href= # onclick=
javascript:post(login,anchor+:_FORWARD);>
<bean:message key= manu.left.login bundle=<%=interface
%>/>
</html:link>
<tr><td>
<tr><td>
<html:link href= # onclick=
javascript:post(login,anchor+:_FORWARD);>
<bean:message key= manu.left.function_2 bundle=<
%=interface%>/>
</html:link>
<tr><td>
<tr><td>
<html:link href= # onclick=
javascript:post(login,anchor+:_FORWARD);>
<bean:message key= manu.left.function_3 bundle=<
%=interface%>/>
</html:link>
<tr><td>
</table>

Application_en_US.properties: Lp ny trnh by bng ting Anh cc trang Jsp.


2.3. Thnh phn ca Web Content

Cha tt c cc trang jsp ca chng trnh, cc th vin, cc styles, cc file js, cc hnh nh
v hot ng c lin quan n nhau gia cc trang jsp.
2.3.1.WEB-INF

Phn quan trng trong WEB-INF l lib cha tt c cc th vin quan trng ca struts cc th
vin v SQL,ORACLE,cc lp bt li,cn thit cho vic thit k cc ng dng trn
framework v file mapping-config.xml.
Cc lin kt, hot ng gia cc trang jsp c th hin file mapping-config.xml. Tn cc
form cu cc trang jsp c trong ng dng c nh ngha cng vi kiu ca n bng cp th
:<form-bean></form-bean>, v d:
<form-beans>
<form-bean name= language type= com.form.language.Flanguage/>
<form-bean name= login type= com.form.login.FloginSystem/>
<form-bean name= kiemtramatkhauNormal type= com.form.kiemtra.FMatKhau/>
<form-bean name= kiemtramatkhauAjax type= com.form.kiemtra.FMatKhau/>
<form-bean name= produce type= com.form.hanghoa.Fproduce/>
</form-beans>
Cc iu hng hnh ng ca cc Action th hin trong cp th <action-mappings></action>
V d:
<action-mapping>
<action name =ten form=path=/ten form
type=com.action.vitri.AtenActionvalidate=false>
<forward name=_SUCCESS path=/produce.jsp/>
<forward name=_FALSE path=/DEMO/index.jsp/>
</action>

Trong th d trn, form tn form c ng dn l /tn forms gi tn AtenAction ra x l v


iu khin hng ty theo gi tr ca target.
2.3.2.js
Trong th mc ny cha cc file javascript(*.js) s dng trang jsp.
Mt s file javascrip quan trng:
Ajaxlib.js: Mt s hm quan trng
-Hm posAjax():c dung gi thng tin ln server, kt qu thu v c hin th bng
cch m mt trang web di nhng trang web mi y mt phn ca trang web m ta ang thao
tc trn .
S dng: postAjax(ten form,ten doi tuong nhan ket qua,anchor+:Hng s ic hng:danh
sch bin: gi tr tng ng);
-Hm openWindow():c dng gi cc thng tin ln server, kt qu tm c v s
c hin th bng cch mt trang web mi, v trang web ny s nm ngay trn trang web c nh
mt ca s mi c bt ra. C php:
Openwindow(ten form,anchor+:hng s iu hng:danh sch bin v gi tr tng
ng);
Action.js: Mt s hm quan trng
-getObject(tn i tng): ;c dng ly i tng trn web s dng cho cc on m
javascript.
-Post(): c dng gi cc thng tin ln Server v nhn thng tin m lc gi yu cu
v s bt ra mt trang web mi hin th kt qu. C php:
post(ten form,anchor+:hng s iu hng:danh sch bin v cc gi tr tng ng).
Danh sch bin v cc gi tr tng ng c th c hoc khng.
2.3.3.styles : Trong th mc ny s cha cc file:*css to giao din cho jsp
3.Cch to ra mt ng dng framwork
Sau khi s dng chng trinhf JDEV 10g v a m hnh framwork mu vo s dng bn c
th to mt ng dng trn .
V d to ng dng kim tra xem khi nhp thm snh vin th kkim tra xem c b trng m
hay khng. Tn c s d liu trn MSQL l learning c bng
student(Code:varchar(10),FirstName:nvarchar(20);LastName
nvarchar(20);Birthday:datetime;Address:nvarchar(50)).
3.1 To res
Trong thnh phn res ca Application ,chn Configs.properties thit lp cc thuc tnh v
CSDL cho tng ng dng.
DATABASE.TYPE=3
DATABASE.USERNAME=sa
DATABASE.PASSWORD=
DATABASE.HOSTNAME=192.168.0.1
DATABASE.NAME=Learning
To file Application_vn_VN.properties
student.code=M&#27;sinh vi&#234;n
student.firstname=H&#7885;&#273;&#7879;m
student.lastname=T&#234;n
studentbirthday=Ng&#224;y sinh
studentaddress=&#272;&#7883;a ch&#7881;
#tn nt lnh
cmd.addnew=Nh&#7853;p
#Thng bo
notice.success=B&#7841;n &#273;nh&#7853;p th&#224;nh c&#224;ng.Ch&#250;c
m&#7915;ng!

notice.error=&#272;&#227;t&#7891;n t&#7841;i m&#227;s&#7889; sinh vi&#234;n n&#224;y


alert.create.success=Th&#234;m d&#7919; li&#7879; u th&#224;nh c&#224;ng
alert.creat.error =G&#7863;p l&#7895;i khi th&#234;m d&#7919; li&7879;u
#Cc thng bo li
errors.student.code=Y&#234;u c&7874;u nh&#7853;p m&#227; sinh vi&#234;n
errors.student.firstname= Y&#234;u c&7874;u nh&#7853;p t&#234;n
errors.student.lastname= Y&#234;u c&7874;u nh&#7853;p h&#7885; &#273;&#7879;m
errors.student.address= Y&#234;u c&7874;u nh&#7853;p &#273;&#7883;a ch&#7881
errors.student.birthday= Y&#234;u c&7874;u nh&#7853;p ng&#224;y sinh
errors.student.formatbirthday= Nh&#7853;p sai ki&7875;u ng&#224;y sinh
3.2 To inf
Tip theo chng ta s i khai bo cc hng l tn bng v cc trng trong c s d liu trong
inf nh sau:
Trong ITables.java;
package com.inf;
public interface ITables{
//y l tn bng trong CSDL: Student
public final String TABLE_STUDENT=STUDENT;
}
//*********************************************
Trong IFields.java
package com.inf;
public interface IFields extends IParams{
/** Fields of learning table-Tn cc trng trong bng*/
public final String STUDENT_CODE=CODE;
public final String STUDEN_FIRSTNAME=FIRSTNAME;
public final String STUDENT_LASTNAME=LASTNAME;
public final String STUDENT_BIRTHDAY=BIRTHDAY;
public final String STUDENT_ADDRESS=ADDRESS;
public final String[] STUDENT_ALL_FIELD={ STUDENT_CODE,
STUDENT_FIRSTNAME,STUDENT_LASTNAME,STUDENT_BIRTHDAY,
STUDENT_ADDRESS};
}
3.3To Form
Trong thnh phn form,ta s xy dng lp FStudent.java trong gi com.form.learning bng
cch click chut phi vo form->New ca s New Gallery xut hin:

Chn General->Java Class ca s Create Java Class xut hin,ta t tn class v gi ca class,ri
nhp OK

Trn Application Navigator Fstudent.java hin ln nh sau:

M ca Fstudent.java nh sau:
Package.com.form.learning;
Import com.form.Fseed;
Import org.apache.struts.upload.FormFile;
Public class Fstudent extends Fseed
{
private String code;
private String firstName;
private String lastName;
private String birthday;
private String address;
}
Thc hin right click vo mt bin bt k trn form ta thy xut hin menu popup sau:

Chn ton b cc tn bin xut hin, sau chp nhn OK chng ta s thu c form c dng
sau
package com.form.learning;
import com.form.FSeed;
import org.apache.struts.upload.FormFile;
public class FStudent extends FSeed{
private String code;
private String firstName;
private String lastName;
private String birthday;
private String address;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}

public String getFirstName() {


return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
3.4. To DAO
Thit lp cu ln SQL truy nhp n CSDL trong DSql.java nh sau
public class DSql extends DCore implements ITables, IFields {
// Learning
// Truy vn thm mi d liu
public final String SQL_SELECT_STUDENT = INSERT_INTO +
FIELDS(STUDENT_ALL_FIELD, true) +
VALUES(STUDENT_ALL_FIELD.length);
// Truy vn d liu
public final String SQL_UPDATE_STUDENT = UPDATE + TABLE_STUDENT +
SET +
SETS(STUDENT_ALL_FIELD) + WHERE + STUDENT_CODE + EQUAL +
QUESTION;
// Truy vn m hc sinh

public final String SQL_STUDENT_CHECK_CODE = SELECT + STAR + FROM


+ TABLE_STUDENT + WHERE
+ STUDENT_CODE + EQUAL + QUESTION;
}
Trong dao, tng t nh form ta to lp Dstudent.java

M ca DStudent.java nh sau
package com.form.learning;
import com.form.FSeed;
import org.apache.struts.upload.FormFile;
public class FStudent extends FSeed{
private String code;
private String firstName;
private String lastName;
private String birthday;
private String address;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {


return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
3.5. To BO
Tng t ta c th to lp Bstudent.java trong thnh phn bo ca Application

M ca Bstudent.java nh sau:
public class BStudent {
public boolean addNew(FSeed seed) throws EException{
final String LOCATION = this.toString() + "->addNew()";
boolean result = false;
Connection conn = null;
FStudent bean = (FStudent)seed;
try{
conn = DBConnecor.getConnection();
DBConnector.endTransaction(conn);//Bat dau giao dich
DStudent dao = new DStudent();
result = dao.checkCodeStudent(conn,bean) && dao.addNew(conn,bean);

DBConnector.endTransaction(conn);//Ket thuc giao dich


}
catch (EException ex){
DBConnector.rollBackTransaction(conn); // Khoi phuc trang thai truoc giao
dich khi gap loi;
if(AppConfigs.APP_DEBUG) throw new EException(LOCATION,ex);
}
finally {
DBConnector.closeConnection(conn);
}
return result;
}
}
hon thnh phn Model ca ng dng, chng ta chuyn sang thit k giao din (View) ca
ng dng v hon thnh phn Controller.
3.6 To Web Contents
Nhp chut phi vo web contents New ca s New Gallery xut hin:

Chn web tier JSPJSP ri nhp OK. Ca s Create JSP xut hin. Bn nhp tn trang l
student.jsp. Nhp nt finish chng trnh s t to trang jsp ca ban.

Khi trong web Content ta c nh sau:


Trang Student.jsp :

Cng trn web content, to trang studentSuccess.jsp khi to thnh cng, trang ny s hin th.
Trang student.jsp:
<%@ page contentType = text/html; charset = UTF-8 language = java%>
<%@include file = /commons/tags.jsp%>
<%@ include file = /commons/params.jsp%>
<html>
<head><jsp: include page = /commons/set.jsp></head>
<body>
<table>
<tr align = center><td>
<strong><bean: message key = notice.success bundle = <%=interfaces%>/></strong>
</td></tr>
<table>
</body>
</html>
Cng trn web content, to trang studentFail.jsp khi xut hin li, trang ny s hin th.
Trang studentFail.jsp
<%@ page contentType = text/html; charset = UTF-8 language = java%>
<%@include file = /commons/tags.jsp%>
<%@ include file = /commons/params.jsp%>
<html>
<head><jsp: include page = /commons/set.jsp></head>
<body>
<table>
<tr align = center><td>
<strong><bean: message key = notice.error bundle = <%=interfaces%>/></strong>
</td></tr>
<table>
</body>
</html>
Khi trong file mapping_configs.xml s c vit nh sau:

<?xml version = 1.0 encoding = UTF-8?>


<!DOCTYPE strust-config PUBLIC-// Apache Sofeware Foundation// DTD Strusts
Configuration 1.1 // EN
http://jakarta.apache.org/strusts/dtds/strsts-config-1_1.dtd>
<struts-config>
<form-beans>
<form-beans>
<form-bean name = student type = com.action.learning.FStudent />
<form-beans>
<action-mappings>
<action name = student path = /student type =
com.action.learning.Astudent unknow = false validate = false>
<forward name = _SUCCESS path = /learning/studentSuccess.jsp/>//Thanh cong
<forward name = _CREATE_FALSE path = /learning/studentFail.jsp/>//Gap loi
</action>
</action-mappings>
</strust-config>
3,7. To action
Ni dung ca Astudent.java trong action c vit nh sau:
Package com.action.learning
Public class Astudent extends Acore{
Public ActionForward executeAction (ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Eexception, IO
Eexception, ServletException, ServletException, SQL Exception
{
Final String LOCATION = this.toString() + ->executeAction();
ActionErrors = new ActionErrors();
String target = _ERROR;
Fstudent bean = (Fstudent)form;
String anchor = bean.getValue(APP_ANCHOR,);
// Kiem tra, StudentErrors
Errors = validateForm(bean);
If (errors.isEmpty()){
If(anchor.equal(_CREATE)){
Bstudent bo = new Bstudent();
If(!bo.addNew(bean)){
Target = _SUCCESS;
Errors.add(StudentErrors, new ActionError(alert.create.success));
}else{
Errors.add(StudentErrors, new ActionError(alert.create.errors));
Target = _CREATE_FALSE;
}
}
}
If(errors!=null &&!errors.isEmpty()) saveErrors(request, errors);
Return mappong.findForward(target);
}
Private ActionErrors validateForm(FempDecides bean)
{
If ((bean.getCode()==null)||(bean.getCode().equal()))

{
errors.add(StudentErrors, new ActionError(errors.student.code));
}
If ((bean.getFirstName()==null)||(bean.getFirstName().equal()))
{
errors.add(StudentErrors, new ActionError(errors.student.FirstName));
}
If ((bean.getLastName()==null)||(bean.getLastName().equal()))
{
errors.add(StudentErrors, new ActionError(errors.student.lastname));
}
If ((bean.getAddress()==null)||(bean.getAdress().equal()))
{
errors.add(StudentErrors, new ActionError(errors.student.address));
}
If ((bean.getBirthday()==null)||(bean.getBirthday().equal()))
{
errors.add(StudentErrors, new ActionError(errors.student.birthday));
}else if(!bean.isDate(bean.getBirhday())){
errors.add(StudentErrors, new
ActionError(errors.student.formatbirthday));
return errors;
}
}
4. Cng ngh AJAX
AJAX c dng khi d liu c gi ln x l v thay i ni dung tr v l mt trang JSP mi
th AJAX ch n nhn kt qu v a vo trang hin thi qua cc hm javascript. iu ny lm
cho giao din ca ng dng tri nn thn thin, linh hot v ng dng t c tc cao hn.
Ty vo tng chc nng, kh nng tng tc, c tnh s dng ca ng dng m ta c th s dng
POST AJAX hay POST thng.
Ly v d trn:
Khi nhp thnh cng mt sinh vin, s tr v trang studentSuccess.jsp hin th thng bo nhp
thnh cng. Nu s dng POST AJAX th thng bo nhp ny s ch hin th nh mt phn ca
trang student.jsp m thi v ta c th t thng bo ny vo nhng v tr m ta mun hin th.
Khi trong trang student.jsp ta s sa li nh sau:
<%@ page contentType = text/html; charset = UTF-8 language = java%>
<%@include file = /commons/tags.jsp%>
<%@ include file = /commons/params.jsp%>
<html>
<head><jsp: include page = /commons/set.jsp></head>
<body>
<html: form action = student>
<table>
<tr>
<td align = right>
<strong><bean: message key = student.code bundle = <%=interfaces%>/></strong>
<td align = left><html: text property = code/></td>
</tr>
<tr>
<td align = right>

<strong><bean: message key = student.firstname bundle = <%=interfaces


%>/></strong></td>
<td align = left>< <html: text property = firstname/></td>
</tr>
<tr>
<td align = right>
<strong><bean: message key = student.lastname bundle = <%=interfaces
%>/></strong></td>
<td align = left>< <html: text property = lastname/></td>
</tr>
<tr>
<td align = right>
<strong><bean: message key = student.birthday bundle = <%=interfaces
%>/></strong></td>
<td align = left>< <html: text property = birthday/></td>
</tr>
<tr>
<td align = right>
<strong><bean: message key = student.adress bundle = <%=interfaces
%>/></strong></td>
<td align = left>< <html: text property = addrress/></td>
</tr>
<tr>
<tr><td><html: button onclick = javascript:
postAjax(student,divTB,anchor+:_CREATE);
Property = submit>
<bean: message key = button.nhap.captionbundle = <%=interfaces%>/></html:
button></td></tr>
<tr>
<td>
<div align = center id = divTB></div>
</td>
</tr>
</table>
</html: form>
<p align = left><html: errors property = StudentErrors bundle = <%=interface
%>/></p>
<body>
</html>
5. Thit lp cu hnh h thng:
5.1. Cu hnh cho h thng (file IcoreKey.java)
Nhng cu hnh chung cho h thng s c khai bo trong file IcoreKey, Config.properties
ngi dng c th s dng cc cu hnh ny bng phng thc sau AppConfig.Tn_tham_S.
Bng s dng mt s cu hnh ca h thng
STT Tn bin
ngha
1
AppConfigs.APP_SYSTEM_PATH
ng dn lu ng dng ang hot ng
trn my ch.
2
AppConfigs.APP_ID
ID ng dng do h thng thit lp
3
AppConfigs.APP_ANCHOR
Tn hng s iu hng anchor
4
AppConfigs.APP_REQUEST_METHOD
nh ngha phng thc giao dch gia

5
6

AppConfigs.SESSION_MAX_USERS
AppConfigs.SESSION_DENY_GUEST

Client v Server
C cc phng thc sau: POST, GET;
S lng kt ni ti a n ng dng
Thit lp yu cu ti khon trc khi s
dng chng trnh
TRUE: Yu cu ng nhp trc
khi s dng
FALSE: Khng yu cu ng nhp
vn c th s dng ng dng.

5.2 Cu hnh do ngi dng t nh ngha(file Ikey.java)


Bao gm cc cu hnh do ngi dng t nh ngha phc v cho hot ng ca h thng tr nn
linh hot hn khi t chc chng trnh
5.2.2. Thit lp cu hnh trong Configs.properties
Khi thit lp cu hnh h thng, cc gi tr c t ti Config.properties trong phn c phn
on bi DEVELOPER ADD
#---------------DEVELOPER ADD ----------------#
t thit lp cu hnh ti y.
Tn.Tham.S = Gi tr
#-------------END---------------------------------------#
V d
#---------------DEVELOPER ADD ----------------#
REPORT.FILE.PATH = Report\\
REPORT.FILE.NAME = REPORT.xls
REPORT.SHEET.X = 0
REPORT.SHEET.Y = 1
#-------------END---------------------------------------#
5.2.1 Gi v s dng cu hnh
Sau khi nh ngha cu hnh cho mt ng dng trong file Configs.properties, mun gi cc gi tr
thit lp chng ta phi thc hin cc bc sau:
Bc 1: M file IKey.java
Bc 2: nh ngha bin lu gi tr cu hnh theo hai nguyn tc sau: Tn.Tham.S trong file
Configs.properties c chuyn thnh Tn_Tham_S trong IKey.java
Nu nh ngha cu hnh dng s (int) th theo nguyn tc sau:
Public static final String TN_CU_HNH =
Interger.parseInt(getValue(Tn.Cu.Hnh));
V d:
Public static final String DATABASE_CONNECTION_MAX =
Interger.parseInt(getValue(DATABASE.CONNECTION.MAX));
Nu nh ngha cu hnh dng chui (String) th theo nguyn tc sau:
Public static final String TN_CU_HNH = getValue(Tn.Cu.Hnh);
V d
Public static final String REPORT_FILE_EXCEL =
getValue(REPORT.FILE.EXCEL);
Ch : Hm getValue c th s dng vi tham s gi tr mc nh a vo trong trng hp
khng tm thy tham s thit lp ti Configs.properties
V d:

Gi tr mc nh l report.xls
Public static final String REPORT_FILE_EXCEL = getValue(REPORT.FILE.EXCEL,
report.xls);
Bc 3: Khi cn gi ti tham s, bn s dng cch gi AppConfigs.Tn_Tham_S.

You might also like