Professional Documents
Culture Documents
De Cuong Datn
De Cuong Datn
N TT NGHIP I HC
Tn ti: Tm hiu Google Web Toolkit, Google App Engine
v xy dng h thng qun tr ni dung CMS
H ni 05-2010
GVHD:
BCH DIP
PAGE 2
7/26/2014
SVTH:
NGUYN XUN TUN
Li gii thiu
Ngy nay, cng ngh thng tin c nhng bc pht trin mnh m theo c
chiu rng v su. My tnh in t khng cn l mt th phng tin qu him
m ang ngy cng tr thnh mt cng c lm vic v gii tr thng dng ca con
ngi, khng ch cng s m cn ngay c trong gia nh. Cng ngh thng tin
tc ng n mi mt ca i sng x hi. Cng ngh thng tin v ang
em li nhng hiu qu v cng to ln, thay i hn nhng cung cch lm vic
ca nhiu lnh vc, lm gim thi gian v chi ph hot ng ca cc c nhn, t
chc v x hi.
D nhn thy hu ht mi cng ty t nh n ln trn th gii u c website
ring, n gin nht l phc v cho vic cung cp thng tin v cng ty, tin tin
hn mt cht l cung cp mt knh thng tin gia khch hng v cng ty, hay c
bit nhng cng ty cng ngh thng tin hu nh mi hot ng u din ra trn
web. ng trc vai tr ca thng tin hot ng cnh tranh gay gt, cc t chc
v cc doanh nghip u tm mi bin php xy dng hon thin h thng
thng tin ca mnh nhm tin hc ha cc hot ng tc nghip ca n v.
Vit Nam, cc doanh nghip cng ang c nhu cu cp thit l tin hnh
thng mi ha trn Internet nhng do vic t mnh duy tr mt server th ch cc
cng ty tin hc v cc cng ty ln mi c th u t. S ng cc doanh nghip c
website th u b tin ra thu host ca 1 cng ty tin hc vi gi hng thng ty
thuc vo nhu cu. Tuy nhin cht lng khng n nh v gi c cng khng
c ng nht. Hin nay Google c mt host cho php ngi s dng ci t
ng dng web min ph vi dung lng v lu lng kh ln,
Xut pht t nhng nhn xt trn em quyt nh chn ti cho n tt
nghip ca em l: Tm hiu Google Web Toolkit, Google App Engine v xy dng
h thng qun tr ni dung CMS.
Trong qu trnh thc hin n, ti nhn c s gip tn tnh ca cc
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 3
7/26/2014
SVTH:
NGUYN XUN TUN
thy c trong khoa Cng Ngh Thng Tin, khoa S Phm K Thut v c bit l
ca c gio hng dn Bch Dip. Em xin chn thnh cm n cc thy, cc c
gip em hon thnh n tt nghip ny.
Vi trnh , kinh nghim v k nng cn hn ch nn n khng trnh khi
nhng thiu st. Em rt mong nhn c s ch bo, gp ca cc thy c gio v
cc bn. Hi vng rng, thng qua n cng vi s ch bo ca cc thy c gio
v cc bn em s hon thin mnh trong cc ng dng android tip sau.
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 4
7/26/2014
SVTH:
NGUYN XUN TUN
MC LC
Phn I:
I.
1.
2.
3.
II.
1.
2.
III.
1.
2.
3.
4.
Phn II:
I.
1.
2.
II.
1.
2.
3.
III.
C s l thuyt......................................................................................................................
ng dng web..................................................................................................................................................
nh ngha......................................................................................................................................................
Lch s ng dng............................................................................................................................................
Cng ngh.......................................................................................................................................................
Web 2.0.............................................................................................................................................................
nh ngha:.....................................................................................................................................................
Cng ngh.......................................................................................................................................................
Cc cng ngh s dng....................................................................................................................................
Google Web Toolkit (GWT)...........................................................................................................................
Google Appengine..........................................................................................................................................
M hnh MVP.................................................................................................................................................
Tng quan Framework....................................................................................................................................
Xy dng h thng........................................................................................................
Mc ch v yu cu ca h thng.................................................................................................................
H qun tr ni dung web (CMS)...................................................................................................................
Pht biu yu cu............................................................................................................................................
Phn tch v thit k h thng CMS..............................................................................................................
Biu Use case tng qut.............................................................................................................................
c t cc use case.........................................................................................................................................
Thit k d liu...............................................................................................................................................
Ci t.................................................................................................................Error! Bookmark not defined.
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 5
7/26/2014
SVTH:
NGUYN XUN TUN
PH LC
Ph lc 1. Danh mc cc hnh v:
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
Hnh
1 Layout panel_______________________________________________________________2
2 - DockLayoutPanel___________________________________________________________2
3 - SplitLayoutPanel____________________________________________________________2
4 - StackLayoutPanel___________________________________________________________2
5 - TabLayoutPanel_____________________________________________________________2
6 - Button widget______________________________________________________________2
7 - PushButton widget__________________________________________________________2
8 - RadioButton widget_________________________________________________________2
9 - CheckBox widget___________________________________________________________2
10 - DatePicker widget_________________________________________________________2
11 - ToggleButton widget_______________________________________________________2
12 - TextBox widget___________________________________________________________2
13 - PasswordTextBox widget__________________________________________________2
14 - TextArea widget___________________________________________________________2
15 - Hyperlink widget__________________________________________________________2
16 - ListBox widget____________________________________________________________2
17 - MenuBar widget___________________________________________________________2
18 - Tree widget_______________________________________________________________2
19 - SuggestBox widget________________________________________________________2
20 - RichTextArea widget_______________________________________________________2
21 - Table widget______________________________________________________________2
22 - TabBar widget_____________________________________________________________2
23 - DialogBox widget__________________________________________________________2
24 - PopupPanel widget________________________________________________________2
25 - StackPanel and StackLayoutPanel* widget_________________________________2
26 - HorizontalPanel widget____________________________________________________2
27 - VerticalPanel widget_______________________________________________________2
28 - FlowPanel widget__________________________________________________________2
29 - VerticalSplitPanel widget__________________________________________________2
30 - HorizontalSplitPanel_______________________________________________________2
31 - SplitLayoutPanel__________________________________________________________2
32 - DockPanel and DockLayoutPanel__________________________________________2
33 - TabPanel and TabLayoutPanel_____________________________________________2
34 - DisclosurePanel___________________________________________________________2
35 - M hnh GWT RPC_________________________________________________________2
36 - So snh MVC v MVP______________________________________________________2
37 - Use case tng qut________________________________________________________2
38 - Use case qun tr giao din v web_______________________________________2
39 - Layout trang web__________________________________________________________2
40 - Use case qun tr ni dung________________________________________________2
41 - Use case qun tr ngi dng v phn quyn______________________________2
42 - C s d liu lin quan n member_______________________________________2
43 - C s d liu lin quan n layout web____________________________________2
44 - C s d liu lin quan n content________________________________________2
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 6
7/26/2014
SVTH:
NGUYN XUN TUN
TT
Tn bng
M t
GWT
GAE
CMS
MVP
MVC
WYSIWYG
QTVWeb
QTVND
UI
Giao din
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 7
7/26/2014
SVTH:
NGUYN XUN TUN
Phn I: C s l thuyt
I. ng dng web
1.
nh ngha
Mt ng dng web hay web application l mt ng dng c th tip cn qua
trnh duyt web(IE, Firefox, Chrome) thng qua mng (internet hay
extranet).
ng dng web s dn tr nn ph bin nh vo im mnh c bn l bn c
th s dng t bt c thit b no c th hin th web ti bt c ni no c kt ni
n my ch web. V c tnh khng phi phn phi v ci t phn mm trn
tng my tnh c nhn nh cc chng trnh truyn thng cho nn lp trnh vin
c th cp nht v bo tr ng dng Web mt cch d dng v lp tc c hiu ng
ngay vi tt c cc ngi s dng. Vi cng ngh tin tin nh hin nay, ng
dng web c th thc hin hu ht ton b cc yu cu t n gin n phc tp
nht. Mt vi v d c th ca cc ng dng web rt pht trin l: web
mail, bn hng trc tuyn, u gi trc tuyn, wiki, din n tho lun, blog,
game, cc ng dng qun l v nhiu chc nng khc.
2.
Lch s ng dng
Trong cc ng dng ch - khch trc y, mi ng dng phi c chng trnh
GVHD:
BCH DIP
PAGE 8
7/26/2014
SVTH:
NGUYN XUN TUN
3.
Cng ngh
V phn giao din, ng dng web gn nh khng c gii hn no v kh nng
ngi dng. Ngoi nhng thnh phn c bn: Javascript, HTML, DHTML, CSS,
cn c ngn ng m rng v xa b hon ton nhng gii hn v kh nng trn
web nh Flash, JavaApplet, JavaFX, ActiveX, Silverlight v nhng cng ngh
khc. Nhng thnh phn m rng ny hon ton c th v trn mn hnh, chi
nhc, v dng c bn phm v chut, ko th tt c u c th thc hin
c. Nhng lp trnh vin web thng dng script pha ngi dng thm hiu
qu cho cc tnh nng, c bit l to ra mt cm gic giao tip trc quan m
khng cn phi ti trang li (iu m nhiu ngi dng cm thy ngt qung)
(Ajax, WEB 2.0). Nhng cng ngh ngy cng pht trin phi hp Javascript
pha ngi dng vi cng ngh pha my ch nh Jquery, Dojo, ASP.NET Ajax,
Mootools . to ra rt nhiu nhng tri nghim ajax khc nhau. Tuy vy vic s
dng Ajax ang gp phi mt vn ln l rt t framework p ng c kh
nng cho php search engine truyn thng c th nhn din y d liu.
Mt u th c bit na ca vic xy dng ng dng Web l n ch cn h tr
nhng tnh nng chun ca trnh duyt, vy l chng s hot ng nh mong
mun bt k h iu hnh hay phin bn h iu hnh no c ci trn my
khch. Thay v to ra nhng chng trnh khch cho MS Windows, Mac OS
X, GNU/Linux, v nhng h iu hnh khc, nhng ng dng ny c th c vit
ch mt ln v trin khai mi ni. Tuy nhin, s hin thc khng c n nh
ca HTML, CSS, DOM v nhng c tnh trnh duyt khc c th gy ra rc ri
trong vic pht trin v h tr ng dng web. Thm vo , kh nng cho ngi
dng iu chnh nhiu ci t hin th cho trnh duyt ca chng (nh chn kch
thc font, mu sc, v kiu ch, hoc tt tnh nng script) c th can thip vo s
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 9
7/26/2014
SVTH:
NGUYN XUN TUN
n nh ca ng dng web.
Mt cch tip cn khc (t ph bin hn) l dng Adobe Flash hoc Java
applet, JavaFX cung cp mt vi hoc tt c cc giao din ngi dng. T khi
phn ln trnh duyt web h tr nhng cng ngh ny (thng thng qua plug-in),
nhng ng dng da trn Flash hay Java c th c hin thc v trin khai d
dng nh nhau. Bi v chng cho php lp trnh vin qun l cht hn giao din,
chng vt qua nhiu vn v cu hnh trnh duyt, mc d s khng tng
thch gia hin thc bng Java hay Flash trn my khch c th to ra s phc tp
khc nhau.
D c nhiu bin th, mt ng dng Web thng thng c cu trc nh mt
ng dng ba lp. dng ph bin nht, mt trnh duyt Web l lp th nht, mt
b my s dng mt vi cng ngh ni dung Web ng (nh ASP, ASP.NET, CGI,
ColdFusion, JSP/Java, PHP, Python, hoc Ruby On Rails) l lp gia, v mt c
s d liu l lp th ba. Trnh duyt s gi yu cu n lp gia, lp gia s phc
v bng cch to ra truy vn v cp nht c s d liu v to ra giao din ngi
dng.
nh ngha
Khi nim Web 2.0 u tin c Dale Dougherty, ph ch tch ca OReilly
GVHD:
BCH DIP
PAGE 10
7/26/2014
SVTH:
NGUYN XUN TUN
2.
Cng ngh
Thc t, ng dng trn web l thnh phn rt quan trng ca Web 2.0. Hng
lot cng ngh mi c pht trin nhm lm cho ng dng trn web "mnh" hn,
nhanh hn v d s dng hn, c xem l nn tng ca Web 2.0.
Kin trc cng ngh ca Web 2.0 hin vn ang pht trin nhng c bn bao
gm: phn mm my ch, c ch cung cp ni dung, giao thc truyn thng, trnh
duyt v ng dng.
2.1.
Cung cp ni dung
Bc pht trin u tin v quan trng nht hng n Web 2.0 l c ch
cung cp ni dung, s dng cc giao thc chun ho cho php ngi dng s
dng thng tin theo cch ca mnh (ngha l c kh nng ty bin thng tin). C
nhiu giao thc c pht trin cung cp ni dung nh RSS, RDF v Atom, tt
c u da trn XML. Ngoi ra cn c cc giao thc c bit nh FOAF v XFN
dng m rng tnh nng ca website hay cho php ngi dng tng tc.
2.2.
Dch v web
Cc giao thc truyn thng 2 chiu l mt trong nhng thnh phn then cht
ca kin trc Web 2.0. C hai loi giao thc chnh l REST v SOAP. REST
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 11
7/26/2014
SVTH:
NGUYN XUN TUN
Phn mm my ch
Web 2.0 c xy dng trn kin trc web th h trc nhng ch trng hn
GVHD:
BCH DIP
PAGE 12
7/26/2014
SVTH:
NGUYN XUN TUN
1.2.
1.2.1.
Cc kiu layout
RootPanel
RootPanel l panel gc, t tt c cc panel khc mi c th thm vo. Hm
RootPanel.get() c mt panel duy nht bao ly th <body>. S dng hm
RootPanel.get(String id) c c mt panel bao ngoi mt phn t bt k trn
trang.
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 13
7/26/2014
SVTH:
NGUYN XUN TUN
FlowPanel
FlowPanel l panel n gin nht. N to ra mt th n <div> v c th put
cc th khc vo m khng cn sa i. S dng n trong trng hp bn mun
layout cc phn t HTML con mt cch t nhin.
HTMLPanel
Panel ny cung cp mt cch n gin xc nh mt cu trc HTML, trong
widget s c nhng vo ti cc im c xc nh. Bn c th s dng n
trc tip. Panel ny c s dng ph bin nht trong UiBinder templates.
FormPanel
Khi mun to mt form HTML (v d, i vi tng tc vi cc my ch m
s dng phng thc POST), c th s dng mt FormPanel. Cc widget c
bao bi FormPanel s c bao bi th <form> khi sinh ra HTML.
ScrollPanel
Khi mun to mt vng cun bn trong panel khc, bn nn s dng
ScrollPanel. Panel ny hot ng tt khi phn t c kch thc c nh nhng cc
phn t bn trong li cha r rng.
PopupPanel v DialogBox
S dng hai panel ny to popup v hp thoi. Chng c th chng ln trn
ca s trnh duyt, v c th c xp chng ln nhau.
Grid v FlexTable
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 14
7/26/2014
SVTH:
NGUYN XUN TUN
RootLayoutPanel
Panel ny l mt panel gc duy nht, phc v nh mt container gc m tt c
cc tm layout khc phi c nh km. Panel ny k tha lp LayoutPanel, do
bn c th layout s lng phn t bt k.
Bn s dng RootLayoutPanel ph bin nht l s dng nh mt container cho
cc panel khc.
LayoutPanel
Cch b tr ca LayoutPanel l cch b tr thng nht, v thng i theo cc
layout khc c xy dng. Gn ging vi LayoutPanel nht l AbsolutePanel,
nhng n tng qut hn ch n cho php cc phn t bn trong t nh v tr s
dng bng vic s dng cc rng buc ty , nh trong v d sau y:
GVHD:
BCH DIP
PAGE 15
7/26/2014
SVTH:
NGUYN XUN TUN
DockLayoutPanel
DockLayoutPanel c mc ch ging vi DockPanel widget, ngoi tr vic n
s dng h thng layout t c iu ny m khng s dng tables, v mt
cch d on c. Bn s thng xuyn s dng xy dng cp ng dng
cu trc, nh trong v d sau y:
Hnh 2 - DockLayoutPanel
SplitLayoutPanel
SplitLayoutPanel rt ging vi DockLayoutPanel (thc t l SplitLayoutPanel
extends DockLayoutPanel), ngoi tr vic n t ng to ra mt ct ko th
splitter gia mi cp widget con. SplitLayoutPanel ch h tr n v pixel. C
th dng thay th cho HorizontalSplitPanel v VerticalSplitPanel.
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 16
7/26/2014
SVTH:
NGUYN XUN TUN
Hnh 3 - SplitLayoutPanel
StackLayoutPanel
StackLayoutPanel thay th cho StackPanel. N ch hin th mt widget con ti
mt thi im, v cc tiu ca cc widget con khc. Nhp vo header no
th s hin th c widget .
Hnh 4 - StackLayoutPanel
GVHD:
BCH DIP
PAGE 17
7/26/2014
SVTH:
NGUYN XUN TUN
TabLayoutPanel
Ging vi vic s dng TabPanel, TabLayoutPanel s hin th mt dy nhp
tab. Mi tab l lin kt vi mt widget con, c hin th khi nhn vo tab.
Hnh 5 - TabLayoutPanel
Cc phn t c bn (widgets)
Bn xy dng giao din ngi dng trong cc ng dng bng cch s dng
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 18
7/26/2014
SVTH:
NGUYN XUN TUN
GWT widget c cha trong tm. Widget cho php bn tng tc vi ngi
s dng. Panels kim sot cc v tr ca cc thnh phn giao din ngi dng trn
trang. Widgets v tm lm vic theo cng mt cch trn tt c cc trnh duyt;
bng cch s dng chng, bn loi b s cn thit vit m chuyn bit cho tng
trnh duyt.
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 19
7/26/2014
SVTH:
NGUYN XUN TUN
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 20
7/26/2014
SVTH:
NGUYN XUN TUN
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 21
7/26/2014
SVTH:
NGUYN XUN TUN
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 22
7/26/2014
SVTH:
NGUYN XUN TUN
Hnh 30 - HorizontalSplitPanel
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 23
7/26/2014
SVTH:
NGUYN XUN TUN
Hnh 31 - SplitLayoutPanel
Hnh 34 - DisclosurePanel
1.3.
tt nht bn nn s dng HTML v CSS l cch t nhin nht. UiBinder cho php
bn lm iu : xy dng cc ng dng ca bn nh cc trang HTML vi cc
widget GWT ngay trong trang html (XML).
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 24
7/26/2014
SVTH:
NGUYN XUN TUN
Ngoi vic xy dng giao din ngi dng mt cch t nhin v ngn gn
hn khi thc hin iu thng qua code java, UiBinder cng c th lm cho ng
dng ca bn hiu qu hn. Trnh duyt web x l tt hn lc xy dng cu trc
DOM bng vic y chui HTML vo innerHTML hn l vic c gi cc API.
UiBinder cng li dng iu ny, v kt qu l cch d dng nht xy dng
ng dng GWT cng l cch tt nht xy dng web.
UiBinder ...
gip tng tnh dng li v d sa cha - n d dng to giao din ngi
dng t u hoc sao chp / dn qua cc template
lm nh thit k giao din thoi mi hn vi XML, HTML v CSS ch
khng phi l Java m ngun;
cung cp mt s chuyn i dn dn trong qu trnh pht trin t gi
HTML (UIBinder) sang HTML thc, tng tc giao din ngi dng;
khuyn khch mt code HTML sch (mt mu khai bo XML) t hnh vi
ca chng trnh ca n (mt lp Java);
thc hin trit kim tra thi gian bin dch ca cross-references t
ngun Java ti XML v ngc li;
cung cp a ngn ng m hot ng tt vi GWT ca i18n v
khuyn khch s dng hiu qu hn cc ngun ti nguyn ca trnh duyt
bng cch lm cho n thun tin s dng HTML nh hn l cc yu t
nng hn trng lng-widget v cc panel.
Hello world
Di y l mt v d rt n gin ca mt UiBinder mu m khng c cha
cc widget, ch HTML:
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 25
7/26/2014
SVTH:
NGUYN XUN TUN
GVHD:
BCH DIP
PAGE 26
7/26/2014
SVTH:
NGUYN XUN TUN
Composite
@UiField
ListBox
listBox;
HelloWidgetWorld helloWorld =
new HelloWidgetWorld("able",
"baker", "charlie");
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 27
7/26/2014
SVTH:
NGUYN XUN TUN
'.
iu
ny
ni
rng
mi
class
trong
GVHD:
BCH DIP
PAGE 28
7/26/2014
SVTH:
NGUYN XUN TUN
</ul>
</g:HTML>
</g:west>
</g:DockLayoutPanel>
X l s kin n gin
Mt trong nhng mc tiu ca UiBinder l gim vic phi code Java trong
vic xy dng giao din. Ngoi ra cn c vic gim code x l cc action, v
d:
public class MyFoo extends Composite {
Button button = new Button();
public MyFoo() {
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
handleClick();
}
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 29
7/26/2014
SVTH:
NGUYN XUN TUN
});
initWidget(button);
}
void handleClick() {
Window.alert("Hello, AJAX");
}
Composite
public MyFoo() {
initWidget(button);
}
@UiHandler("button")
void handleClick(ClickEvent e) {
Window.alert("Hello, AJAX");
}
GVHD:
BCH DIP
PAGE 30
7/26/2014
SVTH:
NGUYN XUN TUN
GVHD:
BCH DIP
PAGE 31
7/26/2014
SVTH:
NGUYN XUN TUN
MyStyle
style;
/ ... /
void setEnabled(boolean enabled) {
getElement().addStyle(enabled ? : style.enabled() :
style.disabled());
getElement().removeStyle(enabled ? : style.disabled() :
style.enabled());
}
}
Cc
<ui:style>
yu
mt
mi
thuc
tnh,
type
GVHD:
BCH DIP
PAGE 32
7/26/2014
SVTH:
NGUYN XUN TUN
CssResource
GVHD:
BCH DIP
PAGE 33
7/26/2014
SVTH:
NGUYN XUN TUN
SpanElement
nameSpan;
@UiField(provided = true)
final Resources resources;
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 34
7/26/2014
SVTH:
NGUYN XUN TUN
CricketScores(String...
teamNames) {...}
GVHD:
BCH DIP
PAGE 35
7/26/2014
SVTH:
NGUYN XUN TUN
Mt li xut hin:
[ERROR] com.my.app.widgets.CricketScores has no default (zero args)
constructor. To fix this, you can define a @UiFactory method on the
UiBinder's owner, or annotate a constructor of CricketScores with
@UiConstructor.
khc phc li ny, bn c th s dng annotation @UiFactory nh sau:
public class UserDashboard extends Composite {
interface MyUiBinder extends UiBinder<Widget,
UserDashboard>;
private static final MyUiBinder uiBinder =
GWT.create(MyUiBinder.class);
private final
String[]
teamNames;
GVHD:
BCH DIP
PAGE 36
7/26/2014
SVTH:
NGUYN XUN TUN
GVHD:
BCH DIP
PAGE 37
7/26/2014
SVTH:
NGUYN XUN TUN
GWT.create(BlueBinder.class);
HasText titleField;
SourcesChang`eEvents
@UiField
@UiField
pickerSelect;
FooPickerDisplay(UiBinder<Widget,
FooPickerDisplay> binder) {
protected
initWidget(uiBinder.createAndBindUi(this));
1.4.
Giao tip vi my ch
Ging vi tt c cc ng dng ch/khch khc, cc ng dng AJAX cn phi
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 38
7/26/2014
SVTH:
NGUYN XUN TUN
Google Appengine
2.
Jetty
2.1.
GAE Service
2.2.1.
Google Accounts
GVHD:
BCH DIP
PAGE 39
7/26/2014
SVTH:
NGUYN XUN TUN
Blobstore
Storing data
Bigtable l 1 DBMS do Google pht trin v ch c s dng trong ni b
cc sn phm ca Google. Mc tiu chnh l nhm tng cao hiu nng cng nh
khi lng d liu c th lu tr c. GAE cho php chng ta s dng min ph
1GB d liu i vi mi ng dng. GAE cung cp kh nng truy xut c s d
liu qua DataNucleus da trn JDO v JPA c bn.
3.
M hnh MVP
Da theo mt video ca google: GoogleWebToolkitBestPractices trong hi
GVHD:
BCH DIP
PAGE 40
7/26/2014
SVTH:
NGUYN XUN TUN
Trong lp trnh web vic tch code x l khi h thng giao din l rt cn
thit, to ra kh nng x l c lp cho giao din.
Vic tch ri d liu khi giao din cng s to ra c nhiu giao din khc
nhau cho cc cch th hin khc nhau.
Code x l t trong UI gy kh khn cho vic kim tra v gy phc tp v
trng lp code. Vic kim tra cc UI thng hoc phi chy ng dng th cng
hoc s dng kch bn (script) thc hin vic tng tc t ng ln cc UI, do
s tn nhiu chi ph v thi gian hn kim tra cc x l bn trong thnh
phn ny. Vic tch cc x l ny ra ngoi ra cn tng tnh ti s dng code v d
bo tr hn.
Phng php gii quyt l m hnh MVC (Model-View-Controller) v mt
mu kin trc tha k l MVP.
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 41
7/26/2014
SVTH:
NGUYN XUN TUN
GVHD:
BCH DIP
PAGE 42
7/26/2014
SVTH:
NGUYN XUN TUN
4.
Presenter
Bn c th bt u lm vic trn mt Presenter. To MainPagePresenter vi
GVHD:
BCH DIP
PAGE 43
7/26/2014
SVTH:
NGUYN XUN TUN
4.2.
View
To mi class MainPageView implements t MainPagePresenter.MyView.
Proxy
y l mt cha kha cho vic dt b im yu ln nht ca AJAX trong vic
giao tip vi trnh duyt, vic s dng nt back m ngi s dng vn quen dng
khi mun quay li trang trc hay hnh ng trc .
To mi class MainPageProxy implements t MainPagePresenter.MyProxy.
Cn nh du construtor vi ch thch @ProxyStandard hoc @ProxyCodeSplit
xc nh xem mun presenter v view s dng cch chia code no. xc nh
v tr ca presenter, trn thanh a ch, ta cn nh du vi annotation @Name
Token(main).
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
4.4.
GVHD:
BCH DIP
PAGE 44
7/26/2014
SVTH:
NGUYN XUN TUN
Model
Sau khi c Presenter v view, chng ta cn truyn nhn d liu t server. C
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 45
7/26/2014
SVTH:
NGUYN XUN TUN
2.
Pht biu yu cu
Yu cu xy dng mt h thng qun l ni dung ca mt website.
M t v thnh phn, cu trc mt website:
B cc, ni dung website : Bao gm cc web page, mi trang web gm
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 46
7/26/2014
SVTH:
NGUYN XUN TUN
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
2.
2.1.
GVHD:
BCH DIP
PAGE 47
7/26/2014
SVTH:
NGUYN XUN TUN
c t cc use case
Qun tr hin th thng tin v giao din
Qun l trang
Tm tt:
- Qun l trang l use case qun tr vin giao din web c th thm sa
xa, cu hnh cc trang.
Tc nhn:
- Qun tr vin giao din web (QTVWeb)
Lung s kin chnh
- QTVWeb vo chc nng qun l trang web.
- H thng hin th cc trang ang tn ti trong h thng.
- QTVWeb c th chn hoc l to trang mi hoc sa, xa trang c
trc .
- Vic to mi, sa trang lin quan n cc thng tin: tn trang, layout, v
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 48
7/26/2014
SVTH:
NGUYN XUN TUN
Tm tt:
- Cu trc menu l ng v ngi qun tr c th ty bin bng giao din
thm sa xa cc menu v cu trc cc menu. Menu c kiu cha con
nhiu cp.
Tc nhn:
- QTVWeb
Lung s kin chnh
- QTVWeb vo chc nng qun l menu.
- H thng hin th cc menu ang tn ti trong h thng.
- QTVWeb c th chn hoc l to menu mi hoc sa, xa menu c
trc .
- Vic to mi, sa menu lin quan n cc thng tin v menu: tn, nhm
menu, ng link.
2.1.3.
Qun l skin
Tm tt:
- H thng cho php QTVWeb qun l skin cho ton trang web
Tc nhn:
- QTVWeb
Lung s kin chnh
- QTVWeb vo chc nng qun l skin.
- H thng hin th cc skin ang tn ti trong h thng.
- QTVWeb c th chn hoc l upload skin mi hoc sa, xa skin c
trc .
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 49
7/26/2014
SVTH:
NGUYN XUN TUN
Qun l layout
Tm tt:
- H thng cho php QTVWeb qun l cc layout trang web
GVHD:
BCH DIP
PAGE 50
7/26/2014
SVTH:
NGUYN XUN TUN
H cung cp tnh nng mm do cho php ngi qun tr thit lp trng thi
hin th hay khng hin th cc module ln website
2.1.6.
Qun tr cu hnh
H thng c cu hnh thng qua giao din website, cc thng tin cu hnh
c lu trong database, ngi qun tr c th thay i v ty bin, h thng c
c ch t ng np li cc cu hnh ny t database. Cc chc nng c bn:
Cu hnh search engine: Cc tiu ch tm kim, ty bin danh mc tm
kim, kch thc trang, s trang hin th, mc tm kim (trn ton b
database, trn mt s bng),
Ci t, cu hnh logging: Cho php ngi qun tr cu hnh ghi log ra
file, vo database, hay mail, Cu hnh cp log (ERROR, WARNING,
DEBUG,), cu hnh log c th trn cc package.
Khi ng, tm ngng / tip tc chy ton b h thng.
Cho php Tt / Bt mt s chc nng h thng.
Ngi qun tr h thng c kh cu hnh cc thng tin trn mt cch linh
ng trn giao din ca chng trnh.
Mt s cu hnh chn la ban u khng th thay i v nh hng n s
ng b ca h thng (v d: user name hay ch mnh mail)
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
2.2.
GVHD:
BCH DIP
PAGE 51
7/26/2014
SVTH:
NGUYN XUN TUN
Tm tt:
- Chc nng cho php qun l cc loi ni dung khc nhau nh news,
video, image, Trong mi loi ni dung phn chia thnh cc ch
tin cho vic phn loi, sp xp.
Tc nhn:
- Qun tr vin ni dung (QTVND)
Lung s kin chnh
- QTVND vo chc nng qun l ch .
- H thng hin th cc ch ang tn ti trong cc loi ni dung.
- QTVND c th thc hin vic thm sa xa cc ch , loi ni dung.
- QTVND c th nh ngha cc trng ca loi ni dung
- Vic to mi, sa skin lin quan n cc thng tin v loi ni dung: tn,
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 52
7/26/2014
SVTH:
NGUYN XUN TUN
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 53
7/26/2014
SVTH:
NGUYN XUN TUN
2.3.
H thng cung cp h thng qun tr ngi dng thn thin vi cc chc nng
chnh:
Thm sa xa ngi dng
Tm kim ngi dng
Phn nhm ngi dng
Phn quyn cho nhm ngi dng
Phn quyn cho ngi dng
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 54
7/26/2014
SVTH:
NGUYN XUN TUN
H thng cho php cu hnh xem c cho php ngi dng ng k thnh vin
khi tham quan trang web hay khng. Mi thnh vin c th s dng mt ti
khon duy nht trn ton h thng.
ng k thnh vin mi
Ngi dng khi tham quan trang web c th chn cha nng ng k thnh
vin mt cch d dng, ban u ch c mt s thng tin c bn nh:
Tn ng nhp
Mt khu ng nhp
a ch email
C cu hnh cho php username l mail lun hay khng.
Thnh vin mi ng k cha th s dng ti khon c ngay m cn phi
ch c duyt. (C cu hnh)
Kch hot ti khon
GVHD:
BCH DIP
PAGE 55
7/26/2014
SVTH:
NGUYN XUN TUN
H thng cho php ngi qun tr phn quyn ngi dng theo cc nhm khc
nhau d qun l cng nh c th gn cho cc nhm ngi dng nhng quyn
hp l.
H thng qun tr website cn c phn cp phn quyn mt cch r rng,
mm do v linh hot, mi mt ngi qun tr c php thc hin mt s chc
nng nht nh thng qua vic gn quyn (Assign) hay hn ch chc nng (Limit).
3.
Thit k d liu
GVHD:
BCH DIP
PAGE 56
7/26/2014
SVTH:
NGUYN XUN TUN
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS
GVHD:
BCH DIP
PAGE 57
7/26/2014
SVTH:
NGUYN XUN TUN
Kt lun
Do thi gian c hn v m m qu nhiu th nn sn phm t ra ban u ca
em i vi n l cha hon chnh, tuy nhin qua n ny em vn t c
mt s nhng thnh qu nht nh trong vic hc tp v nghin cu, sn phm c
hi vng p dng thc t cao.
Qua qu trnh thc hin n, em hc hi c rt nhiu kin thc b ch
v cch thc gii quyt mt bi ton c th, v kh nng tm hiu cng ngh, c
bit l vic cng c cc kin thc v cc mn hc chuyn ngnh, c th:
Kin thc v cng ngh: vic s dng ngn ng lp trnh Java cho vic lp
trnh web. Tip cn cc sn phm opensource ca Google. Cc k nng lp
trnh.
Kin thc v Phn tch v thit k h thng: l qu trnh tip cn mt
bi ton, k nng kho st hin trng v xc lp bi ton, k nng phn tch
h thng v chc nng, d liu, k nng thit k h thng
ti: Tm hiu Google Web Toolkit, Google App Engine v xy dng h thng qun tr ni dung CMS