24/05/2018, 16:52

JavaServer Faces(JSF)

JSF là viết tắt của JavaServer Faces, một bản miêu tả kĩ thuật giúp đơn giản hóa việc phát triển giao diện cho các ứng dụng Web viết bằng Java bằng cách dùng các thành phần dùng lại được (reusable components). JSF là một bộ khung (framework) phát triển ...

JSF là viết tắt của JavaServer Faces, một bản miêu tả kĩ thuật giúp đơn giản hóa việc phát triển giao diện cho các ứng dụng Web viết bằng Java bằng cách dùng các thành phần dùng lại được (reusable components).

JSF là một bộ khung (framework) phát triển các ứng dụng Web viết bằng Java nhằm làm đơn giản hóa quá trình phát triển giao diện người dùng cho các ứng dụng J2EE. Để tạo ra giao diện hiển thị, JSF dùng dạng cấu trúc cây của các thẻ, mỗi thẻ là một thành phần giao diện (component) và FacesServlet servlet sẽ thực hiện công đoạn chuyển đổi ra giao diện tương ứng cho người dùng với định dạng HTML. Ngoài ra, JSF cũng có thể sử dụng các kĩ thuật hiển thị khác, như XUL. JSF bao gồm:

Một tập các hàm API để biểu diễn các thành phần UI (giao diện người dùng) và quản lí thạng thái của chúng, xử lí các sự kiện và kiểm tra dữ liệu đầu vào, qui định việc di chuyển trang (page navigation), hỗ trợ tính đa ngôn ngữ và hỗ trợ cho người sử dụng (accessibility)

Một số thành phần (component) có sẵn

Hai thư viện chứa các thẻ tùy biến JSP (JavaServer Pages custom tag) để có thể biểu diễn một JavaServer Faces interface bên trong một trang JSP.

Mô hình sự kiện ở phía máy chủ (server-side event model)

Khả năng quản lí trạng thái

Managed Beans (JavaBeans được tạo bằng dependency injection - xem thêm Spring framework)

Bản miêu tả kĩ thuật JSF được qui định trong JSR 127 của Quá trình Cộng đồng Java.

8 mục tiêu thiết kế sau là lí do cho sự ra đời của JSF:

Tạo ra một bộ khung gồm các thành phần giao diện người dùng chuẩn (standard GUI component framework) nhằm giúp cho các công cụ phát triển dễ dàng hơn cho người dùng trong việc tạo GUI chất lượng cao đồng thời quản lí các kết quả của GUI với xử lí thực thi của chương trình.

Định ra một tập các lớp cơ sở của Java (lightweight Java base classes) biểu diễn cho các thành phần UI, trạng thái mỗi thành phần, và các sự kiện đầu vào. Những lớp này sẽ xử lí những vấn đề liên quan đến chu kì sống của GUI, đặc biệt là quản lí trạng thái trong suốt chu trình sống của một trang của thành phần GUI đó.

Cung cấp một tập các thành phần GUI chung, bao gồm các thành phần HTML form input. Những thành phần này sẽ được dẫn xuất từ tập đơn giản các lớp cơ sở (đề cập ở #1) đề từ đó có thể định ra các thành phần mới.

Cung cấp một mô hình JavaBeans để có thể truyền đi (dispatch) các sự kiện từ các GUI controls phía máy khách đến các xử lí hiện thực cụ thể từ phía ứng dụng máy chủ.

Định ra các hàm APIs để kiểm chứng dữ liệu nhập, bao gồm hỗ trợ kiểm chứng từ phía máy chủ.

Chỉ định một mô hình để có thể đa ngôn ngữ hóa hay địa phương hóa các GUI.

Khởi tạo tự động dữ liệu ra phù hợp cho máy khách đích, dựa vào mọi dữ liệu cấu hình ở máy khách đó, bao gồm cả dựa vào phiên bản trình duyệt, ví dụ.

Việc khởi tạo tự động dữ liệu ra còn kèm theo các đòi hỏi về hỗ trợ người dùng (accessibility), được qui định bởi WAI.

Mô hình của JSF là mô hình xử lí hướng sự kiện giống như trong các ứng dụng GUI truyền thống, sự khác biệt là nó được áp dụng cho các ứng dụng Web.

- JSF 1.0 - bản miêu tả kĩ thuật của JSF chính thức đầu tiên

- JSF 1.1 - bản sửa lỗi chính thức. Không có thay đổi về kĩ thuật hay HTML renderkit.

- JSF 1.2 - bản chính thức chuẩn bị ra mắt và được miêu tả bởi JSR 252.

- những cải tiến để cung cấp những giải pháp tạm thời cho vấn đề trộn lẫn nội dung (content-interweaving problem) được nói đến tại http://www.onjava.com/pub/a/onjava/2004/06/09/jsf.html

- cung cấp các XML Schema cho các file cấu hình, thay cho việc dùng DTD

- các cải tiến để cho phép các 'faces applications có thể xử lí nhiều khung (multi-frame), hay các thiết kế đa cửa sổ người dùng (multi-window UI)

- các cải tiến thư viện thể f: để nâng cao 'TCK coverage, các sự kiện liên quan chu trình sống của f:view, và một số đặc tính nhỏ khác

- các cải tiến trong việc hỗ trợ trang trí cho các đối tượng API

- cải tiến an ninh cho phía trình khách trong việc lưu giữ trạng thái

- giải quyết vấn đề "duplicate button press"

- tổ chức lại bản miêu tả kĩ thuật theo từng phần tiêu chuẩn (normative), và không tiêu chuẩn, để giúp cho việc hiện thực dễ dàng hơn.

- Các sữa lỗi cho portlet

- Một sỗ sửa lỗi đòi hỏi sự thay đổi chút ít trong bản miêu tả kĩ thuật

Có hai hiện thực cho JSF được biết cho đến nay:

JSF Reference Implementation của Sun Microsystems

Dự án MyFaces của Apache

Công cụ

ICEfaces : Complete Ajax-enabled JSF component library.

Rialto JSF : JSF encapsulation of Rialto.

0