GIỚI THIỆU CỤ THỰC HIỆN VÀ CÁC CÔNG NGHỆ LIÊN QUAN
Sau khi khảo sát và tìm hiểu về hệ thống em nhận thấy việc phát triển phần mềm theo
mô hình web mang lại nhiều thuận lợi trong việc quản trị, cài đặt và bảo trì.
Để phát triển mô hình web em đã quyết định lựa chọn một số fremwork hiện đại và
đang được sử dụng rộng dãi là struts và hibernate cùng với hệ quản trị cơ sở dữ liệu postgre
SQL. Việc sử dụng 2 framework là struts và hibernate giúp cho việc phát triển phần mềm một
cách nhanh chóng giảm bớt thời gian code dễ dàng cho việc phát triển và bảo trì cho các
version sau.
3.1 Giới thiệu Struts
Struts, một dự án mã nguồn mở của Apache Software Foundation, là một bản hiện thực
Java phía server của mẫu thiết kế Model-View-Controller (MVC). Dự án Struts được khởi
xướng bởi Craig McClanahan vào tháng 5/2000, thuộc dự án Apache Jakarta. Hiện tại, dự án
Struts đã trở thành một dự án độc lập - dự án Apache Struts.
Dự án Struts được thiết kế với mục đích cung cấp một bộ khung mã nguồn mở để tạo các ứng
dụng Web, tách tầng trình bày (presentation layer) ra khỏi tầng giao tác (transaction layer) và
tầng dữ liệu (data layer). Từ khi ra đời, dự án Struts nhận được nhiều ủng hộ của các nhà phát
triển và nhanh chóng chiếm ưu thế trong cộng đồng mã nguồn mở.
3.1.1. Mẫu thiết kế MVC
Để nắm vững Struts Framework, bạn phải hiểu cơ bản về mẫu thiết kế MVC. Mẫu thiết kế
MVC, được bắt nguồn từ Smalltalk, bao gồm ba thành phần: Model, View, và Controller.
Ba thành phần của mẫu thiết kế MVC:
- Model
Biểu diễn các đối tượng dữ liệu. Thành phần Model là những gì đang được thao tác và trình
bày cho người dùng. Chúng thường biểu diễn các đối tượng nghiệp vụ hay các hệ thống backend
khác và có thể được hiện thực là những JavaBean đơn giản, những Enterprise JavaBean, những
biểu diễn đối tượng của dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ, hoặc chỉ là những gì
cần được thao tác hay biểu diễn trong một ứng dụng Web
-View
Đóng vai trò là phần biểu diễn trên màn hình (screen representation) của thành phần
Model. Thành phần View là đối tượng trình bày trạng thái hiện tại của các đối tượng dữ liệu.
Mỗi thành phần View trong Struts Framework được ánh xạ đến một trang JSP, trang này có thể
Triển khai nhanh chóng - Thời gian phát triển có thể được giảm đáng kể, bởi vì những
người lập trình cho thành phần Controller (nhà phát triển Java) chỉ tập trung vào phần giao tác,
còn những người lập trình cho thành phần View (nhà phát triển HTML và JSP) chỉ tập trung
vào phần trình bày.
Tính bảo trì - Việc tách phần trình bày và logic nghiệp vụ cũng khiến việc bảo trì và
sửa đổi một ứng dụng Web dựa trên Struts dễ dàng hơn.
3.1.2. Bản hiện thực Struts của mẫu MVC
Struts Framework mô hình hóa bản hiện thực phía server của mẫu MVC bằng cách kết hợp
các trang JSP, các thẻ JSP tùy biến, và một Java servlet. Trong phần này, chúng ta mô tả ngắn
gọn cách Struts Framework ánh xạ đến mỗi thành phần của mẫu MVC.
Hình 10.Bản hiện thực Struts của mẫu MVC
Hình trên mô tả quy trình xử lý mà hầu hết các yêu cầu ứng dụng Struts cần tuân theo.
Quy trình này có thể được chia thành 5 bước cơ bản:
- Một yêu cầu xuất phát từ một View đã được hiển thị trước đó.
- Yêu cầu này được tiếp nhận bởi ActionServlet (đóng vai trò là một Controller), ActionServlet
tìm URI được yêu cầu trong một file XML (sẽ được mô tả trong chương 3, “Làm quen với
Struts”) và xác định tên lớp Action sẽ thực hiện logic nghiệp vụ cần thiết.
- Lớp Action thực hiện logic của nó trên các thành phần Model của ứng dụng.
- Khi đã hoàn tất quá trình xử lý, lớp Action trả quyền điều khiển cho ActionServlet, đồng thời
cung cấp một khóa (key) biểu thị các kết quả xử lý. ActionServlet sử dụng khóa này để xác
định các kết quả sẽ được chuyển đến đâu khi trình bày.
- Yêu cầu kết thúc khi ActionServlet chuyển yêu cầu đến View được gắn với khóa trả về, và
View này trình bày các kết quả của Action.
3.1.3. web flow diagram:
Hình 11. web flow diagram
3.2 Giới thiệu Hibernate
3.2.1 Giới thiệu về Hibernate :
Hibernate là một dịch vụ lưu trữ và truy vấn dữ liệu quan hệ mạnh mẽ và nhanh.
Hibernate giúp bạn phát triển các class dùng để lưu trữ dữ liệu theo cách thức rất là hướng đối
tượng: association, inheritance, polymorphism, composition và collections. Hibernate cho phép
là đóng nhiều kết nối trong 1 khối try...catch)
• Quản lý transation (giao tác):dịch vụ quản lý giao tác cung cấp khả năng cho phép user thi
hành nhiều phát biểu (statement) vào một thời điểm.
• Object relational mapping:
Công nghệ mapping dữ liệu dưới database thành dữ liệu trên object. Hibernate sẽ sử dụng
SELECT, INSERT, UPDATE và DELETE trên các records và đưa thao tác dưới database
tương ứng với việc thao tác tên Object java.
Mục đích sau cùng của hibernate đó là ORM, nhưng nó phải thêm vào các dịch vụ quản lý
Connnection và Transaction vì phát sinh từ vấn đề performance và sự khó khăn khi tự mình xử
lý những dịch vụ này trên Object được persistent. Hibernate buộc phải sử dụng những công cụ
quản lý kết nối và transation của bên thứ 3 để hoàn thiện mô hình của mình. Một ví dụ là
Apache DBCP thường được sử dụng trong connection pooling với Hibernate.
3.3 Giới thiệu hệ quản trị cơ sở dữ liệu Postgre SQL
Postgre SQl là một chương trình mã nguồn mở có nhiều đặc điểm hiện đại:
• Câu truy vấn phức tạp (complex query)
• Khóa ngoại (foreign key)
• Thủ tục sự kiện (trigger)
• Tính toàn vẹn của các giao dịch (integrity transactions)
• Việc kiểm tra truy cập đồng thời đa phiên bản (multiversion concurrency control)
Hơn nữa, PostgreSQL có thể dùng trong nhiều trường hợp khác, chẳng hạn như tạo ra các
khả năng mới như:
• Kiểu dữ liệu
• Hàm
• Toán tử
• Hàm tập hợp
• Phương pháp liệt kê
• Ngôn ngữ theo thủ tục
Postgre SQL không quy định những hạn chế trong việc sử dụng mã nguồn của phần mềm.
Bởi vậy PostgreSQL có thể được dùng, sửa đổi và phổ biến bởi bất kỳ ai cho bất kỳ mục đích
nào.
Mail server: Theo mô hình hoạt động khach/ chủ, trình chủ của ta bằng một dịch vụ đóng
vai trò người chủ phục vụ trình khách. Mail server thật ra là một chương trình mở socket lắng
nghe các yêu cầu ( hay lệnh gửi mail) từ trình khách đưa đến. Web server sẽ tiếp nhận nội dung
mail, phân bố mail đến các máy chủ khác cho phép trình khách truy cập vào máy chủ để nhận
mail về, bảo vệ mail. Chính vì vậy, trước khi nhận hay gửi mail ta phải biết rõ địa chỉ IP của
máy chủ mail server. Địa chỉ này thường gọi là mail host.
Giao thức gửi mail (Mail transport protocol): Để gửi mail đến máy chủ trình khách phải sử
dụng một giao thức trò chuyện với mail server. Tương tự trình duyệt dùng giao thức HTTP để
trò chuyện với trình chủ Web Server. Các trình khách muốn bắt tay với trình chủ mail server và
gửi mail lên máy chủ sẽ sử dụng giao thức SMTP (Simple Mail Transport Protocol). SMTP
khá nổi tiếng và được hầu hết các trình chu mail trên thế giới sử dụng. Địa chỉ IP của máy chủ
nhận mail gửi đi thường được gọi là outgoing mail address.
Giao thức lưu trữ mail ( Mail store protocol): Khi trình chủ mail server tiếp nhận được mail,
trình chủ phải tiến hành lưu trữ mail theo cách nào đó để trình khách có thể dễ dàng truy cập và
và nhận mail về. Hiện nay POP3 (Post Office Protocol) và IMAP (Internet Message Access
Protocol) là hai giao thức lưu trữ và lấy mail từ hộp thư (inbox) trên máy chủ khá phổ biến. Địa
chỉ của máy chủ lưu trữ mail cho phép máy khách truy cập vào để nhận mail về được gọi là
incoming mail address.
3.4.2.1.2 Thiết kế chương trình Web mail
Web mail là các chương trình gửi nhận mai trực tuyến (online) bằng internet. Mở trang
web bằng trình duyệt, kết nối vào internet ta có thể gửi mail đi và nhận mail về ở bất cứ nơi
nào. Yahoo mail (của công ty Yahoo) và Hotmail (của Microsoft) là hai ứng dụng web mail rất
nổi tiếng hiện nay.
Để xây dựng web mail bằng servlet hay jsp ngoài việc có trình chủ hiểu Java ta cần có
thêm hai thư viện hỗ trợ khác là mail.jar và activation.jar.
3.4.2.1.3 Các bước cơ bản khi xây dựng ứng dụng web mail.
Để đọc mail từ máy chủ, cơ bản ta cần thực hiện các bước sau:
Tạo đối tượng mail Session (ta lưu ý đối tượng Session ở đây dành cho ứng dụng mail, khác
với HttpSession). Yêu cầu người dùng chọn các giao thức truy cập vào máy chủ.
Tạo đối tượng Store chuẩn bị lấy mail về. Để tạo được đối tượng Store ta cần yêu cầu người
Thực hiện chức năng gửi mail đi
Tạo trang web hiện thị thông báo lỗi.
Khi ta gửi mail đi ngoài việc nhập vào nội dung mail là các dong văn bản (text) ta còn
có thể đính kèm các file như file hình ảnh, chương trình nhị phân… Việc đọc mail sẽ bao gồm
luôn cả quá trình phân tích nội dung các tập tin đính kèm. Khi hiển thị mail đọc được chúng ta
chỉ hiển thị những nội dung ở dạng văn bản. Phương thức showMessager() sẽ thực hiện điều
này. Đối với các tập tin đính kèm, phương thức showPart() sẽ chụi trách nhiệm đọc và trả dữ
liệu là tập tin về cho máy khách (thường được xem như lấy file đínhkèm về máy khách-
download file). Showinbox được dùng để liệt kê các danh sách các mail nhận được chứa trên
máy chủ mail server. Ngoài ra trước khi gửi hay nhận mail ta phải thực hiện thao tác đăng nhập
(còn gọi là login) vào máy chủ. Phương thức login()sẽ chụi trách nhiệm kết nối và chúng thực
quyền truy cập của người dùng vào mail server (thông qua username/password). Phương thức
createLoginForm() dùng tạo màn hình login (bao gồm các ô text box để người dùng đăng nhập
và username và password đồng thời chọn giao thức gửi/ nhận mail. Phương thức
createWriteForm() sẽ tạo màn hình gửi mail. Ta gọi phương thức sendmessager()để gửi mail
đi. Phương thức createErrorPage() tạo ra trang web thông báo lỗi gặp phải trong quá trình gửi
và nhận mail.
3.4.2.3.3 Sử dụng web mail
Để sử dụng web mail ta gõ địa chỉ URL triệu gọi servlet sendmailreader như sau:
http://localhost:8080/servlet/sendmailreader.
Trang web đăng nhập sẽ hiển thị trên trình duyệt. Từ trang web này ta có thể gửi và nhận
mail hầu như với tất cả các máy chủ mail trên thế giới (nếu ta kết nối internet) hoặc các máy
chủ mail trong nội bộ công ty bạn (Intranet).
Vấn đề quan trọng là chỉ biết địa chỉ mail server và các giao thức chuyển/nhận mail mà
máy chủ phục vụ. Ví dụ để nhận mail từ hộp thư Yahoo mail bạn có thể chọn SMTP từ danh
sách Transport Protocol. Chọn POP3 từ danh sách Store protocol. Đánh vào điaj chỉ máy chủ
pop.yahoo.mail.com ở ô Mail Host(đây là địa chỉ máy chủ của Yahoo mail sưu tập được), gõ
tên đăng nhập và mật khẩu cua Yahoo ( nếu chưa có vào site yahoo để đăng ký miễn phí).
Nhận nút Login. Nếu kết nối internet và thông tin đăng nhập hợp lệ ta sẽ mở được hộp thư
inbox của yahoo.