Series JSF – Phần 1: JSF là gì? Giới thiệu JSF Framework

Series JSF – Phần 1: JSF là gì? Giới thiệu JSF Framework.

Ở series này mình sẽ nói về phiên bản JSF mới nhất là JSF 2.2 vì nó dễ dùng và mạnh mẽ hơn các phiên bản trước.

Những bài đầu trong series này sẽ khá nhàm chán và hơi khó hiểu, mình sẽ cố gắng viết và giải thích chi tiết nhất có thể.

Kinh nghiệm của mình là những bài lý thuyết đọc qua để hiểu được tổng quan rồi tiến luôn tới làm ví dụ. Sau đó quay lại đọc lý thuyết sẽ hiệu quả hơn.

1. JSF là gì?

JavaServer Faces (JSF) là một web framework MVC. Nó tập  trung vào việc đơn giản hóa xây dựng giao diện người dùng(User Interface -UI) (với hơn 100 tags UI) cho ứng dụng web và làm cho phép việc sử dụng lại các thành phần UI được thực hiện một cách dễ dàng.

2. Lợi ích của JSF

JSF giảm chi phí trong việc tạo và bảo trì ứng dụng, nó sẽ chạy trên một máy chủ ứng dụng Java và hiển thị các thành phần UI cho khách hàng. JSF tạo điều kiện cho phát triển ứng dụng web nhờ các tính năng sau:

  • Cung cấp các thành phần giao diện (UI) sử dụng lại được
  • Chuyển dữ liệu dễ dàng giữa các thành phần UI
  • Quản lý trạng thái UI giữa các request từ server
  • Cho phép cài đặt các thành phầ UI tùy chỉnh
  • Lấy sự kiện ở phía client tới phía server

3. Các tính năng của JSF

JSF cung cấp các tính năng sau:

Các thành phần dựa trên framework (Compnent Based Framework):

JSF là 1 framework server-side dựa trên các component. Nó cung cấp các component sẵn có để xây dựng ứng dụng web. Bạn có thể sử dụng HTML5, các Facelets tag để tạo trang web.

Công nghệ Facelets (Facelets Technology):

Facelets là một một mã nguồn mở về hệ thống web mẫu (Web template system). Nó là công nghệ xử lý view mặc định cho JSF, yêu cầu đầu vào XML hợp lệ để làm việc. Facelets hỗ trợ tất cả các thành phần UI của JSF và tập trung hoàn toàn vào xây dựng view cho ứng dụng JSF

Expression Language (EL)

Expression languate cung cấp một cơ chế quan trọng cho việc tạo giao diện người dùng (web pages) để giao tiếp với ứng dụng (các beans).

HTML5:

HTML5 là một chuẩn mới cho viết trang web. JSF đưa ra một cách dễ dàng để sử dụng các thuộc tính của HTML 5 vào các thành phần JSF.

Phát triển web dễ dàng và nhanh chóng (Ease and Rapid web Development):

JSF cung cấp các các tool và các thư viện sẵn có và nhiều tiện ích để bạn có thể phát triển ứng dụng web dễ dàng và nhanh chóng.

Hỗ trợ đa ngôn ngữ (Support Internationalization):

JSF hỗ trợ đa ngôn ngữ cho việc tạo ứng dụng web. Bạn có thể thạo một ứng dụng cho nhiều ngôn ngữ khác nhau.

Bean Annotations: JSF cung cấp các annotaions tiện ích, thứ giúp bạn có thể thực hiện kiểm tra tính hợp lệ của data.

Xử lý exception (Exception Handling):

JSF cung cấp cách xử lý exception mặc định.

Templating: trong ứng dụng JSF bạn có thể tạo các template mới, sử dụng lại chúng và coi nó như một component.

Hỗ trợ AJAX (AJAX Support):

Bạn có thể hiển thị các request tới server side mà không cần tải lại trang. JSF cũng hỗ trợ việc hiển thị lại từng thành phần sử dụng AJAX. (Ví dụ: bạn gõ vào ô search, nó sẽ hiển thị ra kết quả mà không cần tải lại trang… JSF khá mạnh trong làm việc với AJAX, gần như bạn không cần phải quan tâm tới việc gửi nhận request, javascript trong JSF)

Bảo mật (Security):

JSF lưu trữ trạng thái của các thành phần view, khi gửi request tới server, các thành phần này phải có các tham số hợp lệ (ví dụ field name của thẻ input với có giá trị giống với giá trị server đang lưu). Các tham số này được tạo ra một cách ngẫu nhiên.

4. Kiến trúc của JSF

JSF là gì? Giới thiệu JSF Framework

Faces Servlet đóng vai trò là Controller: nhận các request từ client gửi đến và điều hương tới  View hoặc Model

Các Managed Beans đóng vai trò là Model: thực hiện các chức năng business và giao tiếp với data

Phần View gồm JSP Pages và các component JSF.

 

Thanks các bạn đã theo dõi bài viết.

Phần tiếp theo trong series JSF mình sẽ giới thiệu các vòng đời trong JSF: https://stackjava.com/jsf/series-jsf-phan-2-cac-vong-doi-trong-jsf.html

 

References:

https://www.tutorialspoint.com/jsf/jsf_overview.htm

https://www.javatpoint.com/what-is-jsf

stackjava.com