Tải bản đầy đủ (.doc) (70 trang)

Báo Cáo Thực Tập Tốt Nghiệp : Ngiên cứu và xây dựng ứng dụng trên Google Web Toolkit

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.39 MB, 70 trang )

Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Báo Cáo Thực Tập Tốt Nghiệp
Đề tài : Ngiên cứu và xây dựng ứng dụng trên Google Web Toolkit
GVHD : Thầy Nguyễn Trung Phú
Nhóm thực hiện :
STT

Họ Tên

Điện thoại

Email

1

Đỗ Kim Bảo

0973 868 796



2

Nguyễn Thị Lệ

0934 206 818




Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 1


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

LỜI MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của công nghệ thông tin, hầu hết các ứng
dụng tin học đã được ứng dụng trong mọi lĩnh vực nghiên cứu khoa học cũng như
đời sống con người. Nó đã trở thành công cụ hữu ích cho con người trong các hoạt
động, lưu trữ, xử lý thông tin một cách nhanh chóng, đem lại hiệu quả cao nhất
cho con người. Vì vậy chúng em đăng ký làm đồ án tốt nghiệp với mong muốn
tiếp cận được nhiều kiến thức mới, áp dụng những gì đã học được vào thực tế, từ
đó sẽ giúp chúng em hoàn thiện kiến thức hơn để làm việc một cách hiệu quả sau
này.
Như ta đã thấy, ứng dụng công nghệ thông tin đang đóng vai trò rất quan trọng
trong cuộc sống con người. Nó giúp con người quản lý được những hệ thống lớn,
phức tạp như nhà hàng, siêu thị… Nhằm khai thác thế mạnh của ứng dụng công
nghệ thông tin trong quản lý, đặc biệt là ứng dụng trên nền tảng JAVA em đã chọn
đề tài “Ngiên cứu và xây dựng ứng dụng trên Google Web Toolkit”. Hệ thống sẽ
giúp việc bán hàng trờ nên nhanh chóng, giảm được nhiều chi phí do không phải
thuê nhiều nhân viên phục vụ.
Mặt khác, chúng em chọn đề tài này nhằm mục đích tìm hiểu sâu hơn về công
nghệ JavaWeb và phát triển các ứng dụng trên nền tằng của Google.

Trong quá trình làm đồ án, chúng em xin cảm ơn Thầy Nguyễn Trung Phú đã
hướng dẫn và giúp đỡ chúng em trong quá trình thực hiện và hoàn thành đồ án
này.
Nhóm thực hiện.
Đỗ Kim Bảo
Nguyễn Thị Lệ

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 2


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

TÓM TẮT ĐỒ ÁN
Đề tài : “Ngiên cứu và xây dựng ứng dụng trên Google Web Toolkit” :
Ngày nay, với sự phát triển không ngừng của thế hệ Web 2.0, việc xây
dựng 1 ứng dụng chạy trên nền web, gọi tắt là RIA (Rich Internet Application) đã
trở nên khá phổ biến. Các ứng dụng này sử dụng công nghệ AJAX (Asynchronous
Javascript + XML) và có thể hoạt động hoàn toàn như 1 ứng dụng chạy trên nền
desktop. Hiện tại có khoảng 200-300 framework/toolkit do nhiều nhà phát triển
khác nhau cung cấp cho việc xây dựng các ứng dụng RIA, nổi bật có Flash/Flex
(Adobe), Silverlight (Microsoft), Google Web Toolkit (Google) … và mới đây là
sự phát triển mạnh mẽ của html5 trên các hệ máy của Apple.
Việc xây dựng ứng dụng trên nền web có khá nhiều lợi thế so với ứng dụng
desktop thông thường. Trong khi 1 ứng dụng desktop thông thường sẽ phải tốn
nhiều chi phí cho việc cài đặt, bảo trì, nâng cấp trên từng máy tính thì ứng dụng

trên web có thể chạy bất cứ nơi đâu thông qua 1 trình duyệt web mà không hề phải
cài đặt. Tuy nhiên, những ứng dụng trên web vẫn tồn tại những hạn chế nhất định,
đó là khả năng hỗ trợ ứng dụng, các control không mạnh bằng ứng dụng desktop,
tốc độ chương trình phụ thuộc vào server, đường truyền.
 Vấn đề 1 : Nghiên cứu : Tìm hiểu về GWT : các đặc điểm, cách sử dụng, các plugin, công nghệ hỗ trợ cho GWT, nhận xét ưu khuyết điểm so với các framework
trong việc xây dựng ứng dụng trên nền web.
 Vấn đề 2 : Xây dựng ứng dụng : Xây dựng và phát triển thành công 1 hệ thống sử
dụng được cho cho nhà hàng dựa trên công nghệ GWT đã nghiên cứu. Đề tài sử
dụng công nghệ Google web toolkit với thư viện mã nguồn mở SmartGWT được
xây dựng và phát triển bởi google để xây dựng hệ thống quản lí công việc đặt bàn
ăn tại chỗ và trực tiếp qua mạng internet cho nhà hàng khách sạn:
- Ứng dụng chạy trên nền Web, khắc phục những hạn chế của ứng dụng desktop
thông thường, có thể chạy trên mọi trình duyệt với tốc độ cao.
- Quản lý việc đặt bàn, phục vụ khách và thanh toán trên giao diện tương tác có độ
tiện dụng cao.
- Hiển thị theo từng view của người dùng đã đăng nhập, cho phép thao tác trên thiết
bị theo view của người dùng đó.
- Cho phép người dùng xem, tìm kiếm bàn ăn, món ăn, vị trí thời gian, thực hiện đề
nghị gọi món, đặt bàn … trên từng thiết bị hay theo đơn.
- Xem chi tiết về từng món ăn, từng vị trí bàn ăn.
- Có chức năng quản lý bàn, quản lý nhân viên, quản lý user: quản lý tình trạng chi
tiết về trạng thái, báo cáo khi có thông tin sai sót.
- Đảm bảo tính chính xác của dữ liệu.

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 3


Hà Nội University of Industry


Thực Tập Tốt
Nghiệp

MỤC LỤC
CHƯƠNG I : GIỚI THIỆU TỔNG QUAN.................................................................................................................7
CHƯƠNG II : NGHIÊN CỨU VỀ GWT....................................................................................................................8
Hình 4.1.3 : SplitLayoutPanel....................................................................................................................................18
Hình 4.1.5 : TabLayoutPanel.....................................................................................................................................19
Hình 4.2.2 : PushButton Widget................................................................................................................................19
Hình 4.2.3 : RadioButton Widget...............................................................................................................................19
Hình 4.2.4 : Checkbox Widget...................................................................................................................................20
Hình 4.2.5 : DatePicker Widget.................................................................................................................................20
Hình 2.4.6 : ToggleButton widget..............................................................................................................................20
Hình 2.4.7 : TextBox Widget......................................................................................................................................20
Hình 4.2.8 : PasswordTextBox widget.......................................................................................................................20
Hình 4.2.8 : TextArea widget.....................................................................................................................................21
Hình 4.2.9 : Hyperlink widget....................................................................................................................................21
Hình 4.2.10 : ListBox widget......................................................................................................................................21
Hình 4.2.11 : MenuBar widget...................................................................................................................................21
Hình 4.2.12 : Tree widget...........................................................................................................................................21
Hình 4.2.13 : SuggestBox widget...............................................................................................................................22
Hình 4.2.14 : RichTextArea widget............................................................................................................................22
Hình 4.2.15 : Table widget.........................................................................................................................................22
Hình 4.2.16 : TabBar widget......................................................................................................................................23
Hình 4.2.18 : PopupPanel widget..............................................................................................................................23
Hình 4.2.23 : VerticalSplitPanel widget....................................................................................................................24
Hình 4.2.24 : HorizontalSplitPanel...........................................................................................................................25
Hình 4.2.26 : DockPanel and DockLayoutPanel......................................................................................................25
Hình 4.2.27 : TabPanel and TabLayoutPanel...........................................................................................................25


Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 4


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

DANH SÁCH HÌNH VẼ
CHƯƠNG I : GIỚI THIỆU TỔNG QUAN.................................................................................................................7
CHƯƠNG II : NGHIÊN CỨU VỀ GWT....................................................................................................................8
Hình 4.1.3 : SplitLayoutPanel....................................................................................................................................18
Hình 4.1.5 : TabLayoutPanel.....................................................................................................................................19
Hình 4.2.2 : PushButton Widget................................................................................................................................19
Hình 4.2.3 : RadioButton Widget...............................................................................................................................19
Hình 4.2.4 : Checkbox Widget...................................................................................................................................20
Hình 4.2.5 : DatePicker Widget.................................................................................................................................20
Hình 2.4.6 : ToggleButton widget..............................................................................................................................20
Hình 2.4.7 : TextBox Widget......................................................................................................................................20
Hình 4.2.8 : PasswordTextBox widget.......................................................................................................................20
Hình 4.2.8 : TextArea widget.....................................................................................................................................21
Hình 4.2.9 : Hyperlink widget....................................................................................................................................21
Hình 4.2.10 : ListBox widget......................................................................................................................................21
Hình 4.2.11 : MenuBar widget...................................................................................................................................21
Hình 4.2.12 : Tree widget...........................................................................................................................................21
Hình 4.2.13 : SuggestBox widget...............................................................................................................................22
Hình 4.2.14 : RichTextArea widget............................................................................................................................22

Hình 4.2.15 : Table widget.........................................................................................................................................22
Hình 4.2.16 : TabBar widget......................................................................................................................................23
Hình 4.2.18 : PopupPanel widget..............................................................................................................................23
Hình 4.2.23 : VerticalSplitPanel widget....................................................................................................................24
Hình 4.2.24 : HorizontalSplitPanel...........................................................................................................................25
Hình 4.2.26 : DockPanel and DockLayoutPanel......................................................................................................25

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 5


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.2.27 : TabPanel and TabLayoutPanel...........................................................................................................25

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 6


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

CHƯƠNG I : GIỚI THIỆU TỔNG QUAN.

1. Lý do chọn đề tài.
 Google Web Toolkit :
- GWT là một Java framework mã nguồn mở cho phép bạn thoát khỏi ma trận các
công nghệ để viết các ứng dụng AJAX quá khó khăn và nhiều lỗi. Với GWT, bạn
có thể phát triển và kiểm tra lỗi các ứng dụng AJAX bằng ngôn ngữ Java, sử dụng
các công cụ phát triển Java tuỳ theo ý thích. Khi bạn triển khai ứng dụng của
mình, bộ biên dịch của GWT sẽ dịch ứng dụng Java của bạn sang Javascript và
HTML.
- GWT nhấn mạnh đến tính tái sử dụng, những giải pháp hiệu quả để chống lại
những thách thức mà AJAX gặp phải.
 Ứng dụng :
- Việc xây dựng ứng dụng trên nền web có khá nhiều lợi thế so với ứng dụng
desktop thông thường. Trong khi 1 ứng dụng desktop thông thường sẽ phải tốn
nhiều chi phí cho việc cài đặt, bảo trì, nâng cấp trên từng máy tính thì ứng dụng
trên web có thể chạy bất cứ nơi đâu thông qua 1 trình duyệt web mà không hề phải
cài đặt. Tuy nhiên, những ứng dụng trên web vẫn tồn tại những hạn chế nhất định,
đó là khả năng hỗ trợ ứng dụng, các control không mạnh bằng ứng dụng desktop,
tốc độ chương trình phụ thuộc vào server, đường truyền.
2. Đối tượng nghiên cứu.
- Plugin for Eclips
- GWT Designer.
- Tìm hiểu về lập trình ứng dụng với công cụ Google Web Toolkit
- Xây dựng và phát trieent ứng dụng trên nền tảng Java với công cụng
GoogleWebToolkit
3. Phạm vi nghiên cứu.
- Tìm hiểu về GWT : các đặc điểm, cách sử dụng, các plug-in, công nghệ hỗ trợ cho
GWT, nhận xét ưu khuyết điểm so với các framework trong việc xây dựng ứng
dụng trên nền web.
- Xây dựng và phát triển thành công 1 hệ thống sử dụng được cho cho nhà hàng dựa
trên công nghệ GWT đã nghiên cứu.

4. Môi trường và công cụ làm việc.
- Xây dựng ứng dụng trên môi trường Java với công cụ Eclips sử dụng các kiểu
Layout và Widgets của Google Web Toolkit.
- Sử dụng CSS và HTML dung trong thiết kế giao diện.

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 7


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

CHƯƠNG II : NGHIÊN CỨU VỀ GWT.
1. Giới thiệu về GWT.
- Google Web Toolkit (GWT) một bộ công cụ phát triển để xây dựng và tối ưu hoá
các ứng dụng phức tạp của trình duyệt web. Mục tiêu của nó là để cho phép phát
triển sản xuất của các ứng dụng web hiệu suất cao mà không cần các nhà phát
triển có được một chuyên gia trong quirks trình duyệt, XMLHttpRequest, và
JavaScript. GWT được sử dụng bởi nhiều sản phẩm tại Google, bao gồm cả
Google Wave và phiên bản mới của AdWords. Nó là mã nguồn mở, hoàn toàn
miễn phí, và được sử dụng bởi hàng ngàn nhà phát triển trên thế giới.
 Hộp công cụ của GWT
-

1.1.
-


1.2.
-

SDK: Các SDK GWT chứa các thư viện Java API, trình biên dịch, và máy chủ
phát triển. Nó cho phép bạn viết các ứng dụng phía máy khách trong Java và triển
khai chúng như JavaScript.
Speed Tracer: là một mở rộng Chrome cho phép bạn xác định các vấn đề hiệu suất
trong các ứng dụng web của bạn.
Plugin cho Eclipse IDE cung cấp hỗ trợ cho Google Web Toolkit và các dự án ứng
dụng web Công cụ.
GWT Designer: GWT Designer cho phép bạn tạo ra các giao diện người dùng
trong vài phút với các công cụ cho assist bố trí thông minh, kéo và thả, và thế hệ
mã tự động..
SDK.
Viết ứng dụng web cho nhiều trình duyệt có thể là một quá trình tẻ nhạt và dễ bị
lỗi. Bạn có thể dành 90% thời gian của bạn vào làm việc xugn quanh quirks trình
duyệt. Ngoài ra, xây dựng, tái sử dụng, và duy trì cơ sở mã hóa lớn javaScript và
ajax thành phần có thể cho là khó khăn và dễ vỡ.
Google web toolkit(GWT) giúp giảm bớt gánh nặng ngày bằng cách cho phép
cách nhà phát triển nhanh chóng xây dừng và duy trì phức tạp nhưng rất hiệu quả
javascript font-end ứng dụng trong ngôn ngữ lập trình java.
Bắt đầu với GWT SDK :
Bạn cần có bản SDK phiên bản 1.5 hoặc các phiên bản mới hơn. Nếu cần thiết bạn
có thể tải Java SE Development Kit (JDK) về và cài đặt cho nền tảng của mình.
Cài đặt Apache Ant .
Tải Google Web Toolkit SDK và giải nén ra, thư mục giải nén chứa các thư viện,
trình biên dịch và và máy chủ mà người dùng cần để viết các ứng dụng web
Speed tracer.
Speed tracer là một công cụ để giúp bạn xác định và sửa chữa các vấn đề về hiệu
suất trong các ứng dụng web của bạn. Nó hình dung các số liệu được lấy từ điểm

thiết bị đo đạc mức đọ thấp bên trong của trình duyệt và phân tích chúng như chạy
ứng dụng của bạn. Speed Tracer có sãn như là một phần mở rộng của Chrome và
hoạt động trên tất cả các nền tảng mở rộng được hỗ trợ (Windows và Linux)

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 8


Hà Nội University of Industry

-

1.3.
-

1.4.
-

-

Thực Tập Tốt
Nghiệp

Sử dụng Speed Tracer bạn có thể có được hình ảnh tốt hơn ở một nơi mà thời gian
đang được chi tiêu trong ứng dụng của bạn. Điều này bao gồm các vấn đề gây ra
bởi phần tích cú pháp và thực thi Java Script, bố trí, tính toán lại theo CSS và phù
hợp hơn với chọn, xử lý sự kiện DOM, tải tài nguyên mạng…
Plugin cho Eclipse.
Google Web Toolkit cung cấp một bộ công cụ mà chỉ đơn giản có thể sử dụng

được với một trình soạn thảo văn bản, dòng lệnh, và một trình duyệt. Tuy nhiên,
bạn cũng có thể sử dụng GWT với IDE yêu thích của bạn. Google cung cấp một
plugin cho Eclipse làm cho phát triển với GWT thậm chí còn dễ dàng hơn.
GWT designer.
GWT Designer là một bi- directional Java mạnh mẽ và dễ sử dụng giao diện đồ
họa thiết kế mà làm cho nó rất dễ dàng để tạo ra các giao diện ứng dụng GWT mà
không cần tốn rất nhiều thời gian để viết mã để hiển thị các hình thức đơn giản.
Với GWT Designer bạn có thể tạo ra các cửa sổ phức tạp chỉ trong vài phút. Sử
dụng các thiết kế trực quan và mà Java sẽ được tạo ra cho bạn. Bạn có thể dễ dàng
thêm các điều khiển bằng cách sử dụng kéo và thả, thêm xử lí sự kiện để điều
khiển, thay đổi các thuộc tính khác nhau của các điều khiển bằng cách sử dụng
một trình soạn thảo.
GWT Designer được xây dựng như một plug-in cho Eclipse và Eclipse IDE khác
nhau(RAD, RSA, MyEclipse, JBuilder,vv). Trong xây dựng cú pháp trừu tượng
(AST) để điều hướng các mã nguồn và sử dụng GEF để hiển thị và quản lý trình
bày trực quan. SỬ dụng các công cụ bố trí WYSIWYG, bạn không cần thiết phải
viết bất kì một dòng mã jav mã sẽ tạo ra cho bạn GWT Designer.

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 9


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

2. Cấu trúc GWT.


Hình 2.1 : Cấu trúc GWT

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 10


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 2.2 : Các thành phần trong GWT

 Thành phần cấu trúc GWT :
- GWT Java-to-JavaScript Compiler: dịch ngôn ngữ lập trình java sang ngôn ngữ
lập trình java script.
- Hosted của trình duyệt web GWT: cho phép bạn chạy và thực thi các ứng dụng
GWT của bạn trên Hosted mode, nơi mà mã của bạn chạy như java trong Java
Virtual Machine mà không cần biên dịch java script.
- Mô phỏng thư viên JRE: GWT có chứa java script triển khai của các lớp thư viện
java tiêu chuẩn.
- GWT web UI class library.
3. Cơ sở dữ liệu trong GWT.
- Thiết kế cơ sở dữ liệu có khả năng mở rộng cao, các ứng dụng nặng về cơ sở dữ
liệu có thể gặp phức tạp. Nếu bạn đã từng sử dụng một thiết bị phần cứng hoặc
phần mềm nào để điều chỉnh load dữ liệu, thì bạn biết rằng những người dùng của
bạn có thể tích hợp với một hoặc nhiều trang web sử dụng cùng một máy chủ cơ
sở dữ liệu. Một yêu cầu của người sử dụng có thể không được phục vụ từ cùng
một máy chủ xử lý yêu cầu trước đó của người sử dụng. Những máy chủ có thể

được trải rộng ra trong trung tâm dữ liệu khác nhau hoặc có lẽ trong các quốc gia
khác nhau, yêu cầu bạn thực hiện các quy trình để giữ cho dữ liệu của bạn an toàn,
bí mật và đồng bộ. Phần cứng và phần mềm cần thiết để mở rộng ứng dụng của
bạn có thể phức tạp và đắt tiền, và thậm chí có thể khiến bạn phải đi thuê các
nguồn lực ở bên ngoài.
- Với App Engine Goolge sẽ giải quyết tất cả những vấn đề đó của bạn, kho dữ liệu
App Engine cung cấp dịch vụ phân phân phối, nhân rộng và điều chỉnh dữ liệu,
giải phóng bạn tập trung bạn vào việc thực hiện logic kinh doanh thương mại.
Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 11


Hà Nội University of Industry

-

-

-

-

-

-

-

-


Thực Tập Tốt
Nghiệp

Kho dữ liệu App Engine được cung cấp chủ yếu bởi hai dịch vụ của Google:
Bigtable và Google File System(GFS)
Bigtable là một dịch vụ phân phối và khả năng mở rộng để lưu trữ và quản lý cấu
trúc dữ liệu. Nó được thiết kế để mở rộng đến một kích thước rất lớn với petabyet
dữ liệu trên hàng ngàn máy chủ thành nhóm. Đó là dịch vụ tương tụ Google sử
dụng cho hơn 60 dự án riêng của mình bao gồm lập chỉ mục web, google finance
và google earth.
Kho dữ liệu cũng sử dụng GFS để lưu trữ dữ liệu và các tập tin đăng nhập. GFS là
một khả năng mở rộng hệ thống tập tin được thiết kế chịu lỗi lớn, phân phối các
ứng dụng dữ liệu chuyên sâu như Gmail và YouTobe. Ban đầu được phát triển để
lưu trữ dữ liệu thu thập dữ liệu và tìm kiếm chỉ số, GFS hiện đang được sử dụng
rộng rãi để lưu trữ nội dung người dùng tạo ra rất nhiều sản phẩm của Google.
Bigtable lưu trữ dữ liệu như các entities với thuộc tính được định nghĩa giống như
là khách hàng,nhóm hàng hoặc là sản phẩm . Những entities cùng loại không yêu
cầu phải có thuộc tính khác nhau hoặc cùng một loại giá trị cho các thuộc tính
giống nhau.
Truy vấn Bigtable các thực thể của cùng một loại và có thể sử dụng các bộ lọc và
các xắp xếp trên cả hai khóa và các giá trị thuộc tính. Nó cũng có thể truy vấn
bằng chỉ số index, kết quả ấn tượng ngay cả với bộ dữ liệu rất lớn. Dịch vụ này
cùng hộ trợ giao dịch thông tin cập nhật về nhóm duy nhất được xác định ứng
dụng của các entities.
Các kho dữ liệu App Engine là một kho dữ liệu đối tượng schemaless cung cấp
mạnh mẽ,khả năng mở rộng lưu trữ cho các ứng dụng web của bạn, không có kế
hoạch thời gian chết, giao dịch nguyên tử, sẵn sàng đọc và ghi, nhất quán mạnh
mẽ cho lần đọc và truy vấn và tính thống nhất cuối cùng cho tất cả các truy vấn
khác. Các kho dữ liệu Java SDK bao gồm việc triển khai của các đối tượng dữ liệu

java(JDO) và giao diện Java Persistence API(JPA), cũng như một kho dữ liệu API
cấp thấp.
App Engine Java SDK cung cấp một API kho dữ liệu ở mức độ thấp với các hoạt
động đơn giản trên các thực thể bao gồm lấy, tạo,xóa và truy vấn. Bạn chỉ có thể
sử dụng API này ở mức độ thấp trực tiếp trong các ứng dụng của bạn, hoặc sử
dụng nó như là một cơ sở dữ liệu trên đó để thực hiện bộ diều hợp giao diện khác.
SDK cũng bao gồm việc triển khai của các đối tượng dữ liệu java(JDO) và java
Persistence API(JPA). Các giao diện tiêu chuẩn bao gồm các cơ chế để xác định
các lớp học cho các đối tượng dữ liệu và thực hiện truy vấn.
Ngoài ra các frameworks và kho dữ liệu API, java hỗ trợ các frameworks khác
được thiết kế đơn giản hóa việc sử dụng kho dữ liệu cho các nhà phát triển java.
Nhiều nhà pháp triển Java sử dụng các khuôn khổ, đội ngủ google app engine
khuyến cáo và khuyến khích bạn nghiên cứu chúng:
Objectify : là một giao diện rất đơn giản và thuận tiện để các kho dữ liệu google
app engine giúp bạn tránh một số sự phức tạp được trình bày bởi JDO/JPA và kho
dữ liệu cấp thấp

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 12


Hà Nội University of Industry

3.1.
-

Thực Tập Tốt
Nghiệp


Twig: là một đối tượng giao diện cấu hình để cải thiện hỗ trợ cho tính đa hình,
thừa kế và các laoij chung chung, Twig giúp bạn tránh phức tạp gây ra bởi JDO và
kho dữ liệu cấp thấp.
Slim3 là khuôn khổ một ngăn xếp mô hình mà bạn có thể sử dụng cho nhiều chức
năng AppEngine , bao gồm(nhưng không giới hạn) kho dữ liệu.
Trong ứng dụng này, chúng tôi đi sâu và nghiên cứu về Objectify.
Entities: Một thực thể là một giá trị của một đối tượng của dữ liệu trong kho dữ
liệu. Sử dụng objectify, một thực thể sẽ tương ứng với lớp đơn POJO duy nhất bạn
xác định. Trong cơ sở dữ liệu, một thực thể là một đối tượng.
Các hoạt động của entities:
put() tạo một entiy trong cơ sở dữ liệu, bạn có thể lưu trữ nhiều entities trong
cùng một lúc.
delete() xóa một entity từ cơ sử dữ liệu, bạn có thể xóa nhiều entity cùng một lúc
query() lấy ra những entity theo yêu cầu.
get() lây một entity.
Key entity: tất cả entity có Long id hoặc là String name, mỗi giá trị đó là duy nhất
cho một entity. Trong cơ sử dữ liệu các thực thể được xác định bởi id hoặc tên và
loại tương ứng với cá đối tượng ban đang muốn lưu trữ.
Định nghĩ một entity classes.
Định nghĩa một entity có tên entity, id entity,và các thuộc tính khác. Các kiểu của
thuộc tính bao gồm: string, integer, long…
Ví dụ:
public class Car
{
@Id Long id;
String vin;
int color;
private Car() {}
public Car(String vin, int color)
{

this.vin = vin;
this.color = color;
}
}

3.2.
-

Đăng kí class.
Trước khi bạn thực thi bất kì một hành động nào với cơ sở dữ liệu, bạn phải đăng
kí entity class:
ObjectifyService.register(Car.class);

3.3.

Hoạt động cơ bản: get(),put(),delete().
Objectify ofy = ObjectifyService.begin();
// tạo mới một Car
Car porsche = new Car("2FAST", "red");
ofy.put(porsche);
Car fetched1 = ofy.get(new Key<Car>(Car.class, porsche.id));
/ Change some data and write it
porsche.color = "blue";
ofy.put(porsche);

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 13



Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

// Delete it
ofy.delete(porsche);

3.4.
-

Mối quan hệ giữa các entities.
Một quan hệ chỉ đơn giản là một khóa được lưu trữ như là một trường dữ liệu
trong một thực thể. Có 3 loại quan hệ
3.4.1. Quan hệ cha con.
- Một thực thể có thể có một trường khóa đơn để chỉ tới cha với cấu trúc @Parent.
Ví dụ :
public class Person{
@Id Long id;
String name;
}
public class Car
{
@Id Long id;
@Parent Key<Person> owner;
String color;
}

-


Mỗi thực thể Car là một phần của cha và cả hai có thể được truy cập trong một
giao dịch đơn giản. Khi load những entity con, khóa cảu cha cũng sẽ được sử
dụng để sinh ra khóa cho con.
Objectify ofy = ObjectifyService.begin();
Key<Person> owner = new Key<Person>(Person.class, somePersonId);
Car someCar = ofy.get(new Key<Car>(owner, Car.class, someCarId));

3.4.2. Quan hệ một nhiều.
- Trong objectify(và tầng dưới của cơ sở dữ liệu), những khóa là thuộc tính giống
như một giá trị khác. Khi nào nó định nghĩa quan hệ một- một hoặc là quan hệ một
nhiều. Hơn nữa, một trường khóa có thể tham chiếu tới bất kì loại lớp thực thể
nào.
Quan hệ một – một
public class Person
{
@Id String name;
Key<Person> significantOther;
}
Objectify ofy = ObjectifyService.begin();
Person bob = ofy.get(Person, "bob");
Person bobswife = ofy.get(bob.significantOther);

Quan hệ một nhiều:
public class Employee
{
@Id String name;
Key<Employee> manager;
}
Objectify ofy = ObjectifyService.begin();
Employee bob = ofy.get(Employee.class, "bob");

Employee fred = ofy.get(bob.manager);

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 14


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

3.4.3. Quan hệ nhiều nhiều.
Ví dụ
public class Employee
{
@Id String name;
Key<Employee>[] subordinates;
}
Objectify ofy = ObjectifyService.begin();
// should contain Fred
Iterable<Employee> managers = ofy.query(Employee.class).filter("subordinates", bob);

4. Các thành phần giao diện trong GWT.
4.1. Các kiểu Layout.
 RootPanel
- RootPanel là panel gốc, từ đó tất cả các panel khác mới có thể thêm vào. Hàm
RootPanel.get() được một panel duy nhất bao lấy thẻ <body>. Sử dụng hàm
RootPanel.get(String id) để có được một panel bao ngoài một phần tử bất kỳ trên
trang.

 FlowPanel
- FlowPanel là panel đơn giản nhất. Nó tạo ra một thẻ đơn <div> và có thể put các
thẻ khác vào mà không cần sửa đổi. Sử dụng nó trong trường hợp bạn muốn layout
các phần tử HTML con một cách tự nhiên.
 HTMLPanel
- Panel này cung cấp một cách đơn giản để xác định một cấu trúc HTML, trong đó
widget sẽ được nhúng vào tại các điểm được xác định. Bạn có thể sử dụng nó trực
tiếp. Panel này được sử dụng phổ biến nhất trong UiBinder templates.
 FormPanel
- Khi muốn tạo một form HTML (ví dụ, đối với tương tác với các máy chủ mà sử
dụng phương thức POST), có thể sử dụng một FormPanel. Các widget được bao
bởi FormPanel sẽ được bao bởi thẻ <form> khi sinh ra HTML.
 ScrollPanel
- Khi muốn tạo một vùng cuộn bên trong panel khác, bạn nên sử dụng ScrollPanel.
Panel này hoạt động tốt khi phần tử có kích thước cố định nhưng các phần từ bên
trong lại chưa rõ ràng.
 PopupPanel và DialogBox
- Sử dụng hai panel này để tạo popup và hộp thoại. Chúng có thể chồng lên trên cửa
sổ trình duyệt, và có thể được xếp chồng lên nhau.
 Grid và FlexTable
- Hai widgets được sử dụng để tạo ra bảng, thẻ HTML <table>, và có thể cũng được
sử dụng như panel, bất kỳ phần tử nào đều có thể được bổ sung vào các cells của
bảng.
 RootLayoutPanel
- Panel này là một panel gốc duy nhất, phục vụ như một container gốc mà tất cả các
tấm layout khác phải được đính kèm. Panel này kế thừa lớp LayoutPanel, do đó
bạn có thể layout số lượng phần tử bất kỳ.
Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 15



Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

-

Bạn sử dụng RootLayoutPanel phổ biến nhất là sử dụng như một container cho
các panel khác.
 LayoutPanel
- Cách bố trí của LayoutPanel là cách bố trí thường nhất, và thường đi theo các
layout khác được xây dựng. Gần giống với LayoutPanel nhất là AbsolutePanel,
nhưng nó tổng quát hơn ở chỗ nó cho phép các phần tử bên trong tự định vị trí sử
dụng bằng việc sử dụng các ràng buộc tùy ý, như trong ví dụ sau đây:

Hình 4.1.1 : Layout Panel

 DockLayoutPanel
- DockLayoutPanel có mục đích giống với DockPanel widget, ngoại trừ việc nó sử
dụng hệ thống layout để đạt được điều này mà không sử dụng tables, và một cách
dự đoán được. Bạn sẽ thường xuyên sử dụng để xây dựng ở cấp ứng dụng cấu
trúc, như trong ví dụ sau đây:

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 16



Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.1.2 : DockLayoutPanel

-

Lưu ý rằng DockLayoutPanel yêu cầu sử dụng các đơn vị thống nhất cho tất cả các
phần tử con, quy định tại contructor. Nó cũng yêu cầu khai báo kích thước của mỗi
phần tử con(ngoại trừ phần tử cuối cùng - phần tử sẽ sử dụng tất cả không gian
còn lại).
 SplitLayoutPanel
- SplitLayoutPanel rất giống với DockLayoutPanel (thực tế là SplitLayoutPanel
extends DockLayoutPanel), ngoại trừ việc nó tự động tạo ra một cột kéo thả
splitter ở giữa mỗi cặp widget con. SplitLayoutPanel chỉ hỗ trợ đơn vị pixel. Có
thể dùng để thay thế cho HorizontalSplitPanel và VerticalSplitPanel.

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 17


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.1.3 : SplitLayoutPanel


 StackLayoutPanel
- StackLayoutPanel thay thế cho StackPanel. Nó chỉ hiển thị một widget con tại một
thời điểm, và các tiêu đề của các widget con khác. Nhấp vào header nào đó thì sẽ
hiển thị cả widget đó.

Hình 4.1.4 : StackLayoutPanel

 TabLayoutPanel
- Giống với việc sử dụng TabPanel, TabLayoutPanel sẽ hiển thị một dãy nhấp tab.
Mỗi tab là liên kết với một widget con, được hiển thị khi nhấn vào tab.

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 18


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.1.5 : TabLayoutPanel

-

Giá trị độ dài cung cấp cho constructor TabLayoutPanel xác định chiều cao của
thanh tab, cần phải được cung cấp một cách rõ ràng.
- Khi nào không nên sử dụng layout panel?
Các bảng mô tả ở trên là tốt nhất được sử dụng để xác định ứng dụng của bên

ngoài cơ cấu - có nghĩa là, các bộ phận đó là những "ít nhất tài liệu giống như".
Bạn nên tiếp tục sử dụng các widget cơ bản và cấu trúc HTML cho các bộ phận
cho mà HTML / CSS bố trí thuật toán hoạt động tốt. Cụ thể, xem xét việc sử dụng
UiBinder mẫu để trực tiếp sử dụng HTML bất cứ nơi nào có ý nghĩa.
4.2. Các phần tử cơ bản(widgets).
- Bạn xây dựng giao diện người dùng trong các ứng dụng bằng cách sử dụng GWT
widget đó được chứa trong tấm. Widget cho phép bạn tương tác với người sử dụng.
Panels kiểm soát các vị trí của các thành phần giao diện người dùng trên trang.
Widgets và tấm làm việc theo cùng một cách trên tất cả các trình duyệt; bằng cách
sử dụng chúng, bạn loại bỏ sự cần thiết để viết mã chuyên biệt cho từng trình
duyệt.

Hình 4.2.1 : Button Widget

Hình 4.2.2 : PushButton Widget

Hình 4.2.3 : RadioButton Widget

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 19


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.2.4 : Checkbox Widget


Hình 4.2.5 : DatePicker Widget

Hình 2.4.6 : ToggleButton widget

Hình 2.4.7 : TextBox Widget

Hình 4.2.8 : PasswordTextBox widget

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 20


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.2.8 : TextArea widget

Hình 4.2.9 : Hyperlink widget

Hình 4.2.10 : ListBox widget

Hình 4.2.11 : MenuBar widget

Hình 4.2.12 : Tree widget

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit


Trang 21


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.2.13 : SuggestBox widget

Hình 4.2.14 : RichTextArea widget

Hình 4.2.15 : Table widget

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 22


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.2.16 : TabBar widget

Hình 4.2.17 : DialogBox widget

Hình 4.2.18 : PopupPanel widget


Hình 4.2.19 : StackPanel and StackLayoutPanel* widget

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 23


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp

Hình 4.2.20 : HorizontalPanel widget

Hình 4.2.21 : VerticalPanel widget

Hình 4.2.22 : FlowPanel widget

Hình 4.2.23 : VerticalSplitPanel widget

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 24


Hà Nội University of Industry

Thực Tập Tốt
Nghiệp


Hình 4.2.24 : HorizontalSplitPanel

Hình 4.2.25 : SplitLayoutPanel

Hình 4.2.26 : DockPanel and DockLayoutPanel

Hình 4.2.27 : TabPanel and TabLayoutPanel

Hình 4.2.28 : DisclosurePanel

Nghiên Cứu & Xây Dựng Ứng Dụng Với Google Web Toolkit

Trang 25


×