• Nam đang cần thiết kế Website cho doanh nghiệp lớn, trong ứng dụng có rất nhiềumodule chương trình, làm thế nào để tách biệt giữa việc phát triển code java và việctrình bày trang bằng
Trang 1CÁC MÔ HÌNH ỨNG DỤNG JSP
ThS Phan Thanh Toàn
1
Trang 2• Nam đang cần thiết kế Website cho doanh nghiệp lớn, trong ứng dụng có rất nhiềumodule chương trình, làm thế nào để tách biệt giữa việc phát triển code java và việctrình bày trang bằng HTML và làm thế nào để xử lý các lỗi trong lập trình > Các
mô hình phát triển JSP và phương pháp xử lý lỗi trong trang JSP
Trang 3Trình bày các mô hình ứng dụng JSP
Trình bày được cấu trúc và các thành phần của J2EE
Trình bày các phương pháp quản lý ngoại lệ trong trang JSP
Sử dụng các thẻ include và forward để thực thi ứng dụng JavaBean
Trang 41 Các mô hình ứng dụng JSP
3 Quản lý Exception trong JSP
2 J2EE FRAMEWORK
Trang 5• Trong những dựa án nhỏ (small-scale project), hai vai trò:
Người thiết kế các trang HTML;
Người phát triển phần mềm Java
Hai vai trò này có thể không tách rời nhau
• Tuy nhiên, trong các dự án lớn, độ phức tạp có thể rất cao, một số yêu cầu sau đâycần phải được xác định:
Làm thế nào tách biệt khối tài nguyên của cơ chế trình bày (presentation logic)
ra khỏi code thực (actual code, các file.class);
Đặt khối presentation ở đâu Trong các dựa án lớn, khối presentation có thểchứa một khối lượng lớn các dữ liệu mẫu (template data) và các nội dung động(dynamic content, data từ database) Do vậy, cần phải tách biệt khối nội dungđộng ra khởi khối dữ liệu mẫu;
Code thực sẽ được để ở đâu?
Trang 6Large-scale Project
Presentation Logic (JSPs)
Application logic (class
file, bean)Static template
data Dynamic Content
Mô hình cấu trúc thường dùng cho các dự án lớn:
Trang 7 Có code java trong trang JSP Chưa tách biệt được dữ liệu trình bày(presentation) và code xử lý…
Chưa tách biệt được vai trò của Web Developer với Application Developer Nhập nhằng về trách nhiệm của các nhân viên khi phát triển dự án
Trang 8Ví dụ:
Xây dựng lớp javaBean: TimeBean để lấy thông tin về thời gian như sau:
Trang 9• Xây dựng trang ExampleModel1_1.JSP sử dụng lớp JavaBean như sau:
Chú ý: Hãy import thư viện: java.util.*
Mô hình trên đã xử dụng code java ngay trong trang JSP
Trang 10Mô hình 2:
• Để tách biệt code Java ra khỏi trang JSP, mô hình 2 dùng mô hình MVC View-Controler) Trang JSP 1 đóng vai trò controller khi tiếp nhận yêu cầu từ client.Trang này sẽ khởi tạo JavaBean/EJB với tầm vực session hoặc request để chứa dữliệu trong bộ nhớ server Sau đó chuyển hướng sang trang JSP 2 thông qua thẻ
(Model-<jsp:forward> hoặc RequestDispatcher.include() của interface RequestDispatcher(chuyển trang) Trang JSP 2 lấy dữ liệu của bean trong bộ nhớ Như vậy trang JSP 2trở thành một view của dữ liệu động
Application server
client
JSP 1(controller)
Bean/EJB (model)
Data source
JSP 2(view)
Trang 11 <Khai báo Javabean, scope= “session | request | application”>
<jsp: getProperty …> // truy xuất thuộc tính của bean để xuất>
• Ưu điểm của mô hình 2:
Tách biệt hẳn được Presentation và code;
JavaBean (code) đóng vai trò đóng gói business logic, là mô hình (model) truyxuất data Dễ bảo trì, dễ bảo mật;
JSP2 là những data view, mang tính trình bày (presentation logic);
Controler thường là trang JSP hoặc servlet;
Phân biệt rõ được trách nhiệm của từng người trong nhóm phát triển
Trang 12• Yếu điểm của mô hình 2:
Sử dụng Bean với tầm vực session có thể không thành công vì có thể clientkhông hợp tác vì cookie được dùng để theo dõi session mà client khóa đặc tínhnày
Biến session tồn tại (thường là 30 phút sau khi client ra khỏi Website (expired),session tự động bị loại bỏ) làm tốn bộ nhớ của server trừ khi tường minh loại bỏthông tin này Nếu tầm vực được ấn định là application, hao phí còn lớn hơnnữa
Trang 13• Trang ExampleModel2_1.JSP
Trang 14• Trang ExampleModel2_2.JSP:
Trang 15Trình bày hạn chế của mô hình JSP thứ nhất?
Trang 16• Interface này được Servlet 2.1 định nghĩa như là một đối tượng đóng vai trò mộtresource-wrapper trên server (đối tượng đóng gói tài nguyên) với hai methods:
• Hành vi forward tương ứng với thẻ <jsp:forward page=”pageName”> còn hành vi include tương ứng với thẻ <jsp:include page=”pageName” flush=”true”>
void Forward(ServletRequest request, ServletRespone respone)
Forward một request từ một servlet sang một tài nguyên khác (servlet, JSP file, HTML file) trên server
void Include(ServletRequest request, ServletRespone respone)
Chèn nội dung một tài nguyên trên server (servlet, JSP page, HTML file) vào respone
Trang 18• Trang ExampleInclude1_2.JSP:
Trang 19• Giới thiệu;
• Các thành phần của J2EE;
• Mô hình đối tượng của J2EE
19
Trang 20• J2EE được thiết kế nhằm đơn giản hóa các bài toán phức tạp kết hợp với sự pháttriển, triển khai, quản trị giải pháp nhiều lớp cho doanh nghiệp (Multi-tier EnterpriseSolution).
• Đây là chuẩn công nghệ mở kết quả từ sự hợp tác giữa Sun với các nhóm nghiêncứu
• Nền tảng của J2EE là EJB- Enterprise JavaBeans
• J2EE hỗ trợ khả năng tương tác liên-platform (cross-platform) như: Solaris, Linux,OS/390, MS Windows
Trang 212 JDBC - Java
DatabaseConnectivity
Các Java interface cho việc kết nối với database quan hệnhư: Oracle, MS SQL Server, Informic
3 JNDI - Java Naming
and Directory Interface
Bảng ánh xạ tên tài nguyên hình thành ra cơ chế định vịtài nguyên trên mạng Tài nguyên có thể là: EJB,Database driver, các tài nguyên có bảo mật,…
4 RMI-IIOP - Remote
Method Invocation over Internet Inte-ORB Protocol
Các giao tiếp cho phép gọi method tại JVM từ xa NếuIIOP được dùng, J2EE có thể tích hợp với code khôngphải của Java được viết theo chuẩn CORBA như: C++,Cobol
Ngôn ngữ khai báo giao tiếp của Java Đây là phần hiệnthực công nghệ CORBA của Java, cung cấp các chuẩncho việc giao tiếp giữa phần tử ứng dụng của Java vớicác phần tử ứng dụng của ngôn ngữ khác
Trang 22STT Thành phần Giải thích
7 Connector Các Resource adapter cung cấp khả năng kết nối ứng dụng
với các nguồn tài nguyên khác, chẳng hạn như: CICS,Tuxedo, SAP R/3, PeopleSoft
Các Java API giúp giao tiếp với trình phân tích XML.Thường được dùng để mô tả các EJB và định dạng file choJSP script
12 JavaMail J2EE không có MailServer nhưng có hỗ trợ các API giúp gửi
13 JAF – JavaBeans
Activation Famework
Cho phép kích hoạt tự động các lớp phù hợp cho việc quản
lý các loại media file có thể được đính kèm vào E-mail
14 J2SE – Java 2 Thường được gọi là Java 2, bộ JDK và JRE được tích hợp
Trang 2323
Trang 24• Lớp 1: Lớp trình bầy dữ liệu – Presentation tier.
Lớp này cung cấp những giao tiếp để client có thể truy xuất data client có thể là:
CORBA client: Các client được viết bằng các ngôn ngữ khác Java Các client nàyphải sử dụng dịch vụ CORBA Naming Service (COSNaming) để định vị phần tử(component) ở mức giữa (Business tier) và sử dụng JNDI và CORBA-IIOP để gọicác method của component này Có thể gửi thông báo cho component thôngqua dịch vụ JMS
Các Java client: Java applet, Java application, Java servlet, JSP
Các trang web tĩnh
• Lớp 2: Lớp quy tắc doanh nghiệp - Business Logic tier
Lớp này chứa các class mô tả các quy tắc doanh nghiệp (business rules – dataprocessing logic) EJB chính là mô hình cho việc đóng gói các lớp làm nhiệm xử lý dữliệu cho từng vai trò user trong hệ thống Đây đích thực là một middle tier chứa cácclass truy xuất data, tính toán, quản lý giao tác, bảo mật, lưu trữ các dữ liệu mangtính bền vững vào database
• Lớp 3: Lớp Data – Data tier
Lớp này chứa data lâu dài của doanh nghiệp, đó có thể là các database, các hệ
Trang 25Mô hình đối tượng của J2EE gồm những lớp nào?
Trang 26• Các lỗi lúc dịch JSP;
• Các lỗi lúc request;
• Các lớp mô tả lỗi trong JSP
Trang 27• Một trang JSP được truy xuất lần đầu tiên kể từ lúc server khởi động Trang JSP này
sẽ được dịch thành file.java rồi được biên dịch thành file.class của một servlet.Những lỗi xảy ra trong giai đoạn này được gọi là Compile Time Errors
• Ví dụ:
Đáp ứng cho client: Mã lỗi 500 hoặc server error
Nguyên nhân: Cú pháp JSP sai
Cách sửa: Kiểm tra lại code JSP, deploy lại
Trang 28• Các lỗi này xẩy ra do giải thuật sai trong code JSP (chia cho 0 chẳng hạn) Đây chính
là các run-time errors Các lỗi này có thể bẫy trong thân của trang JSP hoặc sẽforward sang một trang đặc biệt đảm nhiệm vai trò tạo response trong tình huống
Trang 30• Ví dụ sau sẽ minh họa việc xử lý lỗi chia cho 0 bằng khối try…catch
Trang 31• JspException: Lỗi mô tả chung cho Exception của JSP Engine.
• JspTagException: Exception được dùng bởi Tag handler, mô tả cho các lỗi không
thể phục hồi (recoverable error)
• SkipPageException: Lỗi chỉ thị cho việc trang gọi (calling page) phải ngừng
(cease) việc kiểm tra tình huống Lỗi này được trình quản lý thẻ xuất ra để chỉ thịrằng phần còn lại của trang (sau dòng code gây lỗi) sẽ không được xử lý tiếp tục
• ELException: Exception xảy ra khi một phát biểu JSP gây lỗi.
• ELParseException: Xảy ra khi có lỗi lúc phân tích một phát biểu JSP.
Trang 32Sau khi học xong bài học học viên cần:
• Hiểu được các mô hình ứng dụng JSP
• Biết cách sử dụng các thẻ include và forward để thực thiứng dụng JavaBean
• Hiểu được các phương pháp quản lý ngoại lệ trong cáctrang JSP