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

“Nghiên cứu công nghệ Struts, ứng dụng xây dụng Website Phần mềm Việt

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 (678.72 KB, 73 trang )

Lời nói đầu
Hiện nay các công ty hay các tổ chức phát triển phần mềm ở Việt Nam
vẫn chưa có một nơi để quảng bá phần mềm của mình, đồng thời các tổ chức
hay cá nhân vẫn chưa có một nơi để đưa các phần mềm của mình lên mạng để
cho cộng đồng có thể download và tham khảo. Để đáp ứng nhu cầu đó chúng tôi
có ý định xây dựng mét Website Phanmemviet.com (Phần mềm Việt) cho phép
các nhà cung cấp các sản phẩm phần mềm của Việt Nam quảng bá các sản
phẩm phần mềm của họ.
Đồ án tốt nghiệp: “Nghiên cứu công nghệ Struts, ứng dông xây dùng
Website Phần mÒm Việt” gồm ba chương với các nội dung nh sau:
Chương 1. Cơ sở lý thuyết.
Chương 2. Phân tích bài toán.
Chương 3. Xây dựng ứng dụng.
Em xin chân thành cảm ơn cô giáo: Th.S. Bùi Thị Hòa đã tận tình hướng
dẫn em hoàn thành đồ án tốt nghiệp này. Trong phạm vi thời gian, tài liệu tham
khảo và khả năng của bản thân còn hạn chế, đồ án không tránh khỏi những
thiếu sót, em rất mong được sự góp ý của các thầy cô và các bạn.

Hà Nội, ngày 1/5/2004
Sinh

viên

thực

hiện:

Trần Nhật Hóa

1



Danh mục các hình
Lời nói đầu.................................................................................................................................1
Danh mục các hình....................................................................................................................2
Danh mục các bảng...................................................................................................................5
Mục lục.......................................................................................................................................8
Chương 1. Cơ sở lý thuyết.........................................................................................................9
1.1. Giới thiệu về Jakarta Struts.....................................................................................................9
1.1.1. Đặt vấn đề.............................................................................................................................................9
1.1.2. Dự án Jakarta Struts.............................................................................................................................9
1.1.3. Mô hình thiết kế MVC.........................................................................................................................9
Hình 1.1: Mô hình MVC...........................................................................................................................10
Sau đây là một số ưu điểm chính của việc sử dụng mô hình MVC:......................................................10
1.1.4. Struts – Sự cài đặt của mô hình MVC:...............................................................................................11
Hình 1.2: Struts - sự cài đặt của MVC......................................................................................................11
1.1.5. Web application..................................................................................................................................13
Hình 1.3: Cấu trúc thư mục của một ứng dụng Web.................................................................................14
1.1.6. Tổng quan về kiến trúc Java Servlet và JavaServer Page..................................................................16
a. Kiến trúc Java Servlet.........................................................................................................................16
Hình 1.4: Sự thực thi của Java Servlet......................................................................................................16
Hình 1.5: Một mô hình đối tượng đơn giản chỉ ra Servlet Framework.....................................................17
b. Các class GenericServlet và HttpServlet:...........................................................................................17
c. Vòng đời của một Servlet...................................................................................................................18
d. Xây dùng một Servlet.........................................................................................................................20
e. JavaServer Page..................................................................................................................................22
Hình 1.6: Kết quả của ví dụ JSP................................................................................................................22
Hình 1.7: Các bước của một JSP request..................................................................................................23
1.1.7. Bắt đầu với Struts...............................................................................................................................23
a. Tạo một ứng dụng trên nền Struts:......................................................................................................23
c. Tạo thành phần Controller..................................................................................................................29

1.1.8. Triển khai ứng dụng Struts.................................................................................................................32
1.1.9. ActionServlet Class............................................................................................................................34
1.1.10. Giới thiệu Struts version 1.1.............................................................................................................36
1. ActionServlet và RequestProcessor....................................................................................................36
2. Thay đổi trong class Struts Action......................................................................................................37
3. Thay đổi trong web.xml và struts-config.xml....................................................................................37

1.2. Giới thiệu về Log4j.................................................................................................................37
1.3. Giới thiệu về UML và Rational Rose:....................................................................................39
1.3.1. Giới thiệu UML..................................................................................................................................39
1.3.2. Giới thiệu về Rational Rose...............................................................................................................42
Rational Rose modeler:...........................................................................................................................43
Rational Rose professional:....................................................................................................................43
Rational Rose Real – Time:....................................................................................................................43
Rational Rose Enterprise:.......................................................................................................................43
Rational Rose DataModeler:...................................................................................................................43

Chương 2: Phân tích bài toán.................................................................................................45
2.1. Mô tả các chức năng:..............................................................................................................45
Hình 2.1: Các tác nhân và các thành phần của Website............................................................................45
Các chức năng được thể hiện qua biểu đồ User Case sau:.....................................................................46
Hình 2.2: Biểu đồ User Case.....................................................................................................................46

2.2. Giới thiệu các User Case:.......................................................................................................46

2


2.2.1. User Case: Download.........................................................................................................................46
a. Mô tả:..................................................................................................................................................46

b. Biểu đồ trình tự:..................................................................................................................................47
Hình 2.3: Biểu đồ trình tự User Case Download.......................................................................................47
2.2.2. User Case: Manage Category.............................................................................................................47
Hình 2.4: User Case Manage Category.....................................................................................................47
a. Mô tả:..................................................................................................................................................47
b. Các biểu đồ trình tự:...........................................................................................................................48
Hình 2.5: Biểu đồ trình tự User Case Add New Category........................................................................48
Hình 2.6: Biểu đồ trình tự User Case Delete Category.............................................................................48
Hình 2.7: Biểu đồ trình tự User Case Update Category............................................................................49
Hình 2.8: Biểu đồ trình tự User Case View Category...............................................................................49
2.2.3. User Case: Manage Customer............................................................................................................50
Hình 2.9: User Case Manage Customer....................................................................................................50
a. Mô tả:..................................................................................................................................................50
b. Các biểu đồ trình tự:...........................................................................................................................50
Hình 2.10: Biểu đồ trình tự User Case Add New Customer.....................................................................50
Hình 2.11: Biểu đồ trình tự User Case Delete Customer..........................................................................51
Hình 2.12: Biểu đồ trình tự User Case Update Customer.........................................................................51
Hình 2.13: Biểu đồ trình tự User Case View Customer............................................................................52
2.2.4. User Case: Manage Software.............................................................................................................52
Hình 2.14: User Case Manage Software...................................................................................................52
a. Mô tả:..................................................................................................................................................52
b. Các biểu đồ trình tự:...........................................................................................................................53
Hình 2.15: Biểu đồ trình tự User Case Add New Software......................................................................53
Hình 2.16: Biểu đồ trình tự User Case Delete Software...........................................................................53
Hình 2.17: Biểu đồ trình tự User Case Update Software..........................................................................54
Hình 2.18: Biểu đồ trình tự User Case View Software.............................................................................54
2.2.5. User Case: Order Software.................................................................................................................55
a. Mô tả:..................................................................................................................................................55
b. Biểu đồ trình tự:..................................................................................................................................55
Hình 2.19: Biểu đồ trình tự User Case Order Software.............................................................................55

2.2.6. User Case: Register............................................................................................................................56
a. Mô tả:..................................................................................................................................................56
b. Biểu đồ trình tự:..................................................................................................................................56
Hình 2.20: Biểu đồ trình tự User Case Register........................................................................................56
2.2.7. User Case: Search...............................................................................................................................56
a. Mô tả:..................................................................................................................................................56
b. Biểu đồ trình tự:..................................................................................................................................57
Hình 2.21: Biểu đồ trình tự User Search...................................................................................................57
2.2.8. User Case: Signin...............................................................................................................................57
a. Mô tả:..................................................................................................................................................57
b. Biểu đồ trình tự:..................................................................................................................................57
Hình 2.22: Biểu đồ trình tự User Case Signin...........................................................................................57

Chương 3: Xây dựng ứng dụng..............................................................................................59
3.1. Thiết kế cơ sở dữ liệu..............................................................................................................59
Hình 3.1: Thiết kế cơ sở dữ liệu................................................................................................................59

3.2. Xây dựng thành phần Views..................................................................................................59
Hình 3.2: Thư mục webApplication..........................................................................................................60

3.3. Xây dựng thành phần Controller...........................................................................................62
Hình 3.3: Package org.phanmemviet.download.handlers.........................................................................69

3.4. Xây dựng thành phần Model:................................................................................................69
Hình 3.4: Các class tương ứng phần Bean và DAO..................................................................................69
Hình 3.5: Gãi formbeans...........................................................................................................................70

3.5. KÕt quả đạt được:..................................................................................................................70
Hình 3.6: Giao diện chính của Website.....................................................................................................71


3


Kết luận....................................................................................................................................72
Tài liệu tham khảo...................................................................................................................72

4


Danh mục các bảng.
Lời nói đầu.................................................................................................................................1
Danh mục các hình....................................................................................................................2
Danh mục các bảng...................................................................................................................5
Mục lục.......................................................................................................................................8
Chương 1. Cơ sở lý thuyết.........................................................................................................9
1.1. Giới thiệu về Jakarta Struts.....................................................................................................9
1.1.1. Đặt vấn đề.............................................................................................................................................9
1.1.2. Dự án Jakarta Struts.............................................................................................................................9
1.1.3. Mô hình thiết kế MVC.........................................................................................................................9
Hình 1.1: Mô hình MVC...........................................................................................................................10
Bảng 1.1: Ba thành phần của mô hình MVC.............................................................................................10
Sau đây là một số ưu điểm chính của việc sử dụng mô hình MVC:......................................................10
1.1.4. Struts – Sự cài đặt của mô hình MVC:...............................................................................................11
Hình 1.2: Struts - sự cài đặt của MVC......................................................................................................11
1.1.5. Web application..................................................................................................................................13
Hình 1.3: Cấu trúc thư mục của một ứng dụng Web.................................................................................14
Bảng 1.2: Cấu trúc thư mục một ứng dụng Web.......................................................................................15
1.1.6. Tổng quan về kiến trúc Java Servlet và JavaServer Page..................................................................16
a. Kiến trúc Java Servlet.........................................................................................................................16
Hình 1.4: Sự thực thi của Java Servlet......................................................................................................16

Hình 1.5: Một mô hình đối tượng đơn giản chỉ ra Servlet Framework.....................................................17
b. Các class GenericServlet và HttpServlet:...........................................................................................17
c. Vòng đời của một Servlet...................................................................................................................18
d. Xây dùng một Servlet.........................................................................................................................20
e. JavaServer Page..................................................................................................................................22
Hình 1.6: Kết quả của ví dụ JSP................................................................................................................22
Hình 1.7: Các bước của một JSP request..................................................................................................23
1.1.7. Bắt đầu với Struts...............................................................................................................................23
a. Tạo một ứng dụng trên nền Struts:......................................................................................................23
Bảng 1.3: Các thuộc tính của thẻ trong ví dụ............................................................................................26
c. Tạo thành phần Controller..................................................................................................................29
Bảng 1.4: Các tham số được đưa vào........................................................................................................31
1.1.8. Triển khai ứng dụng Struts.................................................................................................................32
1.1.9. ActionServlet Class............................................................................................................................34
1.1.10. Giới thiệu Struts version 1.1.............................................................................................................36
1. ActionServlet và RequestProcessor....................................................................................................36
2. Thay đổi trong class Struts Action......................................................................................................37
3. Thay đổi trong web.xml và struts-config.xml....................................................................................37

1.2. Giới thiệu về Log4j.................................................................................................................37
1.3. Giới thiệu về UML và Rational Rose:....................................................................................39
1.3.1. Giới thiệu UML..................................................................................................................................39
1.3.2. Giới thiệu về Rational Rose...............................................................................................................42
Rational Rose modeler:...........................................................................................................................43
Rational Rose professional:....................................................................................................................43
Rational Rose Real – Time:....................................................................................................................43
Rational Rose Enterprise:.......................................................................................................................43
Rational Rose DataModeler:...................................................................................................................43

Chương 2: Phân tích bài toán.................................................................................................45

2.1. Mô tả các chức năng:..............................................................................................................45
Hình 2.1: Các tác nhân và các thành phần của Website............................................................................45

5


Các chức năng được thể hiện qua biểu đồ User Case sau:.....................................................................46
Hình 2.2: Biểu đồ User Case.....................................................................................................................46

2.2. Giới thiệu các User Case:.......................................................................................................46
2.2.1. User Case: Download.........................................................................................................................46
a. Mô tả:..................................................................................................................................................46
b. Biểu đồ trình tự:..................................................................................................................................47
Hình 2.3: Biểu đồ trình tự User Case Download.......................................................................................47
2.2.2. User Case: Manage Category.............................................................................................................47
Hình 2.4: User Case Manage Category.....................................................................................................47
a. Mô tả:..................................................................................................................................................47
b. Các biểu đồ trình tự:...........................................................................................................................48
Hình 2.5: Biểu đồ trình tự User Case Add New Category........................................................................48
Hình 2.6: Biểu đồ trình tự User Case Delete Category.............................................................................48
Hình 2.7: Biểu đồ trình tự User Case Update Category............................................................................49
Hình 2.8: Biểu đồ trình tự User Case View Category...............................................................................49
2.2.3. User Case: Manage Customer............................................................................................................50
Hình 2.9: User Case Manage Customer....................................................................................................50
a. Mô tả:..................................................................................................................................................50
b. Các biểu đồ trình tự:...........................................................................................................................50
Hình 2.10: Biểu đồ trình tự User Case Add New Customer.....................................................................50
Hình 2.11: Biểu đồ trình tự User Case Delete Customer..........................................................................51
Hình 2.12: Biểu đồ trình tự User Case Update Customer.........................................................................51
Hình 2.13: Biểu đồ trình tự User Case View Customer............................................................................52

2.2.4. User Case: Manage Software.............................................................................................................52
Hình 2.14: User Case Manage Software...................................................................................................52
a. Mô tả:..................................................................................................................................................52
b. Các biểu đồ trình tự:...........................................................................................................................53
Hình 2.15: Biểu đồ trình tự User Case Add New Software......................................................................53
Hình 2.16: Biểu đồ trình tự User Case Delete Software...........................................................................53
Hình 2.17: Biểu đồ trình tự User Case Update Software..........................................................................54
Hình 2.18: Biểu đồ trình tự User Case View Software.............................................................................54
2.2.5. User Case: Order Software.................................................................................................................55
a. Mô tả:..................................................................................................................................................55
b. Biểu đồ trình tự:..................................................................................................................................55
Hình 2.19: Biểu đồ trình tự User Case Order Software.............................................................................55
2.2.6. User Case: Register............................................................................................................................56
a. Mô tả:..................................................................................................................................................56
b. Biểu đồ trình tự:..................................................................................................................................56
Hình 2.20: Biểu đồ trình tự User Case Register........................................................................................56
2.2.7. User Case: Search...............................................................................................................................56
a. Mô tả:..................................................................................................................................................56
b. Biểu đồ trình tự:..................................................................................................................................57
Hình 2.21: Biểu đồ trình tự User Search...................................................................................................57
2.2.8. User Case: Signin...............................................................................................................................57
a. Mô tả:..................................................................................................................................................57
b. Biểu đồ trình tự:..................................................................................................................................57
Hình 2.22: Biểu đồ trình tự User Case Signin...........................................................................................57

Chương 3: Xây dựng ứng dụng..............................................................................................59
3.1. Thiết kế cơ sở dữ liệu..............................................................................................................59
Hình 3.1: Thiết kế cơ sở dữ liệu................................................................................................................59

3.2. Xây dựng thành phần Views..................................................................................................59

Hình 3.2: Thư mục webApplication..........................................................................................................60
Bảng 3.1: Các thuộc tính của thẻ...............................................................................................................62

3.3. Xây dựng thành phần Controller...........................................................................................62
Hình 3.3: Package org.phanmemviet.download.handlers.........................................................................69

3.4. Xây dựng thành phần Model:................................................................................................69

6


Hình 3.4: Các class tương ứng phần Bean và DAO..................................................................................69
Hình 3.5: Gãi formbeans...........................................................................................................................70

3.5. KÕt quả đạt được:..................................................................................................................70
Hình 3.6: Giao diện chính của Website.....................................................................................................71

Kết luận....................................................................................................................................72
Tài liệu tham khảo...................................................................................................................72

7


Mục lục.
Lời nói đầu.................................................................................................................................1
Danh mục các hình....................................................................................................................2
Danh mục các bảng...................................................................................................................5
Mục lục.......................................................................................................................................8
Chương 1. Cơ sở lý thuyết.........................................................................................................9
1.1. Giới thiệu về Jakarta Struts.....................................................................................................9

1.1.1. Đặt vấn đề.............................................................................................................................................9
1.1.2. Dự án Jakarta Struts.............................................................................................................................9
1.1.3. Mô hình thiết kế MVC.........................................................................................................................9
1.1.4. Struts – Sự cài đặt của mô hình MVC:...............................................................................................11
1.1.5. Web application..................................................................................................................................13
1.1.6. Tổng quan về kiến trúc Java Servlet và JavaServer Page..................................................................16
1.1.7. Bắt đầu với Struts...............................................................................................................................23
1.1.8. Triển khai ứng dụng Struts.................................................................................................................32
1.1.9. ActionServlet Class............................................................................................................................34
1.1.10. Giới thiệu Struts version 1.1.............................................................................................................36

1.2. Giới thiệu về Log4j.................................................................................................................37
1.3. Giới thiệu về UML và Rational Rose:....................................................................................39
1.3.1. Giới thiệu UML..................................................................................................................................39
1.3.2. Giới thiệu về Rational Rose...............................................................................................................42

Chương 2: Phân tích bài toán.................................................................................................45
2.1. Mô tả các chức năng:..............................................................................................................45
2.2. Giới thiệu các User Case:.......................................................................................................46
2.2.1. User Case: Download.........................................................................................................................46
2.2.2. User Case: Manage Category.............................................................................................................47
2.2.3. User Case: Manage Customer............................................................................................................50
2.2.4. User Case: Manage Software.............................................................................................................52
2.2.5. User Case: Order Software.................................................................................................................55
2.2.6. User Case: Register............................................................................................................................56
2.2.7. User Case: Search...............................................................................................................................56
2.2.8. User Case: Signin...............................................................................................................................57

Chương 3: Xây dựng ứng dụng..............................................................................................59
3.1. Thiết kế cơ sở dữ liệu..............................................................................................................59

3.2. Xây dựng thành phần Views..................................................................................................59
3.3. Xây dựng thành phần Controller...........................................................................................62
3.4. Xây dựng thành phần Model:................................................................................................69
3.5. KÕt quả đạt được:..................................................................................................................70

Kết luận....................................................................................................................................72
Tài liệu tham khảo...................................................................................................................72

8


Chương 1. Cơ sở lý thuyết.
1.1. Giới thiệu về Jakarta Struts.
1.1.1. Đặt vấn đề.
Quả là một ý kiến tốt nếu nh ta đặt các giải pháp dịch vụ Web dựa trên cơ
sở việc thiết kế theo mô hình Model – View – Controller (MVC). Trong phần
này chúng ta nghiên cứu về Struts, một công nghệ cho phép việc thiết kế các ứng
dụng Web dựa trên mô hình này.
1.1.2. Dự án Jakarta Struts.
Jakarta Struts là một dự án phần mềm nguồn mở được bảo trợ bởi tập
đoàn phần mềm Apache, đây là sự cài đặt mô hình Model – View – Controller
(MVC). Dự án Struts ban đầu được sáng tạo bởi Craig McClanahan vào tháng 5
năm 2000 và từ đó đến nay nó được tiếp tục phát triển bởi cộng đồng phần mềm
nguồn mở.
Đầu tiên, dự án Struts được thiết kế với mục đích cung cấp một bộ khung
cho việc thiết kế các ứng dụng Web bằng cách tách biệt các tầng trình diễn với
các tầng giao dịch và các tầng dữ liệu. Sau khi được bắt đầu, dự án Struts đã
nhận được một sự hỗ trợ rất lớn từ phía các nhà lập trình, và nó đã nhanh chóng
trở thành một nhân tố nổi bật trong cộng đồng phần mềm nguồn mở.
Tuy nhiên, đã có một cuộc tranh cãi nhỏ xảy ra trong cộng đồng những

nhà phát triển về loại hình thiết kế của dự án Struts. Theo những tài liệu được
cung cấp bởi các nhà phát triển của dự án Struts thì đó là mẫu hình sau MVC,
nhưng một vài người lại cho rằng nó gần với mô hình Front Controller được mô
tả bởi Sun's J2EE Blueprints Program. Thực tế rằng mô hình này đã rất gần với
mô hình Front Controller.
1.1.3. Mô hình thiết kế MVC.
Để hiểu được về Struts Framework, đầu tiên ta phải có những kiến thức
cơ bản về mô hình thiết kế MVC - đây là mô hình làm cơ sở cho Struts. Mô hình

9


MVC xuất phát từ Smalltalk, nã bao gồm 3 thành phần đó là: Model, View, và
Controller.

Hình 1.1: Mô hình MVC.
Bảng sau đây sẽ mô tả các thành phần đó:
Thành phần
Model

View

Mô tả
Biểu diễn các đối tượng dữ liệu. Model là cái đang được
điều khiển và là cái cần đưa ra cho người sử dụng.
Phục vụ cách hiển thị màn hình của Model. Đây là đối
tượng thể hiện trạng thái hiện tại của các đối tượng dữ
liệu.
Xác định cách thức mà giao diện phản ứng với các


Controller

thông tin từ phía người dùng. Thành phần Controller là
đối tượng điều khiển Model hay các đối tượng dữ liệu.
Bảng 1.1: Ba thành phần của mô hình MVC

Sau đây là một số ưu điểm chính của việc sử dụng mô hình MVC:
-

Tính tin cậy (Reliability): Tầng trình diễn và tầng giao dịch được tách biệt
nhau, do đó có thể cho phép ta thay đổi cách nhìn đối với ứng dụng mà
không cần phải biên dịch lại code của thành phần Model hay Controller.

-

Tính sử dụng lại và thích nghi cao (High reuse and adaptability): Mô hình
MVC có thể cho phép ta sử dụng nhiều thể loại của View, tất cả đều truy
nhập chung mét server-side code. Nã bao gồm cả Web browsers (HTTP)

10


đến cả wireless browsers (WAP).
-

Giá thành phát triển và giá thành vòng đời thấp (Very low development
and life-cycle costs): Mô hình MVC làm cho các nhà lập trình ở mức thấp
có thể phát triển và bảo trì giao diện của người sử dụng.

-


Tính triển khai nhanh (Rapid deployment): Thời gian triển khai có thể
được giảm xuống bởi vì những nhà lập trình điều khiển chỉ tập trung vào
việc giải quyết các giao tác, còn những nhà thiết kế giao diện chỉ tập trung
vào việc thiết kế tương tác.

-

Tính bảo trì được (Maintainability): Sự tách biệt giữa các tầng hiển thị và
tầng giao dịch cũng làm cho việc bảo trì và sửa đổi các ứng dụng Web dựa
trên Struts một cách dễ dàng hơn.
1.1.4. Struts – Sự cài đặt của mô hình MVC:
Mô hình Struts Framework mà phần phục vụ của nó lại là sự cài đặt của

mô hình MVC bởi sử dụng kết hợp các trang JSP, những thẻ JSP và Java
Servlets. Trong phần này chúng ta sẽ xem xét Struts Framework đã ánh xạ tới
mỗi thành phần của mô hình MVC như thế nào.

Hình 1.2: Struts - sự cài đặt của MVC.
Hình 1.2 mô tả lộ trình đi qua của hầu hết các yêu cầu của các ứng dụng
Web sử dông Struts. Quá trình này có thể tách thành 5 bước cơ bản sau:
1. Mét Request được tạo từ trang View đã được hiển thị trước đó.
2. Request được tiếp nhận bởi ActionServlet, mà nó hoạt động nh mét

11


thành phần điều khiển (Controller), ActionServlet tìm kiếm URI đã yêu
cầu trong mét file XML (Struts.config) và xác định tên của lớp Action
sẽ thực thi phần giao tác cần thiết.

3. Action class thực thi logic của nó trên thành phần Model kết hợp với
ứng dụng.
4. Khi Action hoàn thành việc xử lý, nó sẽ gửi trả điều khiển cho
ActionServlet. Trong kết quả trả về, Action class sẽ cung cấp một khóa
cho phép xác định kết quả của quá trình xử lý. ActionServlet sử dụng
khóa này để xác định nơi cần trả kết quả để hiển thị.
5. Request được hoàn thành khi ActionServlet trả lời bằng cách gửi
request tới thành phần View, được kết nối với khóa trả về, và thành
phần View sẽ hiển thị kết quả của hành động đó.
Các thành phần:
- Thành phần Model:
Struts Framework không cung cấp bất cứ thành phần Model đặc trưng
nào.
- Thành phần View:
Mỗi thành phần View trong Struts Framework được ánh xạ với một trang
JSP mà nó có thể chứa đựng những thẻ của Strust. Đoạn code sau đây chứa một
ví dụ của thành phần Struts View:
<%@page language="java">
<%@taglib uri="/WEB−INF/struts−html.tld" prefix="html">
type="com.wiley.loginForm" >
User Id: <html:text property="username">

Password: <html:password property="password">

<html:submit />
</html:form>

12


Nh chóng ta đã thấy, các JSP custom tags đã được gài trong trang JSP

này. Những thẻ này được định nghĩa bởi Struts Framework, chúng thể hiện sự
kết hợp giữa thành phần View với thành phần Controller của ứng dụng.
- Thành phần Controller:
Thành phần Controller của Struts Framework được xem là xương sống
của tất cả các ứng dụng Web sử dụng Struts. Nó được cài đặt bởi sử dụng một
Servlet có tên là: apache.struts.action.ActionServlet. Servlet này có nhiệm vụ
nhận tất cả các Request từ phía Client, và giao phó điều khiển của mỗi Request
tới các Class: org.apache.struts.Action do người dùng định nghĩa. ActionServlet
giao quyền điều khiển dựa trên cơ sở URI của Request đưa đến. Khi Action
Class hoàn thành quá trình xử lý, nó trả về một khóa cho ActionServlet, khóa đó
được sử dụng bởi ActionServlet để xác định thành phần View sẽ hiển thị kết quả.
ActionServlet tương tự nh một nhà máy tạo nên các đối tượng Action để
thực thi tầng giao dịch của ứng dụng. Thành phần Controller của Struts
Framework là thành phần quan trọng nhất của Struts MVC.
Các thành phần Controller và View sẽ được giới thiệu trong phần tiếp theo
của chương này.
1.1.5. Web application.
Một ứng dụng Web là một tập hợp bao gồm các servlet, các trang HTML,
các classes. Tất cả các ứng dụng Struts đều được đóng gói bởi sử dụng định
dạng Java Web.
Sau đây là danh sách các thành phần chung nhất có thể được đóng gói
trong một ứng dụng Web.
- Servlets.
- Java Server Pages (JSPs).
- Những thư viện custom tag JSP.
- Các class hữu Ých và các class của ứng dụng.
- Các tài liệu tĩnh bao gồm HTLM, ảnh, JavaScript,….
13



- Các thông tin mô tả ứng dụng Web.
* Cấu trúc thư mục.

Hình 1.3: Cấu trúc thư mục của một ứng dụng Web.
Tất cả các ứng dụng Web được đóng gói trong một cấu trúc thư mục
chung, và đó cũng là phần chứa đựng các thành phần của một ứng dụng Web.
Bước đầu tiên trong công việc tạo lập một ứng dụng Web đó là tạo ra được cấu
trúc thư mục này. Bảng sau đây mô tả một ví dụ về một ứng dụng Web có tên là
wileyapp.
Thư mục

Chứa đựng
Đây là thư mục gốc của ứng dụng

/wileyapp

Web. Tất cả các file JSP và HTML sẽ
được cất ở đây.
Thư mục này chứa đựng tất cả các

/wileyapp/WEB-INF

/wileyapp/WEB-INF/classes
/wileyapp/WEB-INF/lib

thông tin liên quan đến ứng dụng. Đây
là nơi đặt các mô tả của việc triển khai
ứng dụng Web.
Thư mục này là nơi đặt các servlet và
các utility classes.

Thư mục này chứa đụng các file nén
14


của Java (Java Archive) mà ứng dụng
Web cần sử dụng.
Bảng 1.2: Cấu trúc thư mục một ứng dụng Web.
* Mô tả sự triển khai của một ứng dụng Web.
Mô tả việc triển khai là một phần quan trọng của ứng dụng Web. Sự mô tả
này là một file XML có tên là Web.xml (File này mô tả tất cả các thành phần có
trong một ứng dụng Web) được đặt tại thư
mục: /<SERVER_ROOT>/applicationname/WEB-INF/. Nếu nh ta có một ứng
dụng web có tên là wileyapp, thì file web.xml sẽ được đặt tại thư
mục /<SERVER_ROOT>/wileyapp/WEB-INF/. Những thông tin được mô tả bao
gồm các thành phần sau:
- Các tham số khởi tạo ServletContext.
- Localized content
- Cấu hình Session.
- Định nghĩa Servlet/JSP.
- Servlet/JSP mappings
- Tham chiếu các thư viện thẻ.
- Các trang Error.
- Thông tin bảo mật.
Đoạn code sau đây chứa đựng miêu tả sự triển khai và định nghĩa mét
servlet.
<?xml version="1.0" encoding="ISO−8859−1"?>
2.3//EN'' /><servlet>
<servlet−name>SimpleServlet</servlet−name>
<servlet−class>com.wiley.SimpleServlet</servlet−class>

</servlet>
</web−app>

15


1.1.6. Tổng quan về kiến trúc Java Servlet và JavaServer Page.
Trong phần này chúng ta sẽ xem xét hai công nghệ mà Struts framework
đã lấy làm cơ sở, đó là: Java Servlet và JavaServer Pages (JSPs).
a. Kiến trúc Java Servlet.

Hình 1.4: Sự thực thi của Java Servlet.
Java Servlet là một flatform độc lập với các thành phần của ứng dụng
Web, nó được đặt trong mét JSP/servlet container. Servlet liên kết với Web
clients bởi mô hình quản lý request/response của thành phần chứa JSP/servlet.
Hình sau đây mô tả sự thực thi của một Java servlet.
Hai packages tạo nên kiến trúc của servlet đó là: javax.servlet và
javax.servlet.http. Package đầu tiên javax.servlet chứa đựng một giao diện chung
và các servlet sẽ implement và extend từ giao diện này. Thứ hai, gãi
javax.servlet.http là giao thức đặc trưng HTTP cho các servlet classes .
Trung tâm của kiến trúc này là giao diện của javax.servlet.Servlet. Đây là
interface cơ sở cho tất cả các servlet. Giao diện của Servlet định nghĩa 5
methods. Trong đó có 3 method được xem là quan trọng nhất, đó là:
-

init() method, khởi đầu cho mét servlet.

-

service() method, nhận và trả lời các request từ phía client.


-

destroy() method, thực thi việc thu dọn.

Đó là các methods dành cho vòng đời của một servlet. Tất cả các servlets
phải implement interface của servlet một cách trực tiếp hoặc thông qua sự kế
thừa.
Hình 1.5. là một mô hình mang lại cho ta một cách tiếp cận cao của
servlet framework.
16


Hình 1.5: Một mô hình đối tượng đơn giản chỉ ra Servlet Framework.
b. Các class GenericServlet và HttpServlet:
Hai class chính trong kiến trúc servlet là GenericServlet và HttpServlet.
Class HttpServlet được extend từ class GenericServlet và nó implement giao
diện servlet. Khi phát triển servlet riêng của mình, chúng ta phải implement mét
trong hai class trên.
Khi extend class GenericServlet, chóng ta phải implement method
service(). Method GenericServlet.service() được định nghĩa nh mét method trừu
tượng theo prototype sau:
public abstract void service(ServletRequest request,
ServletResponse response) throws ServletException, IOException;

Hai tham số được đưa vào method service() là hai đối tượng là
ServletRequest và ServletRespnose. Đối tượng ServletRequest sẽ lưu giữ các
thông tin được gửi đến cho servlet, còn đối tượng ServletResponse là nơi mà
chúng ta đặt dữ liệu cần gửi trở lại cho phía client.
Ngược lại đối với class GenericServlet, khi chóng ta extend HttpServlet

chóng ta không cần phải luôn luôn implement method service(), class
HttpServlet đã implement method service cho chóng ta. Prototype sau đây chứa
đựng dấu hiệu của HttpServlet.service():
17


protected void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException;

Khi HttpServlet.service() được gọi đến, nó đọc kiểu của method được lưu
giữ trong request và xác định các method HTTP nào được gọi đến dựa trên tham
số này. Có nhiều method mà chúng ta sẽ muốn cài đặt. Nếu nh mét method có
kiểu là GET, thì nó được gọi là doGet(). Nếu nh method có kiểu là POST, thì nó
được gọi là doPost(). Có 5 kiểu method được kết hợp với method service(),
nhưng các method doGet() và doPost() là những method được sử dụng một cách
thường xuyên nhất.
c. Vòng đời của một Servlet.
Vòng đời của một Java servlet tuân theo một trật tự logic. Các method
dành cho vòng đời của một servlet bao gồm init(), service() và destroy(). Trật tự
này được mô tả trong quá trình gồm 3 bước sau:
-

Mét servlet được load và khởi tạo bởi sử dụng method init().
Method này sẽ được gọi khi mét servlet được khởi tạo trước hoặc
đúng lúc request đầu tiên được gửi đến servlet này.

-

Servlet phục vụ các request này bởi sử dụng method service().


-

Servlet sau đó được hủy bỏ và dọn dẹp khi ứng dụng Web chứa
servlet này shutsdown.

* init() method
init() method là nơi mà servlet bắt đầu cuộc sống của nó. Method này
được gọi duy nhất một lần và ngay lập tức sau khi servlet được instant, nã được
sử dụng để khởi tạo các tài nguyên được sử dụng trong khi bắt giữ các request.
Method này được định nghĩa nh sau:
public void init(ServletConfig config) throws ServletException;

init() method lấy đối tượng ServletConfig nh mét tham số. Sự tham chiếu
này sẽ được lưu trữ trong một biến thành viên (member variable) nhằm mục
18


đích là để có thể sử dụng lại sau đó. Một cách chung cho việc thực hiện là gọi
supper.init() và truyền cho nó đối tượng ServletConfig.
Method init() cũng có thể khai báo mà nó có thể throw mét
ServletException. Nếu bởi vì một số lý do nào đó servlet không thể khởi tạo
được các tài nguyên cần thiết để nắm giữ các request, nó cũng có thể throw mét
ServletException với một thông điệp lỗi.
* service() method.
Method service() phục vụ cho tất cả các request nhận được từ phía client
bởi sử dụng kiểu request/response. Kiểu của method này được cho nh sau:
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;


Method service() có hai tham sè:
-

Một đối tượng ServletRequest, mà nó chứa đựng thông tin yêu cầu và các
thông tin cung cấp bởi phía client.

-

Một đối tượng ServletResponse, chứa đựng thông tin trả về cho phía
client. Chóng ta không phải luôn luôn cài đặt method này một cách trực
tiếp, trừ phi khi chóng ta extend class GenericServlet trừu tượng. Điều
chung nhất trong việc cài đặt method service() là trong class HttpServlet.
Class HttpServlet cài đặt giao diện của servlet bởi sự extend
GenericServlet. Method service() của nó hỗ trợ cho các request HTTP/1.1
bởi việc xác định kiểu của request và gọi đến method thích hợp.
* destroy() method.
Method này chấm dứt vòng đời của một servlet. Khi mét Web application

kết thúc, method destroy() của servlet được gọi đến. Tất cả các tài nguyên được
khởi tạo bởi method init() đều được dọn dẹp. Đoạn code sau đây cho biết dấu
hiệu của method destroy().
public void destroy();

19


d. Xây dùng một Servlet.
Trong ví dụ này, chúng ta sẽ xây dựng một servlet đơn giản, mục đích của
nó là phục vụ request và trả lời bởi đưa ra địa chỉ của phía client. Đoạn code
được mô tả nh sau:

package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class SimpleServlet extends HttpServlet {
public void init(ServletConfig config)
throws ServletException {
// Always pass the ServletConfig object to the super class
super.init(config);
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Simple Servlet</title></head>");
out.println("<body>");

20



// Outputs the address of the calling client
out.println("Your address is " + request.getRemoteAddr()
+ "\n");
out.println("</body></html>");
out.close();
}
}

Những method sau đã được override ở SimpleServlet đó là:
- init()
- doGet()
- doPost()
* Method init().
SimpleServlet đầu tiên định nghĩa ra sự cài đặt của method init(). Nó lấy
đối tượng ServletConfig được truyền vào và sau đó chuyển lên cho method init()
của super, cái mà sẽ lưu giữ đối tượng để sử dụng lại sau này. Đoạn code thể
hiện hành động này là:
super.init(config);

Cha của SimpleServlet thực tế đã lưu giữ đối tượng ServletConfig là
GenericServlet. Chóng ta cũng lưu ý rằng sự cài đặt method init() này cũng đã
không tạo ra bất cứ tài nguyên nào. Bởi thế trong SimpleServlet cũng không cần
cài đặt method destroy().
* Các method doGet() và doPost().
Các method doGet() và doPost() trong SimpleServlet là nơi các giao dịch
logic được tiến hành, và trong trường hợp này, method doGet() chỉ đơn thuần là
gọi method doPost().
Cả hai method này nhận các đối tượng HttpServletRequest và
HttpServletResponse nh là các tham sè. HttpServletRequest chứa đựng thông tin
của phía client gửi đến, và HttpServletResponse chứa đựng thông tin sẽ gửi trở


21


lại cho phía client.
e. JavaServer Page.
JavaServer Page, hay là JSP, là một công nghệ đơn giản nhưng cực kì
mạnh mẽ được thường xuyên sử dụng để sinh ra HTLM động ở phía server.
JSPs được extension trực tiếp từ Java servlet và được thiết kế để cho các nhà
phát triển đưa Java trực tiếp vào tài liệu của request. Một tài liệu JSP có mở
rộng là .jsp. Đoạn code sau đây sẽ chứa một ví dụ đơn giản của một JSP file. Và
kết quả đưa ra được chỉ ra trong hình 1.6.
<HTML>
<BODY>
<% out.println("HELLO JSP READER"); %>
</BODY>
</HTML>

Tài liệu này trong giống nh bất cứ một tài liệu HTML nào với việc thêm
vào một thẻ chứa code của Java.

Hình 1.6: Kết quả của ví dụ JSP.
Khi lần đầu tiên được yêu cầu, file này sẽ được dịch ra thành một servlet,
tạo thành một đối tượng và được đưa vào bộ nhớ. Sau đó servlet sinh ra sẽ phục
vụ cho request, kết quả trả về được gửi trở lại cho phía client. Với các request
sau đó, server sẽ kiểm tra xem file JSP gốc có bị thay đổi hay không. Nếu nh nó

22



không có thay đổi gì, server sẽ gọi đối tượng đã được biên dịch. Nếu nh mã
nguồn đã bị thay đổi, bộ máy JSP sẽ quay lại mã nguồn của JSP. Hình 1.7 sẽ
cho ta thấy được quá trình này.

Hình 1.7: Các bước của một JSP request.
Các bước bao gồm:
1. Phía client yêu cầu một trang JSP.
2. Bộ máy JSP biên dịch JSP sang mét Servlet.
3. Servlet được biên dịch và được gọi đến.
4. Servlet phục vụ request và gửi trả lại phía client mét response.
Về bản chất JSPs chỉ là Servlet khi nó được tạo ra từ sự kết hợp giữa
HTML và mã nguồn Java. Vì lẽ đó, chúng có nguồn và chức năng của một
servlet.
1.1.7. Bắt đầu với Struts.
a. Tạo một ứng dụng trên nền Struts:
Bởi vì Struts được mô hình dựa trên mô hình thiết kế MVC, cho nên ta
phải tuân theo quy trình mẫu cho việc phát triển của bất cứ ứng dụng Web nào
trên nền của Struts. Quy trình này khởi đầu bởi việc xác định các thành phần
Views của ứng dụng, sau đó là kiến tạo các thành phần đối tượng Controller
phục vụ cho các Views này và cuối cùng là các thành phần Model sẽ được thực
thi. Quy trình này có thể mô tả bởi các bước như sau:
23


1. Xác định và kiến tạo các thành phần Views, trong sự liên hệ với mục
đích của chúng sẽ thể hiện được giao tiếp với người dùng của ứng
dụng. Thêm tất cả các ActionForms sử dụng bởi các thành phần Views
được kiến tạo đó trong file struts-config.xml.
2. Tạo các thành phần Controller cho ứng dụng.
3. Xác định mối quan hệ tồn tại giữa các thành phần Views và các thành

phần Controllers (trong file strust-config.xml).
4. Tạo sự hiệu chỉnh thích hợp tới file web.xml, mô tả các thành phần
Struts tới ứng dụng Web.
5. Thực thi ứng dụng.
* Tạo các trang View.
Khi chóng ta tạo các trang Views trong một ứng dụng Struts, chóng ta
thường xuyên tạo các trang JSP mà chúng là sự kết hợp giữa kí pháp JSP/HTML
và một vài sự kết hợp của các thư viện thẻ của Struts. Kí pháp JSP/HTLM tương
tự nh bất kì một trang Web nào và không được bàn luận ở đây, tuy nhiên các thư
viện thẻ của Struts là một vấn đề cần quan tâm. Hiện nay có 3 thư viện thẻ chính
của Struts, đó là: Bean, HTLM và Logic.
Trang Index View.
<%@ page language="java" %>
<%@ taglib uri="/WEB−INF/struts−html.tld" prefix="html" %>
<html>
<head>
<title>Wiley Struts Application</title>
</head>
<body>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>

24


<tr bgcolor="#36566E">
<td height="68" width="48%">
<div align="left">

<img src="images/hp_logo_wiley.gif" width="220" height="74">
</div>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<html:form action="Lookup" name="lookupForm" type="wiley.LookupForm" >
<table width="45%" border="0">
<tr>
<td>Symbol:</td>
<td><html:text property="symbol" /></td>
</tr>
<tr>
<td colspan="2" align="center"><html:submit /></td>
</tr>
</table>
</html:form>
</body>
</html>

Nh chóng ta thấy ở trên, trang index view trông giống nh mét trang HTML
bất kì được sử dụng để thu nhận dữ liệu, ngoại trừ một số thẻ đặc biệt. Thay vì
việc sử dụng các thẻ HTML thông thường nh các trang HTML khác, index.jsp sử
dụng thẻ của Struts đó là: <html:form />. Thẻ này cùng với các thẻ con của nó
bao gồm quá trình xử lý của Struts form. Các thuộc tính của các thẻ được sử
dụng trong ví dụ này được miêu tả trong bảng sau:
Thuộc tính


Mô tả
25


×