Thứ Ba, 11 tháng 10, 2016

Giới thiệu về JSF

SF là một môi trường phát triển GUI khá truyền thống, giống như AWT, SWT, và Swing. Một trong những lợi ích chính của nó là nó làm cho việc phát triển Web dễ dàng hơn bằng cách giao những công việc khó khăn cho các nhà phát triển khung công tác, chứ không phải cho các nhà phát triển ứng dụng. Cứ cho là bản thân JSF phức tạp hơn nhiều so với các khung công tác Web khác, nhưng sự phức tạp này được che giấu không để cho các nhà phát triển ứng dụng biết. Phát triển các ứng dụng Web trong JSF dễ dàng hơn nhiều so với hầu hết các khung công tác khác: nó đòi hỏi viết mã ít hơn, ít phức tạp hơn, và ít việc cấu hình hơn.
Nếu bạn đang thực hiện phát triển Java phía máy chủ, JSF là khung công tác dễ nhất để tìm hiểu. Nó được định hướng để tạo các ứng dụng Web (không chỉ là các trang web). Nó cho phép bạn tập trung vào việc mã hóa Java của bạn mà không cần đối phó với các đối tượng yêu cầu, các đối tượng phiên, các thông số yêu cầu, hoặc đối phó với các tệp tin XML phức tạp. Với JSF, nhiều thứ thực hiện nhanh hơn so với các khung công tác Web Java khác.
    I. Ưu điểm của JSF:

  • Tách biệt hoàn toàn giữa hành vi và cách trình bày
  • Kiểm soát tính có trạng thái (statefulness) ở mức thành phần
  • Các sự kiện dễ dàng được liên kết với mã phía máy chủ
  • Sử dụng các khái niệm thành phần UI và tầng Web (Web-tier) quen thuộc
  • Cung cấp nhiều dụng cụ của nhà sản xuất phần mềm đã tiêu chuẩn hóa
  • Sự hỗ trợ IDE tuyệt vời.

  II.Thành phần của JSF:
  • JavaBeans để quản lý trạng thái và hành vi của ứng dụng
  • Các thành phần GUI có trạng thái
  • Phát triển hướng sự kiện (thông qua các trình nghe-listener) giống như trong phát triển GUI truyền thống
  III. Công nghệ JSF và JSP:
Giao diện người dùng của một ứng dụng JSF bao gồm các trang JavaServer Pages (JSP). Mỗi trang JSP có chứa các thành phần JSF để thể hiện chức năng GUI. Bạn sử dụng các thư viện thẻ tùy biến JSF bên trong các trang JSP để biểu hiện các thành phần UI, để đăng ký trình xử lý sự kiện, để kết hợp các thành phần với các trình duyệt tính hợp lệ (validator), để kết hợp các thành phần với các trình biến đổi dữ liệu (converter), và nhiều hơn nữa.
JSF không có gì để làm với bản thân JSP. JSF làm việc với JSP thông qua một cầu nối thư viện thẻ JSP. Tuy nhiên, vòng đời của JSF là rất khác so với vòng đời của JSP. Facelets phù hợp với JSF hơn nhiều so với JSP vì Facelets đã được thiết kế với JSF trong tâm trí, trong khi việc kết hợp JSF và JSP luôn luôn giống như bắt một miếng gỗ hình vuông vào trong một lỗ tròn. Bạn nên suy nghĩ về Facelets; các tính năng của Facelets sẽ là một phần của JSF 2.0
  IV.JSF và MVC:
JSF là kết quả của các bài đã học thu được qua nhiều năm phát triển của các kỹ thuật phát triển Web trên nền tảng Java. Xu hướng này bắt đầu với công nghệ JSP, cho dù có nhiều ưu điểm, đã làm cho quá dễ dàng trộn lẫn mã Java với mã HTML (và mã giống như HTML). Bước tiến tiếp theo là kiến trúc Mô hình 1trong đó các nhà phát triển đẩy hầu hết mã mặt sau vào trong các thành phần JavaBeans và sau đó nhập khẩu các thành phần JavaBeans vào các trang Web với thẻ <jsp:useBean>. Điều này đã hoạt động tốt với các ứng dụng Web đơn giản, nhưng nhiều nhà phát triển Java không thích kết hợp công nghệ JSP với các đặc tính C++ ví dụ như là lệnh bao gồm (include) tĩnh. Vì vậy, kiến trúc Mô hình 2 đã được giới thiệu.
Về cơ bản, kiến trúc Mô hình 2 là phiên bản MVC thấp hơn cho các ứng dụng Web. Trong kiến trúc Mô hình 2, trình điều khiển được thể hiện bằng các servlet (hoặc các Action) và việc hiển thị được giao cho các trang JSP. Struts của Apache là một thực thi Mô hình 2 đơn giản hoá, nơi mà các Action thế chỗ các servlet. Trong Struts, logic của trình điều khiển ứng dụng được tách ra khỏi các dữ liệu của nó (được biểu diễn bằng ActionForms). Các lời phàn nàn chủ yếu chống lại Struts là có thể cảm thấy nó có nhiều tính thủ tục hơn hướng đối tượng (“COBOL cho Web”). WebWork và Spring MVC là hai kiến trúc Mô hình 2 khác để cải tiến Struts để ít tính thủ tục hơn, nhưng cả hai đều không được chấp nhận rộng rãi như là Struts. Và cả hai cũng không cung cấp một mô hình thành phần có trạng thái như JSF đã làm. (Struts 2 được xây dựng bên trên WebWork, và cơ sở mã lệnh Struts ban đầu đã bị loại bỏ. Ngay cả Struts cũng không muốn).
Vấn đề thực sự với hầu hết các khung công tác Mô hình 2 là ở chỗ mô hình sự kiện quá đơn giản (chủ yếu là một MVC thu nhỏ nhiều), và nó không có thành phần GUI có trạng thái, để lại quá nhiều công việc cho nhà phát triển. Một mô hình thành phần và sự kiện phong phú hơn sẽ làm cho dễ dàng tạo ra các loại tương tác mà hầu hết người dùng mong đợi. Cũng giống như công nghệ JSP, hầu hết các khung công tác của Mô hình 2 cũng làm cho quá dễ dàng trộn lẫn bố trí và định dạng HTML với các thẻ tùy biến GUI, hoạt động hơi giống như các thành phần, ngoại trừ là chúng không có trạng thái. Và một số kiến trúc Mô hình 2 (như Struts kinh điển) phạm lỗi tách biệt hành vi với trạng thái, đã mang lại cho nhiều nhà phát triển Java cảm giác như họ đang lập trình COBOL.
Lưu ý: JSF không phải là Struts. JSF không phải là một khung công tác Mô hình 2. Nó có nhiều hơn thế. Nhiều người tin rằng do tác giả ban đầu của Struts đã là người lãnh đạo đặc tả kỹ thuật JSF, nên các kỹ năng Struts có thể được sử dụng trên một dự án JSF. Đừng cố gắng lập trình JSF giống như Struts. Bạn cần phải từ bỏ một số kỹ năng Struts của bạn và học các kỹ năng JSF.

Không có nhận xét nào:

Đăng nhận xét