4. Tổng quan về một số công nghệ, Framework
4.4.1. Mô hình ứng dụng Web với Servlet, JSP
Khi xây dựng ứng dụng web bằng Servlet, JSP thì người phát triển thường dựa trên 2 mô hình sau, tạm gọi là mô hình 1 và mô hình 2:
Hai mô hình có một sốđiểm khác biệt. Sự khác biệt rõ ràng nhất đó là sự khác biệt về thành phần xử lý request.
Với mô hình 1 thì trang JSP điều khiển mọi quá trình xử lý request và đồng thời cũng là nơi hiển thị phía client giá trị trã về của server.
Trong mô hình 1 ở trên không xuất hiện servlet trong quá trình xử lý. Request của client được gửi trực tiếp tới trang JSP, trang JSP này có thể giao tiếp với các JavaBean hoặc một vài dịch vụ khác, và cuối cùng nó chọn trang JSP tiếp theo cho client. Trang tiếp theo để hiển thị giá trị trã về của server.
Trong mô hình 2, request từ phía client đầu tiên sẽđược chặn lại tại servlet, và bộ phận này người ta gọi là servlet điều khiển. Servlet sẽ thực hiện một số xử lý ban đầu của request và cũng xác định trang hiển thị tiếp theo. Hình sau:
Trong mô hình 2, client không bao giờ gửi trực tiếp request tới một trang JSP. Servlet điều khiển sẽ thực hiện như là bộ phận điều khiển giao thông. Điều này cho phép servlet thực hiện xử lý theo kiểu “front - end” – giống như là kiểm chứng và cho phép. Ta có thể hiểu, servlet như là bộ kiểm tra request sau đó tuỳ theo kết quả mà quyết định bước xử lý tiếp theo của request. Khi quá trình xử lý request tại servlet hoàn thành, servlet sẽ chuyển request trực tiếp tới trang JSP phù hợp. Ví dụ, trong một ứng dụng web đơn giản, trang JSP sẽ hiển thị kết quả của trã về của servlet, kết quảđó là các tham số trong request.
4.4.2. Mô hình MVC
Với mô hình 2 trong các ứng dụng web ta thấy sự phân chia các bộ phận trong kiến trúc rõ ràng hơn, đó là ba thành phần: logic nghiệp vụ, phần hiển thị, và bộ phần xử lý request. Sự phân chia này được gọi là mô hình Model – View – Controller (MVC). Các ứng dụng (không chỉ là ứng dụng web) xây dựng trên mô hình MVC có ưu điểm là rất dễ bảo trì và có thể mở rộng với các ứng dụng phức tạp.
MVC là kỹ thuật được sử dụng rộng rãi trong lập trình chuyên nghiệp, đặc biệt là trong kỹ thuật làm web, tạo cho website có khả năng linh động hơn. Thực tế có rất nhiều lập trình viên phát triển ứng dụng của mình theo mô hình MVC dù đó là bất kỳ ngôn ngữ nào.
a. Model
Là một đối tượng hoặc tập hợp các đối tượng biểu diễn cho phần dữ liệu của chương trình, ví dụ các dữ liệu được lưu trong cơ sở dữ liệu (CSDL) hay từ các hệ thống ứng dụng khác (như mail...).
b. View
Là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa..., để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống.
View trong mô hình MVC của ứng dụng web bao gồm HTML và các trang JSP. Các trang HTML được dùng với mục đích tạo ra trang tĩnh, trong khi JSP có thể tạo ra trang với nội dung tĩnh hay động.
c. Controller
Là phần điều khiển toàn bộ logic về hoạt động của giao diện, tương tác với thao tác của người dùng (từ chuột, bàn phím và các thiết bị ngoại vi khác) và cập nhật, thao tác trên dữ liệu theo đầu vào nhận được và điều khiển việc chọn phần “View” thích hợp để chuyển dữ liệu tới người dùng. Trong ứng dụng web, Controller thường được thiết kế bằng Servlet, thực hiện các nhiệm sau:
• Chặn các request từ phía client.
• Chuyển các request tới các bộ phận dịch vụđể thực hiện.
• Hoặc là gọi các toán tử nghiệp vụ hoặc là uỷ thác tới một handler khác. • Hổ trợ lựa chọn view tiếp theo cho client.
• Trã về view cho client.
4.5. Struts
http://struts.apache.org/
4.5.1. Struts và MVC
Struts là một Framework OpenSource nổi tiếng của dự án Apache cho các ứng dụng J2EE. Được phát triển bởi một nhóm do Craige R.McClanahan đứng đầu (Craige R.McClanahan là chuyên gia nghiên cứu về Servlet, JSP và tham gia viết Tomcat), bản thân Struts là sự mở rộng của các
Servlet API theo mô hình MVC. Thực tế hiện nay Struts vẫn là framework nổi tiếng nhất cho các ứng dụng theo mô hình MVC.
Mục đích của Struts là phân tách rõ ràng các phần Model, View, Controller trong mô hình MVC. Ứng dụng viết trên Struts dễ dàng bảo trì, mở rộng. Struts framework liên tục được cập nhật, mở rộng cung cấp nhiều package, thư viện hỗ trợ cho người phát triển: Taglib, đa ngôn ngữ, validate data, tempate cho ứng dụng mẫu,...
• Client Browser: Web Container tiếp nhận HTTP Request từ Client và trả về HTTP Response • Controller: Các nhiệm vụ của thành phần Controller trong Struts bao gồm nhận đầu vào từ
client, gọi toán tử nghiệp vụ, và tìm thành phần view để trã về cho phía client. Trong Struts framework servlet trở thành điểm trung tâm cho ứng dụng web. Servlet điều khiển sẽ ánh xạ giữa action của user với các hàm nghiệp vụ và hổ trợ lựa chọn view trã về dựa trên thông tin của request đã được xử lý. struts-config.xml là file cấu hình cho Controller của ứng dụng xây dựng trên Struts
• Business Logic: Cập nhật trạng thái của Model và đảm nhận việc điều khiển, thực thi dưới các Form trong ứng dụng
• Model: Model là các đối tượng biểu thị thông tin về các yêu cầu từ người dùng, và lưu giữ các kết quả của các quá trình xử lý.
• View: Đối tượng View trong Struts thường là các trang JSP. Struts cung cấp một loạt các thư viện taglib, hỗ trợ người phát triển trong việc thiết kế các trang JSP. Sự hỗ trợ của Struts với JSP cho phép các đối tượng form trên các trang JSP được quản lý: Lấy dữ liệu, Validate dữ liệu, Quản lý lỗi,... Các thư viện taglib thường dùng: struts-html, struts-form, struts-bean, struts-logic, struts-template.
4.5.2. Đặc điểm của Struts
• OpenSource, cộng đồng đông đảo • Áp dụng mô hình MVC
• Struts là framework cho ứng dụng web, không phải ứng dụng J2EE: (Triển khai theo dạng file .WAR cho các Web Server)
• Áp dụng Struts khá dễ dàng, đơn giản: Download Struts framework (hiện là version 2.0.6 - March 22, 2007), cấu hình ứng dụng với các thư viện (Nhiều IDE hỗ trợ)
• Thuận lợi cho công tác bảo trì, nâng cấp
• Struts chỉ hướng vào tầng Controller, có quan điểm là chỉ hướng vào tầng View (Bản thân chỉ là sự mở rộng của Servlet & JSP)
• Quan điểm về bộ thư viện taglib của Struts: phải load toàn bộ >> tốn bộ nhớ, ứng dụng chạy chậm,...
• Struts <> JSF
• Dự án Struts đã đóng băng (hay đã hoàn thiện ở mức chín muồi)
4.5.3. Cấu hình ứng dụng Struts
Ví dụ về tổ chức của một ứng dụng dựa trên Struts:
Bên cạnh file cấu hình web.xml cho ứng dụng web thông thường, ứng dụng Struts còn có struts- config.xml là file cấu hình để khởi tạo các tài nguyên cần thiết, bao gồm thông số kết nối CSDL các ActionForms để lấy các yêu cầu của người dùng, ActionMappings để chỉđến các Actions phía trình phục vụ Server, và các ActionForward để chọn các trang hiển thị. Ngoài ra còn có các file mô tả thư viện taglib của ứng dụng (các file .TLD).
Dưới đây là một dạng đơn giản của struts-config.xml: • <data-sources>: Thông số kết nối CSDL
• <global-forwards>: Các trang jsp hiển thị • <action-mappings>: Khai báo các Action • Một số thẻ khác
4.6. EJB