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

Công nghệ Struts, Hibernate và Spring trong xây dựng ứng dụng Web Tuyển dụng

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 (4.65 MB, 93 trang )

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Mục đích nội dung của ĐATN
 Tìm hiểu công nghệ Struts, Hibernate và Spring.
 Xây dựng Demo ứng dụng tuyển dụng.
2. Các nhiệm vụ cụ thể của Đồ án tốt nghiệp
 Thực tập tại công ty TriaxVN để tìm hiểu về công nghệ Struts, Hibernate và
Spring.
 Tìm hiểu nghiệp vụ và phân tích bài toán tuyển dụng.
 Xây dựng và cài đặt chương trình ứng dụng Demo.
3. Lời cam đoan của sinh viên:
Tôi – Nguyễn Tuấn Minh – cam kết ĐATN là công trình nghiên cứu của bản
thân tôi dưới sự hướng dẫn của Ths. Bùi Thị Hòa.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của
bất kỳ công trình nào khác.
Hà Nội, ngày 20 tháng 5 năm 2008
Tác giả ĐATN
Nguyễn Tuấn Minh
4. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho
phép bảo vệ :
Hà Nội, ngày 20 tháng 5 năm 2008
Giáo viên hướng dẫn
Ths. Bùi Thị Hòa
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Nội dung của đồ án này bao gồm những công việc sau:
 Tìm hiểu về xu hướng phát triển ứng dụng Web trong giai đoạn hiện nay, thế
hệ Web 2.0 và kỹ thuật AJAX.
 Nghiên cứu, tìm hiểu công nghệ Struts, Hibernate và Spring. Đây là các công
nghệ mã nguồn mở nổi tiếng nhất trong lĩnh vực lập trình ứng dụng Web dựa
trên ngôn ngữ Java sử dụng theo mô hình MVC.
 Áp dụng các công nghệ Struts, Hibernate, Spring và Ajax để xây dựng
chương trình ứng dụng tuyển dụng trực tuyến.


Với những nội dung của đồ án được trình bày như trên, báo cáo đồ án tốt nghiệp
được chia thành 3 chương. Nội dung của mỗi chương được trình bày như sau:
 Chương 1: Giới thiệu chung về xu hướng phát triển các ứng dụng Web
trong những năm gần đây. Trong đó, bao gồm việc tìm hiểu về công nghệ
Web 2.0, kỹ thuật lập trình Ajax, kiến trúc J2EE trong Java và sơ lược một
số Framework mã nguồn mở nổi tiếng trong xây dựng ứng dụng Web dựa
trên ngôn ngữ Java.
 Chương 2: Tập trung đi sâu tìm hiểu các công nghệ Struts, Hibernate và
Spring với việc kế thừa các ưu điểm của mô hình lập trình Web điển hình:
mô hình MVC. Đồng thời phân tích, đánh giá các điểm mạnh và điểm yếu
của từng framework trong quá trình tích hợp xây dựng ứng dụng Web.
 Chương 3: Dựa vào những kiến thức đã nghiên cứu từ chương 1 và
chương 2. Ở chương 3, tác giả áp dụng chúng để xây dựng một bài toán
demo, đó là bài toán tuyển dụng. Đây là một bài toán mang nhiều ý nghĩa
thực tế và hoàn toàn có thể triển khai thành ứng dụng trong xã hội. Tuy
nhiên, do thời gian hạn chế và do kinh nghiệm của người thiết kế còn thiếu
nhiều nên bài toán mới chỉ dừng lại với một số module nhất định. Tác giả
cũng hi vọng ứng dụng có thể được xây dựng hoàn chỉnh và triển khai
được trong thời gian sắp tới.
Phần kết luận và đánh giá : Trong phần này, tác giả đưa ra một số kết quả đã thực
hiện được trong quá trình thực hiện đồ án tốt nghiệp. Đồng thời đưa ra một số đánh
giá về chương trình cũng như một số giải pháp và hướng phát triển của các công
nghệ Struts, Hibernate và Spring trong tương lai.
ABSTRACT OF THESIS
The content of this thesis includes the following parts :
 Research on the trend of Web application development nowadays, web 2.0
generation as well as AJAX technique.
 Studying and doing research Struts, Hibernate and Spring technology. They
are the best open source code technology in field of Web application
programing based on Java language and using MVC model.

 Using Struts, Hibernate, Spring and Ajax technology to build a online
application programe.
As the content was stated in the above paragraph, graduation thesis divide into 3
chapters. The content of each chapter was disposed in the following detail :
 Chapter 1: General introduction about trend of web application
development in some recent years. This chapter focus on studying web
2.0 technology, Ajax programing technique, J2EE architecture in Java as
well as some the best open source code Frameworks in web application
based on Java language.
 Chapter 2: This chapter goes into the details of Struts, Hibernate and
Spring technology by inheriting advantages of typical Web programing
model: MVC model. At the same time, this part analyses and evaluates
strengths and weaknesses of each framework in Web application,
construction and integration process.
 Chapter 3: Base on recherches from two chapters above, the author, in
this chapter, applies theses knowledges to design a demo. This is a
recruitment demo (program) which is significant in pratice and capable
of applying in the society. However, because of lack of time and
experiences, the program limits at some modules. The author hopes that
this program will be fullfilled and applied in the near future.
Conclusion and assess: In this part, the author gives some results achieved in
completing graduation thesis. Also, the author evalutates and gives some solutions
and orientation to develop Struts, Hibernate and Spring technology in the future.
LỜI NÓI ĐẦU
Ngày nay, ngành công nghệ thông tin đang phát triển như vũ bão và đi vào mọi
mặt của đời sống, kinh tế, xã hội của con người. Đóng góp vào sự phát triển đó, vai
trò của Web ngày càng trở nên quan trọng và là một công cụ đắc lực dẫn tới mọi
thành công trong nhiều lĩnh vực trọng điểm. Với sự bùng nổ của truyền thông như
hiện nay thì Web là phương thức lan truyền thông tin nhanh chóng, hiệu quả và
kinh tế nhất. Rất nhiều tập đoàn sản xuất phần mềm lớn như IBM, Microsoft, Sun

MicroSystem … đã tham gia vào lĩnh vực xây dựng và phát triển các ứng dụng
Web. Tuy nhiên, các ứng dụng Web phát triển nhanh và mạnh mẽ như hiện nay
không thể không kể đến một cộng đồng, đó là cộng đồng mã nguồn mở. Sự đóng
góp của họ là vô cùng lớn lao với mục đích cao cả là phát triển công nghệ và phục
vụ cộng đồng. Rất nhiều dự án lớn đã ra đời từ cộng đồng mã nguồn mở, có thể kể
đến một số framework nổi tiếng như : Struts, Hibernate, Spring, JSF …
Ở Việt Nam, phát triển các ứng dụng Web là hướng đi đầy tiềm năng và hứa hẹn
cho tất cả những ai yêu thích công nghệ thông tin nói chung và những kỹ sư phần
mềm nói riêng.
Với tư cách là một kỹ sư phần mềm tương lai cùng với niềm đam mê công nghệ
Web, đặc biệt là các công nghệ mã nguồn mở, em đã chọn cho mình đề tài “Công
nghệ Struts, Hibernate và Spring trong xây dựng ứng dụng Web Tuyển dụng”.
Trong thời gian thực hiện đồ án, nghiên cứu, tìm hiểu công nghệ em đã đạt được
một số kết quả nhất định. Đó là cơ sơ quan trọng giúp em nắm bắt công nghệ và có
thể làm việc tốt sau này.
Để có thể hoàn thành đồ án, đó là nhờ công lao to lớn của các thầy cô giáo
trong trường Đại học Bách Khoa Hà Nội nói chung và các thầy cô trong khoa
Công nghệ Thông tin, bộ môn công nghệ phần mềm nói riêng. Em xin gửi tới các
thầy cô lời cám ơn chân thành nhất.
Em xin cám ơn cô Bùi Thị Hòa – Giảng viên chính bộ môn Công nghệ phần
mềm, khoa Công nghệ Thông tin, trường Đại học Bách Khoa Hà Nội đã nhiệt
tình giúp đỡ, hướng dẫn, chỉ bảo tận tình trong suốt thời gian em làm đồ án tốt
nghiệp.
Em cũng xin gửi lời cám ơn đến Công ty Triax Việt Nam, các anh chị trong
công ty: Anh Shishikura, chị Khánh Ngọc, anh Việt, anh Công… đã tạo mọi điều
kiện, giúp đỡ và góp ý để em có thể hoàn thành tốt đồ án.
Cuối cùng, em xin gửi lời cám ơn chân thành tới gia đình, bạn bè đã động viên,
chăm sóc, đóng góp ý kiến và giúp đỡ trong quá trình học tập, nghiên cứu và thực
hiện tốt đồ án tốt nghiệp.
Hà Nội, tháng 5 năm 2008

Sinh viên: Nguyễn Tuấn Minh

MỤC LỤC
CHƯƠNG I : TỔNG QUAN VỀ CÔNG NGHỆ WEB JAVA
TRONG NHỮNG NĂM GẦN ĐÂY
I.1. Công nghệ Web 2.0
I.2. Công nghệ AJAX
I.3. Kiến trúc J2EE trong xây dựng ứng dụng Web
I.3.1. Kiến trúc J2EE
I.3.1.1. Java Servlet
I.3.1.2. JSP (Java Server Page)
CHƯƠNG II : STRUTS , HIBERNATE, SPRING TRONG LẬP
TRÌNH ỨNG DỤNG WEB
II.1. Một số khái niệm trong lập trình ứng dụng Web
II.1.1. Framework là gì ?
II.1.2. Hai mô hình kiến trúc trong ứng dụng Web
II.1.2.1. Mô hình 1
II.1.2.1.1. Đặc điểm
II.1.2.1.2. Ưu điểm
II.1.2.1.3. Nhược điểm
II.1.2.2 Mô hình 2
II.1.2.2.1. Đặc điểm
II.1.2.2.2. Ưu điểm
II.1.3. Mô hình Model – View – Controller (MVC)
II.1.3.1. Đặc điểm
II.1.3.2. Model
II.1.3.3. View
II.1.3.4. Controller
II.1.3.5. Cơ chế tương tác giữa 3 thành phần trong ứng dụng
II.1.3.6. Ưu điểm của mô hình MVC

II.2. Struts framework
II.2.1. Lịch sử hình thành
II.2.2. Tổng quan về kiến trúc hệ thống
II.2.3. Các thành phần trong Struts
II.2.3.1. Actions
II.2.3.2. Interceptors
II.2.3.3. Value Stack / OGNL
II.2.3.4. Result Types
II.2.3.5. Results / View technologies
II.2.4. Thư viện thẻ trong Struts
II.2.4.1. Thư viện thẻ trong version 2.xx
II.2.5. Cấu hình trong Struts
II.2.5.1. Cấu hình trong version 2.xx
II.2.6. Ưu nhược điểm của Struts trong xây dựng ứng dụng Web
II.3. Hibernate framework
II.3.1. Lịch sử hình thành
II.3.2. Một số khái niệm
II.3.2.1. Các khái niệm liên quan đến object / relational persistence
II.3.2.2. Persistence layer
II.3.2.3. ORM (Object/Relational Mapping)
II.3.3. Kiến trúc hệ thống
II.3.4. Cấu hình trong Hibernate
II.3.5. Ưu nhược điểm của Hibernate trong lập trình ứng dụng Web
II.4. Spring framework
II.4.1. Lịch sử hình thành
II.4.2. Các thành phần trong Spring
II.4.4. Cấu hình Spring
II.4.5. Ưu điểm của Spring
CHƯƠNG III : XÂY DỰNG ỨNG DỤNG TUYỂN DỤNG
III.1. Giới thiệu bài toán tuyển dụng

III.1.1. Mục đích
III.1.2. Mục tiêu của hệ thống
III.2. Phân tích bài toán tuyển dụng
III.2.1. Những yêu cầu về chức năng
III.2.1.1. Đối tượng người dùng và các chức năng
III.2.1.2. Biểu đồ các Use Case
III.2.1.2.1. Actor: Admin (Người quản trị)
III.2.1.2.2. Actor: Company (Nhà tuyển dụng)
III.2.1.2.3. Actor: Advertiser (Nhà quảng cáo)
III.2.1.2.4. Actor: Candidate (Ứng viên)
III.2.2. Lựa chọn giải pháp công nghệ
III.2.2.1. Bảng chi tiết các chức năng
III.3.1. Thiết kế dữ liệu
III.3.1.1. Mô hình quan hệ thực thể
III.3.1.2. Thiết kế cơ sở dữ liệu
III.3.1.2.1. Bảng Account
III.3.1.2.2. Bảng Role
III.3.1.2.3. Bảng AccountRole
III.3.1.2.4. Bảng Function
III.3.1.2.5. Bảng RoleFunction
III.3.1.2.6. Bảng Advertiser
III.3.1.2.7. Bảng Adver_Content
III.3.1.2.8. Bảng Job_Type
III.3.1.2.9. Bảng Company
III.3.1.2.10. Bảng Province
III.3.1.2.11. Bảng Category
III.3.1.2.12. Bảng News
III.3.1.2.13. Bảng Rec_Notice
III.3.1.2.14. Bảng Occupation
III.3.1.2.15. Bảng Candidate

III.3.1.2.16. Bảng Degree
III.3.1.2.17. Bảng Candidate_Degree
III.3.1.2.18. Bảng Friend
III.3.1.2.19. Bảng Blog
III.3.1.2.20. Bảng Blog_Comment
III.3.1.2.21. Bảng Work_Type
III.3.2. Thiết kế module
III.3.2.1. Thiết lập môi trường lập trình
III.3.2.2. Mô hình thiết kế module
III.3.2.3. Thiết kế tầng Model
III.3.2.4. Thiết kế tầng View
III.3.2.5. Thiết kế tầng Controller
III.3.2.6. Các file cấu hình hệ thống
III.3.3. Thiết kế giao diện Web
III.3.3.1. Thiết kế giao diện Admin
III.3.3.2. Thiết kế giao diện người dùng
KẾT LUẬN VÀ ĐÁNH GIÁ
TÀI LIỆU THAM KHẢO
MỤC LỤC HÌNH VẼ
Hình I.1 Mô hình “cổ điển” của một ứng dụng Web
Hình I.2 Mô hình sử dụng AJAX của một ứng dụng Web
Hình I.3 Ứng dụng đa tầng trong J2EE
Hình I.4 Mô hình ứng dụng Browser/Server
Hình 1.5 Cơ chế hoạt động của JSP
Hình II.1 Mô hình 1 về kiến trúc ứng dụng Web
Hình II.2 Mô hình 2 về kiến trúc ứng dụng Web
Hình II.3 Mô hình MVC trong kiến trúc ứng dụng Web
Hình II.4 Cơ chế tương tác giữa các thành phần trong mô hình MVC
Hình II.5 Vòng đời request trong ứng dụng Struts2
Hình II.6 Persistence layer trong kiến trúc phân tầng

Hình II.7 Kiến trúc hệ thống trong Hibernate
Hình II.8 Các module trong Spring
Hình III.1. Các nhóm sử dụng hệ thống
Hình III.2 Sơ đồ phân rã chức năng
Hình III.3 Use Case Admin quản lý Advertiser
Hình III.4 Use Case Admin quản lý Advertisment
Hình III.5 Use Case Admin quản lý Candidate
Hình III.6 Use Case Admin quản lý Company
Hình III.7 Use Case Admin quản lý News
Hình III.8 Use Case Company quản lý Profile
Hình III.9 Use Case Company quản lý tin tức
Hình III.10 Use Case Company quản lý thông tin tuyển dụng
Hình III.11 Use Case Advertiser quản lý quảng cáo
Hình III.12 Use Case Candidate quản lý Profile
Hình III.13 Use Case Candidate quản lý Friends
Hình III.14 Use Case Candidate quản lý Blog
Hình III.15 Sơ đồ diễn tiến chức năng LogIn
Hình III.16 Sơ đồ diễn tiến chức năng LogOut
Hình III.17 Sơ đồ diễn tiến chức năng Add News
Hình III.18 Sơ đồ diễn tiến chức năng Edit News
Hình III.19 Sơ đồ diễn tiến chức năng Delete News
Hình III.20 Sơ đồ diễn tiến chức năng Edit Profile
Hình III.21 Sơ đồ diễn tiến chức Add User
Hình III.22 Sơ đồ diễn tiến chức năng Edit User
Hình III.23 Sơ đồ diễn tiến chức năng Delete User
Hình III.24 Sơ đồ diễn tiến chức năng Company Search Candidate
Hình III.25 Sơ đồ diễn tiến chức năng Company bookmarks Candidate
Hình III.26 Sơ đồ diễn tiến chức năng Blog Individual
Hình III.28 Các gói module chính
Hình III.29 Module admin

Hình III.30 Module User
Hình III.31 Mô hình thiết kế Module theo Struts
Hình III.32 Mô hình thiết kế tầng trong Controller
Hình III.33 Màn hình Login
Hình III.34 Màn hình giao diện chính
Hình III.35 Màn hình hiển thị danh sách
Hình III.36 Màn hình thêm mới, cập nhật
Hình III.37 Màn hình giao diện trang chủ
DANH MỤC BẢNG
Bảng 1: Danh sách các chức năng
Bảng 2: Bảng Account
Bảng 3: Bảng Role
Bảng 4: Bảng AccountRole
Bảng 5: Bảng Function
Bảng 6: Bảng RoleFunction
Bảng 7: Bảng Advertiser
Bảng 8: Bảng Adver_Content
Bảng 9: Bảng Job_Type
Bảng 10: Bảng Company
Bảng 11: Bảng Province
Bảng 12: Bảng Category
Bảng 13: Bảng News
Bảng 14: Bảng Rec_Notice
Bảng 15: Bảng Occupation
Bảng 16: Bảng Candidate
Bảng 17: Bảng Degree
Bảng 18: Bảng Candidate_Degree
Bảng 19: Bảng Friend
Bảng 20: Bảng Blog
Bảng 21: Bảng Blog_Comment

Bảng 22: Bảng Work_Type
DANH MỤC CÁC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT TRONG
BÁO CÁO TỐT NGHIỆP
STT Từ viết tắt Viết đấy đủ Ý nghĩa
1
JSF JavaServer Faces
Một framework trong lập trình ứng dụng Web
dựa trên công nghệ Java
2
MVC Model-View-Controller Một mô hình lập trình ứng dụng Web
3
JSP Java Server Pages
Một ngôn ngữ lập trình Web phía máy chủ trên
nền công nghệ Java
4
DOM Document Object Model
Mô hình đối tượng tài liệu (Khái niệm dùng
trong Ajax)
5
PC Personal Computer Máy tính cá nhân
6
IT Information Technology Công nghệ thông tin
7
JVM Java Virtual Machine Máy ảo Java
8
API
Application Program
Interface
Hệ giao tiếp lập trình ứng dụng
9

HTTP
Hypertext Transfer
Protocol
Giao thức truyền siêu văn bản
10
CGI
Common Gateway
Interface
Giao thức cổng dùng chung
11
PL Presentation Layer
Tầng trình diễn trong kiến trúc 3 tầng của
Web.
12
W3C
World Wide Web
Conrotium
Là một tổ chức công nghiệp quốc tế thành lập
năm 1994 nhằm phát triển các giao thức
chung để phát triển WWW.
13
XML
Extensible Markup
Language
Ngôn ngữ đánh dấu mở rộng do W3C tạo ra
14
Framework Framework
Tập hợp các lớp, giao diện để hỗ trợ giải
quyết các vấn đề cụ thể trong quá trình xây
dựng phần mềm

15
DB Database Cơ sở dữ liệu
16
AJAX
Asynchronous
JavaScript and XML
Là tập hợp của nhiều công nghệ với thế mạnh
của riêng mình để tạo thành một sức mạnh
mới
17
UI User Interface Giao diện người dùng
18
URL
Uniform Resource
Locator
Địa chỉ của một trang Web
19
POJO Plain Old Java Object Đối tượng thuần Java
20
ERD
Entity Relationship
Diagram
Mô hình quan hệ thực thể
CHƯƠNG I : TỔNG QUAN VỀ CÔNG NGHỆ WEB JAVA
TRONG NHỮNG NĂM GẦN ĐÂY
I.1. Công nghệ Web 2.0
Sự phát triển mạnh mẽ của của ngành công nghệ thông tin trên thế giới với nhiều
cuộc cách mạng trên nghiều lĩnh vực, thế hệ Web mới có những thay đổi quan trọng
không chỉ ở nền tảng công nghệ mà còn ở cách thức sử dụng, hình thành nên môi
trường cộng đồng mà ở đó mọi người cùng tham gia đóng góp cho xã hội “ảo” chứ

không còn dừng lại ở quá trình “duyệt và xem” như trước kia.
Ngày nay, chúng ta đã rất quen thuộc với thuật ngữ “Web 2.0”. Vậy, Web 2.0 là
gì ? Làm sao phân biệt được đâu là Web 1.0, đâu là Web 2.0 ? Web 2.0 đang trở
nên thịnh hành và có phần được lăng xê quá mức. Thực chất, Web 2.0 có nghĩa là
sử dụng web đúng với bản chất và khả năng của nó.
Mục tiêu của những người tiên phong xây dựng Internet là nhằm kết nối các nhà
nghiên cứu và các máy tính của họ với nhau để có thể chia sẻ thông tin hiệu quả.
Khi bổ dung World Wide Web (năm 1990), Tim Berners-Lee cũng nhằm mục tiêu
tạo phương tiện cho phép người dùng tự do đưa thông tin lên Internet và dễ dàng
chia sẻ với mọi người (trình duyệt Web đầu tiên do Berners-Lee viết bao gồm cả
công cụ soạn thảo trang Web). Tuy nhiên, sau đó web đã phát triển theo hướng hơi
khác mục tiêu ban đầu.
Tuy có một số ngoại lệ nhưng thế giới Web 1.0 (thế hệ Web trước 2.0) chủ yếu
gồm các website “đóng” của các hãng thông tấn hay các công ty nhằm mục đích
tiếp cận độc giả hay khách hàng hiệu quả hơn. Nó là phương tiện phát tin hơn là
phương tiện chia sẻ thông tin. Chỉ đến gần đây, với sự xuất hiện của nhiều kỹ thuật
mới như blog, wiki … web mới trở nên có tính cộng đồng (và cộng tác) hơn và trở
nên gần hơn so với sự kỳ vọng và khả năng thực sự của nó.
Khái niệm Web 2.0 đầu tiên được Dale Dougherty, phó chủ tịch của Oreilly
Media, đưa ra tại hội thảo Web 2.0 lần thứ nhất do Oreilly Media và MediaLive
International tổ chức vào tháng 10/2004. Dougherty không đưa ra định nghĩa mà chỉ
dùng các ví dụ so sánh phân biệt Web 1.0 và Web 2.0: “DoubleClick là Web 1.0;
Google AdSense là Web 2.0. Ofoto là Web 1.0; Flickr là Web 2.0. Britannica online
là Web 1.0; Wikipedia là Web 2.0 v.v…”.
Các đặc tính của Web 2.0 :
1. Web có vai trò nền tảng, có thể chạy mọi ứng dụng
2. Phục vụ mọi người
3. Tập hợp trí tuệ cộng đồng
4. Dữ liệu có vai trò then chốt
5. Phần mềm được cung cấp ở dạng dịch vụ web được cập nhật không ngừng

và luôn là bản Beta
6. Phát triển ứng dụng dễ dàng và nhanh chóng, gọn nhẹ và thích hợp
7. Phần mềm có thể chạy trên nhiều thiết bị
8. Người dùng tự chủ
Ban đầu, Web 2.0 được chú trọng tới yếu tố công nghệ, nhấn mạnh tới vai trò nền
tảng ứng dụng. Nhưng đến hội thảo Web 2.0 lần 2 được tổ chức vào tháng 10/2005,
Web 2.0 được nhấn mạnh đến tính chất sâu xa hơn – đó là yếu tố cộng đồng.
 Công nghệ:
Trên thực tế, ứng dụng trên Web là thành phần rất quan trọng của Web 2.0.
Hàng loạt công nghệ mới được phát triển nhằm làm cho ứng dụng trên web
“mạnh” hơn, nhanh hơn và dễ sử dụng hơn, được xem là nền tảng của Web 2.0.
Kiến trúc công nghệ của Web 2.0 hiện vẫn đang được phát triển nhưng cơ bản
bao gồm : phần mềm máy chủ, cơ chế cung cấp nội dung, giao thức truyền
thông, trình duyệt và ứng dụng.
 Cung cấp nội dung:
Bước phát triển đầu tiên và quan trọng nhất hướng đến Web 2.0 đó là cơ chế
cung cấp nội dung, sử dụng các giao thức chuẩn hóa để cho phép người dùng sử
dụng thông tin theo cách của mình (nghĩa là có khả năng tùy biến thông tin). Có
nhiều giao thức được phát triển để cung cấp nội dung như RSS, RDF và Atom,
tất cả đều dựa trên XML. Ngoài ra còn có các giao thức đặc biệt như FOAF và
XFN dùng để mở rộng tính năng của Website hay cho phép người dùng tương
tác.
 Dịch vụ Web:
Các giao thức truyền thông 2 chiều là một trong những thành phần then chốt của
kiến trúc Web 2.0. Có hai loại giao thức chính là REST và SOAP. REST
(Representation State Transfer) là dạng yêu cầu dịch vụ web mà máy khách
truyền đi trạng thái của tất cả giao dịch; còn SOAP (Simple Object Access
Protocol) thì phụ thuộc vào máy chủ trong việc duy trì thông tin trạng thái. Với
cả hai loại, dịch vụ Web đều được gọi qua API. Ngôn ngữ chung của dịch vụ
Web là XML, nhưng có thể có ngoại lệ.

Một ví dụ điển hình của giao thức truyền thông thế hệ mới là Object Properties
Broadcasting Protocol do Chris Dockree phát triển. Giao thức này cho phép các
đối tượng ảo (tồn tại trên Web) tự biết chúng “là gì và có thể làm gì”, nhờ vậy
có thể tự liên lạc với nhau khi cần.
 Phần mềm máy chủ:
Web 2.0 được xây dựng trên kiến trúc web thế hệ trước nhưng chú trọng hơn
đến phần mềm làm việc ở “hậu trường”. Cơ chế cung cấp nội dung chỉ khác
phương thức cấp phát nội dung động (của Web 1.0 về danh nghĩa), tuy nhiên
dịch vụ Web yêu cầu tiến trình làm việc và dữ liệu chặt chẽ hơn.
Các giải pháp phát triển theo hướng Web 2.0 hiện nay có thể phân ra làm 2 loại :
hoặc xây dựng hầu hết các tính năng trên một nền tảng máy chủ duy nhất; hoặc
xây dựng ứng dụng “gắn thêm” cho máy chủ web, có sử dụng giao tiếp API.
 Cộng đồng:
Công nghệ chỉ là bề nổi của Web 2.0, chính cộng đồng người dùng mới là yếu tố
nền tảng tạo nên thế hệ web mới. Việc chuyển từ “duyệt và xem” sang “tham
gia” là cuộc cách mạng thực sự, dĩ nhiên nhờ có sự phát triển công nghệ giúp
hiện thực khả năng này nhưng ở đây muốn nhấn mạnh đến hành vi của người
dùng đối với web.
Về cơ bản, Web 2.0 trao quyền nhiều hơn cho người dùng và tạo nên môi trường
liên kết chặt chẽ các cá nhân với nhau. Giờ đây, có nhiều ví dụ cho thấy cộng
đồng người dùng có thể đóng góp thông tin giá trị khi họ có phương tiện thích
hợp. Wikipedia có lẽ là ví dụ nổi tiếng nhất. Tuy có nhiều học giả không đánh
giá cao Wikipedia, nhưng họ lại quên một điều quan trọng : nó đủ tốt, miễn phí
và nhiều người có thể đọc. Ngoài ra còn có những ví dụ khác như các site Reddit
và Digg để cho người dùng quyết định thông tin gì là quan trọng, hay del.icio.us
cho phép mọi người chia sẻ những địa chỉ Web hay.
Web 2.0 cho phép mọi người có thể đưa lên mạng bất cứ thông tin gì. Với số
lượng người tham gia rất lớn, đến mức độ nào đó, qua quá trình sàng lọc, thông
tin sẽ trở nên vô cùng giá trị. Ở đây, có sự tương đồng với thuyết chọn lọc tự
nhiên.

Thật sự, Web 2.0 không phải là cái gì đó hoàn toàn mới mà là nó là sự phát triển từ
web hiện tại. Nó vẫn là Web như chúng ta dùng lâu nay, chỉ có điều giờ đây chúng
ta làm việc với Web theo cách khác. Các website không còn là những “ốc đảo” mà
trở thành những nguồn thông tin và chức năng, hình thành nên môi trường điện toán
phục vụ các ứng dụng web và người dùng.
I.2. Công nghệ AJAX
Thế hệ Web 2.0 đã bắt đầu và đã trải qua cả một chặng đường dài phía trước để có
thể thay đổi những gì vốn đã trở nên quen thuộc với mọi người hiện nay. Nhưng
đóng vai trò quan trọng góp phần làm nên thế hệ Web trong giai đoạn thứ hai là tổ
hợp công nghệ AJAX.
AJAX là gì ?
Thuật ngữ AJAX xuất hiện lần đầu vào tháng 2 năm 2005, khi Jesse James Garrett
của công ty AdapativePath định nghĩa. AJAX là viết tắt của cụm từ “Asynchonous
JavaScript and XML”. Đó là bộ công cụ cho phép tăng tốc độ ứng dụng web bằng
cách cắt nhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vè tải đi tải lại toàn bộ
trang web.Theo định nghĩa của Garrett thì : AJAX không phải là một công nghệ. Nó
là tập hợp của nhiều công nghệ với thế mạnh của riêng mình để tạo thành một sức
mạnh mới. AJAX bao gồm :
 Thể hiện Web theo tiêu chuẩn XHTML và CSS.
 Nâng cao tính năng động và phản hồi bằng mô hình đối tượng tài liệu –
DOM (Document Object Model).
 Trao đổi và xử lý dữ liệu bằng XML và XSLT.
 Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằng
XMLHttpRequest.
 Và tất cả các kỹ thuật trên được liên kết lại với nhau bằng Javascript.
Hầu hết các câu chuyện về nguồn gốc của AJAX được bắt đầu từ khi Microsoft phát
triển công nghệ Remote Scripting vào năm 1998. Tuy nhiên, phương pháp tải không
đồng bộ nội dung trên một trang Web đã xuất hiện trên thành tố IFRAME của
Internet Explorer 3 (1996) và thành tố LAYER của Netscape 4.0 (1997). Khi giới
thiệu Internet Explorer 4.0, Microsoft đã sử dụng mô hình đối tượng tài liệu. Đến

năm 2000, Netscape hoàn toàn bị đánh mất thị trường trình duyệt vào tay hãng phần
mềm của Bill Gates và thành tố LAYER cũng không được các chuyên gia phát triển
web chú ý tới.
Phải tới vài năm sau, AJAX mới lại lôi kéo được sự quan tâm của giới công nghệ
và trở thành công cụ cải tiến giao diện người dùng cho ứng dụng web. Từ đó, AJAX
trở thành trung tâm trong mọi câu chuyện liên quan đến thế hệ Web 2.0.
Ở các ứng dụng Web truyền thống, khi người dùng cần một thay đổi dữ liệu trên
trang Web, yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còn
gọi là postback), server sẽ xử lý yêu cầu này và gửi trả response chứa các thông tin
dưới dạng HTML và CSS, trang HTML này sẽ thay thế trang cũ. Quy trình này
được mô tả là nhấp-chờ và tải lại (click-wait-and-refresh).
Dưới đây là : Mô hình tương tác trong một ứng dụng Web truyền thống:
Hình I.1 Mô hình “cổ điển” của một ứng dụng Web
AJAX cho phép tạo ra một Ajax Engine nằm giữa giao tiếp này. Khi đó, các yêu
cầu gửi request và nhận response do Ajax Engine thực hiện. Thay vì trả dữ liệu dưới
dạng HTML và CSS trực tiếp cho trình duyệt Web, Web Server có thể gửi trả dữ
liệu dạng XML và Ajax Engine sẽ tiếp nhận, phân tách và chuyển nó thành
XHTML + CSS cho trình duyệt Web hiển thị.
Việc này được thực hiện trên client nên giảm tải rất nhiều cho server, đồng thời
người sử dụng cảm thấy kết quả xử lý được hiển thị tức thì mà không cần nạp lại
trang. Mặt khác, sự kết hợp của các công nghệ web như CSS và XHTML làm cho
việc trình bày trang web tốt hơn nhiều và giảm đáng kể dung lượng trang phải nạp.
Đây là những lợi ích hết sức thiết thực mà AJAX đem lại.
Hình I.2 dưới đây mô tả mô hình sử dụng AJAX :
Hình I.2 Mô hình sử dụng AJAX của một ứng dụng Web
Những nhược điểm của AJAX
AJAX có thể góp phần tạo nên một thế hệ mới cho ứng dụng Web. Tuy nhiên, nó
cũng là một công nghệ “nguy hiểm” khi gây ra không ít rắc rối về giao diện người
dùng và sau đây là một vài minh chứng :
 Phím “Back” (trở lại trang trước) được đánh giá cao trong giao diện trang

web chuẩn. Đáng tiếc chức năng này không hoạt động ăn khớp với Javascript
và mọi người không thể tìm lại nội dung trước đó khi bấm phím Back. Bởi
vậy, chỉ một vài sơ xuất nhỏ là dữ liệu trên trang web đã bị thay đổi và khó
có thể khôi phục lại được. Đây là một trong những nguyên nhân chính khiến
nghiều người không ủng hộ ứng dụng Javascript.
 Bên cạnh đó, mọi người không thể lưu lại địa chỉ web vào thư mục Favourite
(Bookmark) để xem lại về sau. Do áp dụng lớp trung gian để giao dịch, các
ứng dụng AJAX không có một địa chỉ cố định cho từng nội dung. Khiếm
khuyết này làm cho AJAX dễ “mất điểm” trong mắt người dùng.
Nhưng với sự cải thiện không ngừng trong thời gian sắp tới, AJAX sẽ trở thành phổ
dụng cho tất cả các ứng dụng Web.
I.3. Kiến trúc J2EE trong xây dựng ứng dụng Web
I.3.1. Kiến trúc J2EE
J2EE là một khung ứng dụng Web hoạt động hiệu quả mà các công ty trên thế giới
như IBM, Oracle, Sun áp dụng rất hiệu quả trong các dự án của họ. Điểm đặc biệt
hơn nữa là khung ứng dụng này sử dụng các công nghệ mới nhất luông mang tính
cạnh tranh cao ví dụ như Struts, Hibernate, Spring, JSF, EJB …
Tuy nhiên, J2EE không phải là một sản phẩm cụ thể mà chỉ là các đặc tả đưa ra
bởi hãng Sun. Với kiến trúc J2EE, bạn phải lựa chọn, kết nối các thành phần khác
nhau để hình thành nên mô hình phát triển ứng dụng. Bản thân Sun không đưa ra
mô hình phát triển ở dạng đóng gói nhưng có khá nhiều sản phẩm từ các hàng thứ
ba như : IBM, WebSphere, và BEA WebLogic, là các mô hình xây dựng hỗ trợ lập
trình.
J2EE chỉ hỗ trợ ngôn ngữ lập trình Java và trong tương lai có lẽ cũng không có
ngôn ngữ lập trình nào được hỗ trợ thêm bởi kiến trúc này. Nhưng khung ứng dụng
J2EE và ngôn ngữ Java có tính khả chuyển cao. Một chương trình viết bởi Java
được thực thi trên máy ảo Java (Java Virtual Machine) thay vì trực tiếp trên hệ điều
hành cụ thể. Do đó, mã chương trình có thể chuyển từ một hệ điều hành này sang
một hệ điều hành khác (có hỗ trợ JVM) để thực thi một cách dễ dàng. Tính khả
chuyển về hệ điều hành này của J2EE có được là do phần lớn các sản phẩm J2EE

đều hỗ trợ cho nhiều hệ điều hành.
Hơn thế nữa, J2EE cung cấp một thiết kế mẫu (design pattern) mà đã được đúc
rút từ những kinh nghiệm thực tế của các chuyên gia phần mềm trên thế giới. Và
bạn hoàn toàn được thừa hưởng các mẫu thiết kế này mà không cần phải bắt đầu
xây dựng chi tiết từ đầu trong khi một loạt các công ty và nhóm phần mềm đã tiêu
tốn thời gian và công sức để tìm ra những phương án tối ưu cho từng vấn đề họ đã
gặp phải trong quá trình phát triển các dự án. Ví dụ với tầng Web của ứng dụng
J2EE kinh điển, nếu chúng ta bắt tay từ đặc tả kỹ thuật (specification) của JSP và
Servlet chúng cho phép xây dựng được những trang Web động riêng biệt rất tốt
nhưng lại hỗ trợ rất ít trong việc quản lý luồng dữ liệu giữa các trang với nhau, đặc
biệt chúng không tách rời hai tầng hiển thị (presentation) và tầng nghiệp vụ
(business). Mô hình MVC (Model - View - Controller) lại là một mô hình thiết kế
mang tính tổng thể để giải quyết vấn đề trên, nó được tạo bởi Krasner và Pope năm
1988 cho Smalltalk, cho phép xây dựng nên các ứng dụng phân tầng một cách rất
hiệu quả bằng cách tạo ra những phương thức quản lý từng tầng một cách riêng rẽ
và quản lý luồng dữ liệu. Trong J2EE, thì MVC cũng được xây dựng dựa trên
những tính năng mạnh của công nghệ JSP và Servlet.
Nền tảng J2EE sử dụng mô hình ứng dụng phân tán đa tầng cho tất cả các ứng
dụng Enterprise. Ứng dụng logic có thể chia làm nhiều thành phần tùy theo chức
năng, rất nhiều các thành phần tạo nên ứng dụng J2EE và được cài đặt trên nhiều
máy tính khác nhau.
Hình I.4 dưới đây mô tả kiến trúc đa tầng trong ứng dụng J2EE:
Hình I.3 Ứng dụng đa tầng trong J2EE
 Các thành phần Client-tier chạy trên máy client.
 Các thành phần Web tier chạy trên J2EE server.
 Các thành phần Business tier chạy trên J2EE server.
 EIS (Enterprise information system)-tier chạy trên EIS server.
Mặc dù một ứng dụng J2EE có thể bao gồm ba hoặc bốn tầng như trong hình I.4,
tuy nhiên các ứng dụng đa tầng J2EE trong thực tế thường sử dụng theo kiến trúc ba
tầng bởi vì chúng được phân tán trên ba vị trí khác nhau : các máy client, máy J2EE

server, và database.
Các thành phần J2EE
Các ứng dụng J2EE được tạo nên từ các thành phần. Một J2EE component bản thân
nó là đơn vị phần mềm thực hiện một chức năng nhất định có các lớp và các file và
có thể giao tiếp được với các thành phần khác. Đặc tả J2EE định nghĩa ra các thành
phần sau :
 Các ứng dụng máy khách và applet là các thành phần chạy trên client.
 Các thành phần Java Servlet và JavaServer Pages (JSP) là các thành phần
Web chạy trên server.
 Các thành phần Enterprise JavaBean (EJB) là các thành phần nghiệp vụ
chạy trên server.
Các thành phần J2EE được viết bằng ngôn ngữ lập trình Java và được biên dịch
giống như trong các ngôn ngữ lập trình khác. Sự khác biệt giữa các thành phần
J2EE và các lớp Java “chuẩn” là các thành phần J2EE được nhúng trong ứng dụng
J2EE, được xác nhận để đảm bảo tính thống nhất theo như đặc tả J2EE, và được
triển khai thành sản phẩm, nơi chúng có thể chạy và được quản lý bởi J2EE server.
I.3.1.1. Java Servlet
Servlet được tạo ra vào năm 1997, Servlet là các thành phần đối tượng nhúng trên
trình chủ Web server thực hiện xử lý yêu cầu và sinh ra các trang Web động trả về
máy khách. Java Servlet là công nghệ nền tảng cho các công nghệ khác để tạo ra
các ứng dụng Web có tính tương tác cao mà giao diện người dùng được sinh ra ở
phía server. Công nghệ Java Servlet bao gồm 2 phần :
 API của Java dùng bao gồm các yêu cầu và các câu trả lời và các đối tượng
con của nó và bộ xử lý dùng để quản lý các đối tượng này.
 Một cơ chế dùng để xác định các thuộc tính của ứng dụng Web ngoài mã
của ứng dụng và có thể thay đổi lúc triển khai.
Một servlet là một lớp của Java xử lý động các yêu cầu và xây dựng các trả lời. Mặc
dù servlet có thể dùng để trả lời bất kỳ một yêu cầu nào nhưng chúng thường dùng
để hỗ trợ cho các ứng dụng Web.
Servlet là một thành phần ứng dụng Web không phụ thuộc vào hệ nền. Về bản

chất thì Servlet là một chương trình Java (chỉ cần nạp một lần vào máy ảo) thường
được sử dụng để chạy nền trên các máy ảo Java. Khi có một yêu cầu từ trình duyệt
(Browser), máy chủ (server) sẽ phát lệnh thực hiện Servlet tương ứng, kết quả trả về
của Servlet sẽ được máy chủ xử lý và trả về cho trình duyệt dưới dạng các trang
HTML.
Hình I.4 Mô hình ứng dụng Browser/Server
I.3.1.2. JSP (Java Server Page)
Công nghệ JSP kế thừa tất cả các kỹ thuật động của công nghệ Java Servlet, nhưng
nó lại cung cấp một cách tiếp cận tự nhiên hơn trong việc tạo ra các thành phần
Web tĩnh, JSP có thể kết hợp giữa công nghệ sinh trang HTML tĩnh với công nghệ
động sinh ra các trang HTML. JSP là công nghệ lập trình Web phía máy chủ của
Java, JSP cho phép truy xuất, xử lý đơn giản, giúp cho lập trình viên xử lý dễ dàng.
 Đặc trưng của công nghệ JSP:
• Cho phép trộn giữa mã Java và các thẻ HTML.
• Xây dựng các đối tượng phía máy chủ.
• JSP sử dụng các truy xuất và xử lý đơn giản như : trình bày giao diện,
định dạng trang HTML, triệu gọi các Javabean, servlet khác …
 Cơ chế hoạt động của JSP có thể mô tả như sau :
Hình 1.5 Cơ chế hoạt động của JSP
 Nguyên tắc:
 JSP script được viết lồng vào các trang HTML.
 Khi có yêu cầu client, JSP Engine sẽ dịch JSP script thành mã Java.
 Java Compiler dịch Java code thành bytecode.
 Bytecode chạy trên máy ảo Java.
 Các thuận lợi khi sử dụng công nghệ JSP :
 Đối với ASP (Active Server Pages): ASP là công nghệ tương tự như
JSP nhưng được cung cấp bởi Microsoft. Các thuận lợi của công nghệ
JSP bao gồm : Thứ nhất, phần động trong một trang JSP được viết bằng
Java chứ không phải là một ngôn ngữ nào khác của Microsoft, cho nên
nó tạo ra sức mạnh hơn và dễ dàng hơn trong sử dụng nhờ những đặc

tính nổi bật của Java đã nêu ở trên. Thứ hai, nó có thể phù hợp với bất
kỳ hệ điều hành nào và Web server nào.
 Đối với Servlet : JSP cung cấp những điều kiện thuận lợi hơn để tạo ra
các trang HTML hợp lệ. Thêm vào đó, bằng việc phân chia thành hai
phần riêng biệt, ta có thể phân chia công việc trong phát triển JSP cho
nhiều người khác nhau, mỗi người một lĩnh vực riêng, phần xây dựng
HTML tĩnh và phần động.
 Đối với Server-Side Include (SSI) : SSI là một công nghệ hỗ trợ rộng
rãi bao gồm các đoạn được định nghĩa bên ngoài đưa vào trong một
trang Web tĩnh. JSP là một lựa chọn tốt nhất bởi vì nó cho phép bạn sử
dụng servlet thay thế cho việc sử dụng chương trình gián đoạn để tạo ra
các phần động trong một trang web.
 Đối với Javascript : Javascript có thể tự động tạo ra HTML trên trình
client. Tuy nhiên, nó chỉ hỗ trợ điều này khi mà các thông tin đó thuộc
về môi trường hoạt động của client. Với ngoại lệ của cookies, HTTP và
định dạng dữ liệu đệ trình không hỗ trợ cho Javascript. Khi mà
Javascript thực hiện trên trình client, JavaScript không thể truy nhập tài
nguyên của phía trình chủ như các cơ sở dữ liệu, các danh sách, các
thông tin quan trọng…
Với những lợi thế và những đặc điểm của mình dựa trên hướng mã nguồn mở và
nhất là với sự ra đời của các framework nổi tiếng như : Struts, Hibernate, Spring,
JSF, AJAX dựa trên nền tảng của công nghệ Java đã khuấy động lên một cuộc cách
mạng trong lĩnh vực lập trình Web ứng dụng : “Chỉ trong một tương lai không xa,
tất cả các ứng dụng phần mềm đều là ứng dụng Web”.
CHƯƠNG II : STRUTS , HIBERNATE, SPRING TRONG
LẬP TRÌNH ỨNG DỤNG WEB
II.1. Một số khái niệm trong lập trình ứng dụng Web
II.1.1. Framework là gì ?
Ngày nay, trong quá trình xây dựng một ứng dụng trên nền Web, có rất nhiều khung
làm việc (framework) đã được xây dựng sẵn nhằm phục vụ cho mục đích chung

nhất cũng như giúp cho những người lập trình viên phát triển ứng dụng một cách
nhanh chóng và hiệu quả. Chúng ta đã nhắc nhiều đến thuật ngữ framework ở các
phần trên và cũng đã có một số framework về Java được nhắc đến. Vậy, bản chất
framework là gì, và nó có những đặc tính gì ?
Theo cộng đồng Wikepedia, framework là một khái niệm trong phát triển phần
mềm dùng để chỉ những “cấu trúc hỗ trợ được định nghĩa”mà trong đó những dự án
phần mềm khác có thể được sắp xếp vào đó và phát triển. Thông thường, một
framework bao gồm những chương trình hỗ trợ, các thư viện lập trình và một ngôn
ngữ scripting nằm giữa các phần mềm khác để giúp phát triển và gắn những thành
phần khác nhau trong dự án phần mềm lại với nhau.
Một khung làm việc có 3 đặc tính sau :
1. Một khung công việc xây dựng sẵn các lớp (class) hoặc các thành phần
(component), mỗi loại đó sẽ cung cấp một mức trừu tượng (abstraction)
cho một vài khái niệm riêng biệt.
2. Một khung công việc sẽ định nghĩa ra tập hợp các cách thức để các mức
trừu tượng đó cùng nhau giải quyết một vấn đề.
3. Các thành phần trong một khung công việc phải có tính sử dụng lại được.
II.1.2. Hai mô hình kiến trúc trong ứng dụng Web
II.1.2.1. Mô hình 1
II.1.2.1.1. Đặc điểm
Kiến trúc mô hình 1 là kiến trúc đơn giản nhất trong việc phát triển các ứng dụng
Web. Trong mô hình 1, trình duyệt trực tiếp truy xuất đến các trang JSP. Hay nói
cách khác, người sử dụng gửi các yêu cầu và nhận phản hồi trực tiếp qua các trang
JSP. Điểm mạnh của mô hình kiến trúc này là mỗi trang JSP đều xử lý đầu vào của
chính mình. Các ứng dụng sử dụng mô hình kiến trúc này thường có một dãy các
trang JSP mà người dùng xử lý thông tin từ trang đầu tiên đến trang kế tiếp. Nếu
cần, một trang servlet hoặc một trang HTML có thể thay thế cho trang JSP trong
dãy.
Hình II.1 Mô hình 1 về kiến trúc ứng dụng Web
II.1.2.1.2. Ưu điểm

 Đây là mô hình đơn giản nhất, thoải mái để phát triển ứng dụng. Người lập
trình có thể lần lượt xây dựng các trang web dựa theo chức năng đã chỉ rõ.
 Kiến trúc này thích hợp với những ứng dụng web có quy mô nhỏ, ít chức
năng và việc định hướng trang là đơn giản.
II.1.2.1.3. Nhược điểm
 Khó tách rời công việc viết mã cho ứng dụng (thường thuộc về vai trò của
người phát triển ứng dụng Web) và nhóm xây dựng ứng dụng (thường thuộc
về vai trò của người thiết kế). Khi cần thay đổi giao diện người sử dụng
(công việc của người thiết kế) thì chính người lập trình gần như lại phải thực
hiện toàn bộ (thay đổi mã nguồn chương trình và mã HTML).
 Do các trang JSP đều xử lý đầu vào của chính mình, ứng dụng là một dãy
các trang JSP hoạt động kế tiếp tuần tự nhau, kết quả trang này là đầu vào
cho trang kia, nên khi thay đổi, hay mở rộng các chức năng của ứng dụng thì
rất khó thực hiện hoặc thực hiện rất phức tập và tốn nhiều thời gian. Do vây,
mô hình 1 là cứng nhắc, không linh hoạt, không thích hợp với các dự án lớn.
II.1.2.2 Mô hình 2
II.1.2.2.1. Đặc điểm
Mô hình 2 là mô hình phổ biến được sử dụng hiện nay. Về cơ bản, đây là mô hình
MVC (Model-View-Controller) mà các quá trình xử lý, điều khiển, hiển thị được
tách rời nhau.
Điểm khác nhau quan trọng giữa mô hình 1 và mô hình 2 là trong mô hình 2, quá
trình xử lý các yêu cầu từ phía người dùng không trực tiếp thông qua các trang JSP
mà được thực hiện qua một Servlet. Các bước thực thi khi người dùng gửi yêu cầu
như sau :
1. Controller Servlet xử lý các yêu cầu của người dùng (Điều này có nghĩa là
liên kết trong JSP trỏ tới controller servlet).
2. Controller Servlet sau đó sẽ tìm các JavaBean phù hợp dựa trên các tham số
request (hoặc dựa trên các thuộc tính session).
3. Controller Servlet tự bản thân nó hoặc thông qua các controller khác giao
tiếp với tầng trung gian hoặc trực tiếp tới database để lấy các dữ liệu phù

hợp.
4. Controller thể hiện dữ liệu lấy được thông qua các JavaBean thông qua một
trong các ngữ cảnh : request, session hoặc application.
5. Controller sau đó chuyển hướng đến phần hiển thị tiếp theo dựa trên request
URL.
6. Phần hiển thị sử dụng các JavaBean đã được thiết lập ở bước 4 để hiển thị dữ
liệu.
Hình II.2 Mô hình 2 về kiến trúc ứng dụng Web
II.1.2.2.2. Ưu điểm
Ưu điểm nổi bật trong kiến trúc của mô hình 2 so với mô hình 1 là ở khả năng sửa
đổi, bảo trì và khả năng mở rộng hệ thống về sau của ứng dụng. Do vậy, mô hình 2
là một kiến trúc được áp dụng nhiều trong các ứng dụng lớn và mang tính thương
mại cao.
II.1.3. Mô hình Model – View – Controller (MVC)
II.1.3.1. Đặc điểm
MVC là mô hình thiết kế mang tính tổng thể để giải quyết vấn đề có tính nghiệp vụ
cao, thường áp dụng cho những dự án lớn và có tính thương mại cao. Mô hình
MVC được tạo ra bởi Krasner và Pope năm 1988 cho Smalltalk, hiện tại được IBM
và Apache ứng dụng trong các dự án của họ rất thành công. Đây là một giải pháp
cho phép xây dựng các ứng dụng phân tầng một cách rất hiệu quả, bằng cách tạo ra
những phương thức quản lý từng tầng một cách riêng rẽ. Trong J2EE, thì MVC
cũng được xây dựng dựa trên những tính năng mạnh của công nghệ JSP và Servlet.
MVC có 3 thành phần chính : Model, View, Controller.
Hình II.3 Mô hình MVC trong kiến trúc ứng dụng Web
II.1.3.2. Model
Trong mô hình kiến trúc MVC, đây là thành phần quan trọng nhất trong ứng dụng.
Thành phần Model cung cấp một giao diện cho dữ liệu và các dịch vụ được sử dụng
trong ứng dụng. Theo cách này, thành phần Controller sẽ không cần phải nhúng mã
lệnh để thao tác trực tiếp với các dữ liệu trong ứng dụng. Thay vào đó, chúng sẽ
trao đổi với thành phần Model để thực hiện thao tác và truy xuất dữ liệu. Thành

phần Model có rất nhiều dạng khác nhau, nó có thể đơn giản là các JavaBean hoặc
phức tạp hơn là Enterprise JavaBean hoặc Web Service.
II.1.3.3. View
Thành phần View trong mô hình MVC dùng để hiển thị dữ liệu ở phía người dùng
của ứng dụng. Đó có thể là các dạng dữ liệu hiển thị cho việc nhập liệu đầu vào của
người dùng cung cấp cho thành phần Controller hoặc cũng có thể là dữ liệu trả về từ
Controller sau quá trình xử lý để hiển thị kết quả. Thông thường, thành phần View
này có thể là các trang HTML, JSP hoặc một số dạng templete như Velocity hoặc
FreeMarker …
II.1.3.4. Controller
Đây là thành phần điều khiển các luồng dữ liệu giữa các thành phần View và
Model, phụ thuộc vào tác động của người sử dụng và chỉ ra các hành động và
chuyển hướng hành động theo các yêu cầu của người dùng.
II.1.3.5. Cơ chế tương tác giữa 3 thành phần trong ứng dụng

×