1. Trang chủ
  2. » Luận Văn - Báo Cáo

isas quarter 7 frameworks

75 453 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 1,64 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PHẦN I: STRUTS 7 I. Giới thiệu về Struts 8 II. Lịch sử phát triển của Struts 8 III. Tóm tắt về Struts 8 IV. Tóm tắt cấu hình Struts 9 V. Các đặc tính của Struts 10 VI. Các dự án ứng dụng Struts 11 VII. Struts cho người mới 12 PHẦN II: SPRING 13 I. Java EE 14 II. Tổng Quan Về Spring Framework 16 III. Đích Của Spring Framework 17 IV. Lịch Sử Của Spring Framework 17 V. Những Thành Phần Trong Spring 19 VI. Introduction 20 PHẦN III: JAVASERVER FACES 28 I. Giới thiệu 29 II. Đặc điểm của JSF 29 III. Vai trò của Framework 30 IV. Giới thiệu các thành phần của JSF 31 V. Các thành phần chính của JSF 31 VI. Vòng đời của việc xử lý request 32 VII. Managed Beans 33 PHẦN IV: JFX 40 I. Giới thiệu 41 II. Những đặc điểm nổi bật của JavaFX 41 III. JavaFX Platform Components 44 IV. Công Cụ Phát Triển 45 PHẦN V: GROOVY 48 I. Giới thiệu 49 II. Groovy là gì? 49 III. Groovy 50 IV. Lịch Sử phát triển 50 V. Sức mạnh của Groovy 51 VI. Ứng dụng cua Groovy on Grails. 52 VII. Các tính năng 55 PHẦN VI: TOMCAT AND GLASSFISH 57 I. Giới thiệu sơ lược về tomcat và glassfish 58 II. So sánh GlassFish và Tomcat 62 PHẦN VII: HIBERNATE 65 I. Khái Niệm 66 II. Cài Đặt 67 III. Sử Dụng 67

Trang 1

THÔNG TIN BÁO CÁO KĨ NĂNG TÌM KIẾM VÀ PHÂN TÍCH THÔNG TIN

Mã lớp: B120002

Ngày bắt đầu: 21/11/2011

Ngày kết thúc: 3/12/2011

Tên giảng viên: Thầy Phạm Tiến Phúc

Học viên thực hiện: Nguyễn Đức Cường

Huỳnh Văn Sol Huỳnh Thuỷ Ngân Bùi Anh Vũ

Trịnh Thành Tài Huỳnh Minh Tính Nguyễn Minh Nhựt

Date of Submission: 5/12/2011

Trang 3

TÀI LIỆU THAM KHẢO

Trang 4

MỤC LỤC

THÔNG TIN BÁO CÁO KĨ NĂNG TÌM KIẾM VÀ

PHÂN TÍCH THÔNG TIN 2

CHỨNG NHẬN 3

TÀI LIỆU THAM KHẢO 4

MỤC LỤC 5

PHẦN I: STRUTS 7

I Giới thiệu về Struts 8

II Lịch sử phát triển của Struts 8

III Tóm tắt về Struts 8

IV Tóm tắt cấu hình Struts 9

V Các đặc tính của Struts 10

VI Các dự án ứng dụng Struts 11

VII Struts cho người mới 12

PHẦN II: SPRING 13

I Java EE 14

II Tổng Quan Về Spring Framework 16

III Đích Của Spring Framework 17

IV Lịch Sử Của Spring Framework 17

V Những Thành Phần Trong Spring 19

VI Introduction 20

PHẦN III: JAVASERVER FACES 28

I Giới thiệu 29

II Đặc điểm của JSF 29

III Vai trò của Framework 30

IV Giới thiệu các thành phần của JSF 31

V Các thành phần chính của JSF 31

VI Vòng đời của việc xử lý request 32

Trang 5

VII Managed Beans 33

PHẦN IV: JFX 40

I Giới thiệu 41

II Những đặc điểm nổi bật của JavaFX 41

III JavaFX Platform Components 44

IV Công Cụ Phát Triển 45

PHẦN V: GROOVY 48

I Giới thiệu 49

II Groovy là gì? 49

III Groovy 50

IV Lịch Sử phát triển 50

V Sức mạnh của Groovy 51

VI Ứng dụng cua Groovy on Grails 52

VII Các tính năng 55

PHẦN VI: TOMCAT AND GLASSFISH 57

I Giới thiệu sơ lược về tomcat và glassfish 58

II So sánh GlassFish và Tomcat 62

PHẦN VII: HIBERNATE 65

I Khái Niệm 66

II Cài Đặt 67

III Sử Dụng 67

NHẬN XÉT CỦA GIẢNG VIÊN 76

Trang 6

PHẦN I: STRUTS

I Giới thiệu về Struts

II Lịch sử phát triển của Struts

Trang 7

I Giới thiệu về Struts

Struts là một framework web mã nguồn mở được phát triển cho Java

EE web application.Struts sử dụng và mở rộng Java Servlet API theo hướng kiến trúc MVC(model-view-controller) Struts được khởi xướng bởi Craig McClanahan và sau đó được bảo trợ bởi Apache Foundation vào tháng 5 năm 2000 Vào thời gian đầu Struts được biết thông qua Apache Jakarta Project hay còn gọi là Jakarta Struts nhưng dần sau đó chuyển thành project chính của Apache vào năm 2005 Struts có 2 phiên bản là version 1 và version 2 Version 1 là phát triển web theo kiểu truyền thống Còn version 2 là được Apache Struts tạo ra

từ 1 nhánh của webwork

II Lịch sử phát triển của Struts

Apache Struts Project được khởi xướng bởi Craig R McClanahan vào tháng 5 năm 2000 cung cấp một chuẩn MVC web cho những người phát triển Java Vào tháng 7 năm 2001 phiên bản Struts1.0 đã ra đời Struts version 2 ra đời bản đầu tiên vào tháng 12 năm 2006 Hiện tại version mới nhất của Struts 1 và 2 là: Struts 1.3.10 và Struts 2.1.6

III Tóm tắt về Struts

Framework của web này cung cấp điều khiển thành phần của nó và tích hợp với các công nghệ khác để cung cấp các Model và các View Đối với các Model, framework có thể tương tác với các công nghệ truy cập

dữ liệu chuẩn như JDBC và EJB, cũng như hầu hết các gói phần mềm của bên thứ ba, nhưHibernate, iBATIS, hoặc Object Relational Bridge Đối với View, Framework các hoạt động tốt vớiJavaServer Pages, bao gồm JSTL và JSF, cũng như Velocity Templates, XSLT, và các hệ thống trình diễn khác

Framework là Controller hoạt động như một cầu nối giữa các Model của ứng dụng và các View web Khi yêu cầu được nhận, điều khiển các gọi phương thức một lớp học Action Các Action tham vấn class với Model (hoặc, tốt hơn, một Facade đại diện Model của bạn) để kiểm tra hoặc cập nhật trạng thái của ứng dụng Framework này cung cấp một lớp ActionForm để giúp truyền dữ liệu giữa Model và View

Thông thường, các Model được thể hiện như là một tập hợp các JavaBeans Thường, các nhà phát triển sẽ sử dụng BeanUtils Commons để truyền dữ liệu giữa các ActionForms và các đối tượng

Trang 8

Model (hoặc một Facade) Tốt hơn, mô hình sẽ làm "dỡ bỏ nặng nề", và các Action sẽ hoạt động như một "cảnh sát giao thông" hoặc adapter

IV Tóm tắt về cấu hình trong Struts

Một ứng dụng web sử dụng một mô tả triển khai để khởi tạo tài nguyên như servlets và taglibs Các mô tả triển khai được định dạng như là một tài liệu XML và đặt tên là "web.xml" Tương tự như vậy, Framework sử dụng một file cấu hình để khởi tạo nguồn lực của mình Những tài nguyên này bao gồm các ActionForms để thu thập đầu vào từ người dùng, ActionMappings nhập trực tiếp tới hành động phía máy chủ, và ActionForwards để chọn trang đầu ra

Dưới đây là một cấu hình đơn giản (struts-config.xml) cho một công việc đăng nhập:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"

<action path="/Welcome" forward="/pages/Welcome.jsp" />

<action path="/Logon" forward="/pages/Logon.jsp" />

<action path="/LogonSubmit" type="app.LogonAction"

<action path="/Logoff" type="app.LogoffAction" >

<forward name="success" path="/pages/Logoff.jsp" /> </action>

mở rộng theo tiêu chuẩn, Tiles, giúp bạn xây dựng các trang từ các mảnh nhỏ hơn

Trang 9

Struts được mở rộng Mỗi class được triển khai bởi Framework có thể được thay thế bằng các class mặc định của riêng bạn Các thuộc tính của lớp mặc định của bạn có thể được thiết lập bằng cách sử dụng các tính năng properties này Đây là một trong những lý do tại sao có phần

mở rộng đóng góp rất nhiều Chúng tôi cung cấp framework cơ bản, nhưng bạn vẫn có thể viết các ứng dụng của bạn theo cách của bạn

Để biết thêm về Framework và các công nghệ cơ bản của nó, hãy xem hướng dẫn sử dụng

V Các đặc tính của Struts

1 Là một web MCV framework đầu tiên

Trước khi Struts ra đời thì việc phát triển các ứng dụng web cho người lập trình Java là dựa vào công nghệ Jsp/Serverlet do Sun Microsoft System đặt tả Trong quá trình phát triển bằng Jsp/Servlet thì người lập trình cũng đã mất rất nhiều khó khăn trong việc lấy các dữ liệu theo từng request, giao tiếp giữu các trang, quan hệ giữa các phần xử lý logic và phần hiển thị chưa thật sự phân bố rõ rang khiến cho việc phát triển rất nặng nhọc và khó quản lý

Struts ra đời bằng việc kế thừa và mở rộng các Java Servlet API nhưng theo các hướng đối tượng hơn theo mẫu thiết kế MVC Struts phân chia việc xử lý theo dạng từng action một và tách biệt phần xử lý và phần hiển thị ra nên việc phát triển tương đối thuận lợi và dễ dàng hơn

Các thành phần của Struts:

- Struts Controller Components: đóng vai trò nhận các giá trị input từ client, gọi những phương thức để thực thi nghiệp vụ bussiness, trả dữ liệu về và chọn phần view phù hợp để hiển thị

- Struts Model Components: bao gồm các lớp cần thiết để xử lý những phương thức bussiness, ngoài ra còn có các lớp DTOs(Data Transfer Objects), các lớp truy xuất cơ sở dữ liệu…

- Struts View Components: đây là phần hiển thị của ứng dụng web bao gồm các file HTML, các phần data transfer object, JSP, custom tabs, quản lý các tài nguyên…

Trang 10

Struts hỗ trợ tốt cho các công nghệ view khác nhau như: Jsp, Velocicty, Freemarker, Tile

5 Hỗ trợ Annotation validate và intercepter đối với Struts2

Struts2 có hỗ trợ việc validation trực tiếp trong source code Java bằng các cú pháp anotation của Java5 Ngoài ra Struts2 còn được thừa hưởng tính năng hỗ trợ intercepter của Webwork giúp người phát triển có thể dễ dàng thực hiện những công việc phức tạp theo hướng lập trình AOP

VI Các dự án ứng dụng Struts

- Để cung cấp các ứng dụng ví dụ Struts

- Để lưu trữ Struts phần mở rộng và các tiện ích

- Để đưa mã ra nơi mà các cộng đồng có thể sử dụng nó, sửa chữa nó, và duy trì nó

Struts dự án ứng dụng hiện nay bao gồm các tiểu dự án sau đây:

- AppFuse - Một ứng dụng cơ bản Struts được sử dụng cho các

ứng dụng web trong tương lai

- Thăm dò ý kiến - Một cuộc khảo sát quản lý ứng dụng Struts

Trang 11

- Gọi hành động Struts Framework (SAIF) - Thêm các tính năng như hành động đánh chặn và Inversion of Control (IoC) cho Struts

- Struts BSF - Một hành động thực hiện Struts sử dụng BSFngôn ngữ kịch bản tương thích

- Struts Cocoon - Tích hợp Struts và Cocoon, Cocoon sử dụng cho các lớp trình bày

- Struts Hộp thoại - Thực hiện mô hình xử lý sự kiện, quản lý nhà nước, cung cấp các dòng điều khiển đơn giản hóa và tạo điều kiện phát triển thành phần

- Struts dòng - mang đến điều khiển lưu lượng của Cocoon Struts

- Struts Resume - Một ứng dụng được viết bằng cách sử dụng AppFuse như một nền tảng

- Struts mùa xuân - Tích hợp Struts và Inversion mùa xuân của khuôn khổ (IOC) điều khiển

- StrutsDoc - Một loại công cụ tài liệu javadoc cho Struts và các

file cấu hình có liên quan đến Struts

- AjaxTags - Một phiên bản sửa đổi của HTML Struts taglib cho

biết thêm rằng chức năng AJAX trong một thời trang hoàn toàn khai báo (xin vui lòng xem lưu ý quan trọng về dự án này trên trang AjaxTags)

- AjaxChat - Một ứng dụng chat dựa trên Struts sử dụng AJAX

kỹ thuật Điều này có nghĩa là để phục vụ như một ví dụ cho những người tự hỏi làm thế nào để sử dụng AJAX trong một ứng dụng Struts

VIII Struts cho người mới

Nếu bạn là người mới để phát triển với Struts, đây là một số gợi ý

về làm thế nào để bắt đầu

Khuôn khổ "đứng trên vai những người khổng lồ" Để sử dụng Struts tốt, điều quan trọng là phải có một nắm bắt tốt các nguyên tắc cơ bản Bắt đầu bằng cách xem xét mồi công nghệ chính, và nghiên cứu bất kỳ chủ đề quen thuộc

Trang 12

PH ẦN II: SPRING

VII Java EE

VIII Tổng Quan Về Spring Framework

IX Đích Của Spring Framework

X Lịch Sử Của Spring Framework

XI Những Thành Phần Trong Spring

XII Introduction

Trang 13

I Java EE :

- Java 2 Platform, Enterprise Edition (Nền tảng Java, phiên bản 2

- bản dành cho kinh doanh là công nghệ của Sun Microsystems) hay Java EE (gọi tắt là J2EE) là một nền lập trình dành cho việc phát triển ứng dụng phân tán kiến trúc đa tầng, chủ yếu dựa vào các thành phần môđun chạy trên các máy chủ ứng dụng

- Java EE còn được xem như là một ngôn ngữ hay một tiêu chuẩn vì để có thể công bố là sản phẩm của họ tương thích với Java EE, các nhà cung cấp phải tuân thủ một số yêu cầu đã đặt ra; mặc dù chúng không phải là các tiêu chuẩn của ISO (International Organization for Standardization) hay của Hiệp hội nhà sản xuất máy tính châu Âu (European Computer Manufacturers Association - gọi tắt là ECMA)

- Java EE bao gồm một số đặc tả kĩ thuật API như:

JDBC RMI

Dịch vụ mạng (Web services)

XML

JMS (Java Message Service)

- J2EE còn bao gồm một số đặc tả chỉ tồn tại trong các thành phần của nó Những thành phần này bao gồm Enterprise JavaBean (chủ thể Bean dùng trong kinh doanh), servlet, portlet, JSP và một số các kĩ thuật về dịch vụ mạng (web service)

- Điều này cho phép nhà phát triển tạo ra một chương trình ứng dụng kinh doanh (enterprise application) không những chỉ có thể sử dụng trên các nền tảng khác nhau, mà còn có thể khuếch trương thành những qui mô lớn hơn và tích hợp với những công nghệ kế thừa từ trước đây Trình chủ của Java EE

có thể quán xuyến các giao dịch (transactions), nhiệm vụ bảo

an (security), chức năng đa biến số bất định lượng (arity), tính qui mô hóa (scalability), sự tương tranh (concurrency) và quản

lý các thành phần đã được triển khai trong môi trường của nó Điều này có nghĩa là các nhà phát triển có thể tập trung vào các lôgic thương mại của các thành phần thay vì phải quan tâm đến cơ sở hạ tầng và các nhiệm vụ tích hợp khác

Trang 14

- Các API của Java EE chứa đựng một số kỹ thuật được mở

rộng thêm từ những chức năng trong các API của Java SE

javax.ejb.* : API về chủ thể cấp kinh doanh (Enterprise

Java Beans - hay EJB) cung cấp một tập các hàm API

mà một khung chứa đối tượng phân tán (distributed object container) phải hỗ trợ để có thể cung cấp tính bền bỉ (persistence), khả năng liên lạc từ xa (dùng RMI), khả năng khống chế tương tranh (concurrency control) và điều khiển truy cập (access control) cho các đối tượng phân tán (distributed objects)

javax.servlet : API về Servlets cung cấp một tập các hàm API giữa một khung chứa mạng (web container)

và một servlet nhằm đảm nhiệm việc xử lí các yêu cầu

và hồi âm các phản ứng

javax.servlet.jsp : Các gói javax.servlet.jsp và

javax.servlet.jsp.tagext cung cấp các hàm API về JSP

javax.naming : Các gói javax.naming,

javax.naming.directory, javax.naming.event, javax.naming.ldap và javax.naming.spi định nghĩa các hàm API đối với các giao tiếp (Interface) sử dụng tên trong khi truy cập đối tượng và thư mục (Java Naming and Directory Interface - JNDI)

java.sql, javax.sql :Các gói java.sql và javax.sql cung

cấp các hàm liên nối với cơ sở dữ liệu (Java Database Connectivity - JDBC)

java.transaction.* :Các gói này cung cấp các API để

quản lý việc giao dịch giữa các nguồn tài nguyên khác nhau (Java Transaction API - JTA)

javax.xml.* :Các gói này cung cấp các hàm API để xử

lý các tài liệu XML (Java API for XML Processing - JAXP)

javax.jms.* :Các gói này cung cấp các hàm API sử

dụng trong dịch vụ thông điệp của Java (Java Message Service - JMS)

- Java EE vs Spring Framework Shootout - Phần này so sánh Spring và Java EE ngăn xếp các framework về web Lại xem xét những động cơ đằng sau những khuôn khổ mùa xuân và khám phá sự xuất hiện của mô hình lập trình Java EE để đáp

Trang 15

ứng những thách thức đặt ra Bài trình bày cung cấp cái nhìn

Spring vào khi Spring / hoặc Java EE là thích hợp cho một ứng

dụng web xây dựng và nếu họ có thể cùng tồn tại

- Thực tiễn tốt nhất để Quá trình di chuyển Spring ứng dụng Java EE 6 - Spring Framework không có nghi ngờ đóng vai trò quan trọng trong phát triển như thế nào chúng tôi viết các ứng dụng doanh nghiệp trên nền tảng Java ngày nay, nhưng nó vẫn

là một khuôn khổ sở hữu độc quyền thuộc sở hữu của một công ty duy nhất Tuổi phải dựa trên khuôn khổ sở hữu độc quyền như vậy để phát triển các ứng dụng doanh nghiệp khá hơn, và sử dụng Java EE 6 đã trở thành một cách dễ dàng hơn

để phát triển các ứng dụng doanh nghiệp dựa trên các tiêu chuẩn, mà làm cho nó sự lựa chọn tốt nhất cho bất kỳ ứng dụng doanh nghiệp Trong phiên hoc5 này, bạn sẽ kinh nghiệm làm thế nào để di chuyển một ứng dụng đầy đủ-stack Spring điển hình tiêu chuẩn, ung dung spring ứng dụng Java 6

EE, bao gồm thử nghiệm tích hợp

- Cả hai các bài thuyết trình mang lại Java EE là một lựa chọn tiêu chuẩn dựa trên, dễ dàng hơn và tốt hơn để Spring Framework độc quyền Họ cũng bao gồm các kịch bản cho việc chuyển sang và đồng tồn tại với Spring Xin vui lòng thông qua các bài thuyết trình đánh giá lại cách sử dụng Spring Framework trong ngăn xếp ứng dụng của bạn

II Tổng Quan Về Spring Framework :

- Spring Framework, hay ngắn hơn là Spring, là một cấu trúc dùng để xây dựng chương trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java

- Phiên bản đầu tiên của nó do Rod Johnson viết, và đã được ông xuất bản cùng với quyển sách đầu tay Expert One-on-One Java EE Design and Development (Nhà xuất bản Wrox Press, Tháng 10 năm 2002)

- Phiên bản phần mềm này cũng còn được xuất sang nền tảng NET (.NET platform), được gọi là Spring.net

- Kiến trúc của Spring Framework được ra mắt công chúng lần đầu tiên hồi tháng 6 năm 2003 dưới Giấy phép Apache - phiên bản 2.0

- Phiên bản 1.0 đánh dấu mốc thành đạt đầu tiên được xuất bản vào tháng 3 năm 2004

Trang 16

III Mục Đích Của Spring Framework :

- Là một hình thức chủ yếu thay thế cho mô hình Enterprise JavaBean , bởi vì Spring Framework không bắt buộc người ta phải tuân theo một mô hình lập trình (programming model) cụ thể nào, nó lan truyền rộng rãi trong cộng đồng những người viết chương trình dùng Java

- Nó được thiết kế với bộ khung hình này giải phóng lập trình viên dùng Java, cho phép họ nhiều quyền tự do hơn, và đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm

- Bên cạnh những đặc trưng nền tảng của Spring Framework là những cái có thể dùng được trong bất cứ một chương trình ứng dụng Java nào, rất nhiều các mở rộng và tiến bộ trong việc kiến tạo các trình ứng dụng dành cho nền tảng mạng web (web-based application) dựa trên nền Java Enterprise

- Với sự ra đời của Spring Framework đánh dấu bước ngoặc lớn trong sự phát triển của java

IV Lịch Sử Của Spring Framework :

- Phần đầu tiên của Spring Framework ban đầu nguyên được Rod Johnson viết vào năm 2000, trong khi ông đang làm một chuyên viên cố vấn cho các khách hàng trong thị trường kinh tế tài chính tại Luân Đôn

- Trong lúc đang viết quyển Expert One-on-one J2EE Design And Development (Programmer to programmer) (Thiết kế và kiến tạo Java EE - tương giao cá nhân một đối một chuyên ngành (lập trình viên với lập trình viên)), ông đã mở rộng thêm phần mã nguồn, hòng biểu đạt ý tưởng của mình về mối tương quan của các trình ứng dụng với những phần khác nhau của J2EE và cho rằng người ta có thể đơn giản hóa mối tương quan của chúng, và mối liên hệ ấy có thể trở nên cố định, bất biến hơn là những gì mà các lập trình viên và các công ty vốn quen sử dụng tại thời điểm đó

- Trước đây, vào năm 2001, những mô hình lập trình cho các trình ứng dụng cho mạng WEB được đại đa số sử dụng đều do Java Servlet API và Enterprise JavaBean cung cấp Cả hai đều

là đặc tả do Sun Microsystems kiến tạo với sự cộng tác của các nhà buôn bán phần mềm và các bên quan tâm, và chúng rất

Trang 17

được mến chuộng trong cộng đồng Java Những trình ứng dụng không dùng cho mạng WEB như các ứng dụng trình khách (client-based application) hay các ứng dụng tác vụ (batch application) đều có thể sử dụng các công cụ từ mã nguồn mở, các công cụ trên thị trường hoặc từ các dự án khác

là những cái cung cấp những đặc trưng yêu cầu

- Rod Johnson được ghi công là người thiết lập bộ khung, dựa trên những thói quen hành nghề được công chúng chấp nhận

là những phương pháp tốt nhất, và tạo cơ hội cho chúng có thể được sử dụng trong tất cả các loại hình chương trình ứng dụng, không chỉ cho các trình ứng dụng cho mạng WEB riêng

mà thôi Ý tưởng này còn được biểu lộ trong cuốn sách của ông và, sau khi được độc giả yêu cầu, ông còn cho xuất bản kèm với mã nguồn với giấy phép mã nguồn mở nữa

- Một nhóm nhỏ các nhà phát triển đang tiếp tục mở rộng bộ khung này và một dự án đã được thành lập tại Sourceforge vào tháng 2 năm 2003 Sau khi phát triển trền nền tảng ban đầu hơn một năm họ đã phát hành phiên bản đầu tiên (1.0) vào tháng 3 năm 2004 Sau khi phát hành nó đã nhận được nhiều

sự quan tâm của cộng đồng Java

- Tuy nhiên, Spring Framework cũng chịu nhiều chỉ trích nặng nề năm 2004 và vẫn còn là chủ điểm của những cuộc tranh cãi đôi khi nóng bỏng Vào thời điểm ra đời phiên bản đầu tiên nhiều lập trình viên cùng một số thành viên tiên phong thấy nhận thấy rằng Spring Framework là một phương hướng mới để thoát khỏi mô hình lập trình truyền thống Điều này đặc biệt đúng đối với Enterprise JavaBean

- Một trong những mục tiêu thiết kế Spring Framework là làm cho

nó dễ dàng tích hợp với tiêu chuấn J2EE và các bộ công cụ có sẵn trên thị trường hiện nay Ảnh hưởng của điều này là nó hầu như góp phần xóa bỏ nhu cầu phải định nghĩa các chức năng đặc trưng trên một bản tài liệu đặc tả chính thức do hội đồng quản lý, cái mà một số người đã từng phê phán

- Spring Framework đã làm cho những kỹ thuật vốn không được biết đến mấy trở nên những kỹ thuật được mọi người ưa chuộng trong một thời gian ngắn ngủi

- Một trong những kỹ thuật nổi tiếng hơn cả là kỹ thuật đảo ngược quyền khống chế (Inversion of Control, IoC) Nội trong

2004, Spring Framework được rất nhiều người hưởng ứng và làm theo và cũng do tự chính nó cống hiến khung hình lập trình định dạng (aspect-oriented programming) (AOP) Spring

Trang 18

Framework đã tạo cơ hội cho mẫu hình lập trình này trở nên được ưa thích trong cộng đồng Java

- Năm 2005 cho thấy mức độ hưởng ứng nâng cao hơn những năm trước, nguyên do cũng vì những xuất bản mới được ra với những cột mốc đáng kể và những tính năng mới được thêm vào Diễn đàn Spring (Spring Forum) ra đời cuối năm 2004 cũng góp phần không nhỏ trong việc nâng cao tính phổ biến của bộ khung hình, và từ đó đến nay đã sinh trưởng trở thành một nguồn thông tin quan trọng, giúp đỡ cho người sử dụng

- Trong cùng năm đó, những người phát triển Spring Framework khởi thủy công ty riêng của họ để hỗ trợ về mặt thương mại và đáng kể hơn cả là sự bắt tay cộng tác với BEA [1] Vào tháng

12 năm 2005, hội thảo đầu tiên về Spring Framework đã được

tổ chức tại Miami, Florida thu hút 300 nhà phát triển trong 3 ngày, và tiếp theo đó cuộc hội thảo ở Antwerp vào tháng 6 năm

2006, thu hút hơn 400 người

V Những Thành Phần Trong Spring :

- Spring framework chứa nhiều đặc tính, được tổ chứa thành 7 modules:

Trang 19

- Core package : là phần cơ bản nhất của framework, cung cấp những đặc tính IoC và Dependency Injection Khái niệm cơ bản

là BeanFactory - cài đặt factory pattern cho phép bạn móc nối

sự phụ thuộc giữa các đối tượng trong file cấu hình

- Core package : là Context package - cung cấp cách để truy cập đối tượng Context package kết thừa các đặc tính từ bean package và thêm vào chức năng đa ngôn ngữ (I18N), truyền

sự kiện, resource-loading,

- DAO package : cung cấp cho tầng JDBC, bỏ bớt những coding

dài dòng của JDBC và chuyển đổi mã lỗi được xác định bởi database vendor JDBC package cung cấp cách lập trình tốt như declarative transaction management, không chỉ cho các lớp cài đặt các giao tiếp đặc biệt mà còn cho tất cả POJO (plain old Java objects)

- ORM package : cung cấp tầng tích hợp với object-relational mapping API bao gồm: JDO, Hibernate, iBatis Sử dụng ORM package bạn có thể sử dụng tất cả các O/R mapper đó kết hợp với tất cả các đặc tính của Spring như declarative transaction management

- Spring AOP package : cung cấp aspect-oriented programming

cho phép bạn định nghĩa method-interceptor và pointcut để móc nối các chức năng được cài đặt trong các module Sử dụng chức năng metadata bạn có thể kết hợp tất cả thông tin vào code

- Spring Web package : cung cấp đặc tính của web như: chức năng file-upload, khởi tạo IoC container sử dụng trình lắng nghe serlvet và web-oriented application context Package này

để tích hợp với WebWork và Struts

- Spring MVC package : cung cấp mô hình MVC cho ứng dụng

web Spring MVC framework cung cấp sự phân biệt rõ ràng giữa domain model và web form - cho phép bạn sử dụng tất cả các đặc tính khác của Spring framework

VI Introduction:

- IoC Container: org.springframework.beans và

rg.springframework.context cung cấp IoC container cho Spring framework Giao tiếp BeanFactory cung cấp kỹ huật cấu hình nâng cao, có khả năng quản lý các đối tượng Giao tiếp

ApplicationContext kế thừa từ BeanFactory và thêm một vài chức năng khác như tích hợp với đặc tính Spring AOP, truyền

Trang 20

sự kiện, application context như WebApplicationContext sử dụng trong ứng dụng web

Giao tiếp org.springframework.beans.factory.BeanFactory là IoC container chịu trách nhiệm chứa, khởi tạo, quản lý và móc nối sự phụ thuộc giữa các bean

Một cài đặt (kế thừa) của BeanFactory là XmlBeanFactory - nhận XML configuration metadata và

sử dụng nó để cấu hình cho ứng dụng Configuration metadata có định dạng XML (hoặc properties), được sử dụng để viết các bean definitions cho các bean mà bạn muốn IoC container quản lý

Ở mức cơ bản nhất thì cấu hình IoC container phải chứa ít nhất một bean mà container đó phải quản lý Khi sử dụng XML-based configuration metadata, các bean này được cấu hình như một hoặc nhiều <bean> element bên trong <beans> element Các bean này tương ứng với các đối tượng được tạo trong ứng dụng

Ví dụ về cấu trúc cơ bản của XML-based configuration metadata:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans- 2.0.xsd">

<bean id=" " class=" ">

<! collaborators and configuration for this bean go here >

</bean>

<bean id=" " class=" ">

<! collaborators and configuration for this bean go here >

</bean>

Trang 21

<! more bean definitions go here >

</beans>

- Khởi tạo một container : Khởi tạo IoC container thì rất dễ, sau

đây là một ví dụ về cách khởi tạo nó:

Resource resource = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource);

Có hai biến thể chính của DI là: Setter Injection và Constructor Injection:

a Etter Injection: Được nhận ra bởi phương thức setter trên bean sau khi triệu gọi phương thức khởi tạo không tham số hoặc phương thức static factory không tham số để khởi tạo bean

b Constuctor injection: Được nhận ra bằng cách triệu gọi một phương thức khởi tạo với một số tham số Một biến thể khác thay thế cho constructor là sử dụng

Trang 22

phương thức static factory để trả về thể hiện của đối tượng

} // a static factory method; the arguments to this method can be

// considered the dependencies of the bean that is returned,

// regardless of how those arguments are actually used public static ExampleBean createInstance(AnotherBean anotherBean,

YetAnotherBean yetAnotherBean, int i) { ExampleBean eb = new ExampleBean(…);

// some other operations //

return eb;

} }

Các tham số của phương thức static factory được cung cấp thông qua constructor-arg element Một điều quan trọng là loại của lớp được trả về bởi phương thức factory thì không cùng loại với lớp chứa phương thức static factory, mặc dù trong ví dụ này thì cùng loại

- Aspect-oriented Programming:

Kỹ thuật lập trình đưa ra cách phân chia các yêu cầu của hệ thống Hệ thống được phân ra thành một vài component đảm trách một chức năng xác định Bên cạnh các chức năng cơ bản thì các dịch vụ (yêu cầu hệ thống) như logging, transaction management, security phải có trong chương trình Các dịch vụ hệ

Trang 23

thống này được gọi là 'cross-cutting concern' - nghĩa là chúng cắt chéo qua nhiều component trong hệ thống AOP có khả năng module hóa các service này và sau

đó cung cấp đến các component và chúng ta có thể tập trung vào yêu cầu chính (core concern) Trong Spring, lát cắt (aspect) được cắm vào trong các đối tượng của XML file như các JavaBean Tiến trình này gọi là sự đan xen (weaving)

Container là khái niệm chính của Spring Để quản lý vòng đời và cấu hình các đối tượng của ứng dụng Chúng ta có thể cấu hình mỗi bean nên được tạo như thế nào hoặc làm thế nào để tạo một instance của bean hoặc làm thế nào kết hợp chúng lại Spring không sử dụng các EJB container hạnh nặng Spring có 2 container phân biệt: Bean Factory được định nghĩa bởi org.springframework beans.factory.BeanFactory là một container đơn giản nhất, cung cấp hỗ trợ dependency injection Application context được định nghĩa bởi org.springframework.context.ApplicationContext, cung cấp các service của application framework

- Bean Factory:

Bean factory thì cài đặt factory design pattern và chức năng của nó là tạo và phân phát các bean Bean factory biết về nhiều đối tượng trong ứng dụng, nó có thể tạo mối kết hợp cho các đối tượng khi chúng được khởi tạo Điều này sẽ giảm bớt gánh nặng cho bean và client

org.springframework.beans.factory.xml.XmlBeanFactor

y Nó sẽ load các bean dựa vào định nghĩa trong XML file Để tạo một thể hiện của XmlBeanFactory, hãy chuyển vào constuctor của nó một InputStream Resource này sẽ cung cấp XML cho factory

BeanFactory factory = new XmlBeanFactory(new FileInputStream("myBean.xml"));

- Dòng này bảo bean factory đọc định nghĩa bean từ XML file Định nghĩa bean bao gồm mô tả bean và các thuộc tính của nó Nhưng bean factory vẫn chưa khởi tạo nó Để rút trích một

Trang 24

bean từ BeanFactory, hãy gọi phương thức getBean() Khi phương thức getBean() được gọi, factory sẽ khởi tạo bean và bắt đầu thiết lập các thuộc tính của nó sử dụng depedency injection.

myBena bean1 = (myBean)factory.getBean("myBean");

- Application Context:

Trong khi Bean Factory được sử dụng cho các ứng dụng đơn giản, thì Application Context là một container nâng cao của Spring Giống như BeanFactory, nó có thể được sử dụng để load các định nghĩa bean, gắn các bean với nhau và phân phát các bean theo yêu cầu

Nó cũng cung cấp:

1 Giải quyết text message, bao gồm hỗ trợ internationlization

2 Cách chung để load file resource

3 Các sự kiện để bean được đăng ký như các trình lắng nghe

Có 3 cách sử dụng cài đặt Application Context:

1 ClassPathXmlApplicationContext: Nó load định nghĩa context từ XML file được đặt trong classpath, xem các định nghĩa context như các tài nguyên của classpath Application context thì được load từ classpath của ứng dụng như sau:

ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

2 FileSystemXmlApplicationContext: Nó load định nghĩa context từ XML file trong từ hệ thống file

Application Context được load từ hệ thống file như sau:

ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml");

Trang 25

3 XmlWebApplicationContext: Nó sẽ load các định nghĩa context từ XML file trong ứng dụng web

Spring thì nhẹ về cả kích cỡ và chi phí Toàn bộ framework có thể được phân phát trong JAR file chỉ hơn 1.7MB Chi phí được yêu cầu bởi Spring thì không đáng kể Và Spring không ràng buộc, ví dụ: các đối tượng trong ứng dụng Spring không phụ thuộc vào các class của Spring

- LDAP :

LDAP - viết tắt của Lightweight Directory Access Protocol, hay dịch ra tiếng Việt có nghĩa là giao thức truy cập nhanh các dịch vụ thư mục

Là một giao thức tìm, truy nhập các thông tin dạng thư mục trên server

• Nó là giao thức dạng Client/Server dùng để truy cập dịch vụ thư mục

• LDAP chạy trên TCP/IP hoặc các dịch vụ hướng kết nối khác

• Là một mô hình thông tin cho phép xác định cấu trúc

và đặc điểm của thông tin trong thư mục

• Là một không gian tên cho phép xác định cách các thông tin được tham chiếu và tổ chức

• Một mô hình các thao tác cho phép xác định các tham chiếu và phân bố dữ liệu

• Là một giao thức mở rộng

• Là một mô hình thông tin mở rộng

Ở đây chúng ta cần tránh hiểu nhầm từ "thư mục" như trên Windows là folder hay directory, đó là thư mục theo nghĩa hẹp để quản lý hệ thống tệp tin Từ thư mục trong LDAP mang ý nghĩa rộng hơn, nó bao hàm các cấu trúc dữ liệu dạng liệt kê theo thư mục (hay mục lục)

- một "từ khoá" của dân thư viện nhằm ám chỉ cách thức sắp xếp dữ liệu để tiện truy xuất nhất

- Phần này cung cấp một cái nhìn tổng quan về cấu trúc

Package Spring LDAP:

org.springframework.transaction.compensating

Trang 26

org.springframework.ldap org.springframework.ldap.core org.springframework.ldap.core.support org.springframework.ldap.core.simple org.springframework.ldap.pool

org.springframework.ldap.pool.factory org.springframework.ldap.pool.validation org.springframework.ldap.support

org.springframework.ldap.authentication org.springframework.ldap.control

org.springframework.ldap.filter org.springframework.ldap.transaction.compensating org.springframework.ldap.transaction.compensating.manager

org.springframework.ldap.transaction.compensating.support

org.springframework.ldap.ldif org.springframework.ldap.ldif.batch org.springframework.ldap.ldif.parser org.springframework.ldap.ldif.support org.springframework.ldap.odm

Trang 27

PHẦN III: JAVASERVER FACES

I Giới thiệu

II Đặc điểm của JSF

III Vai trò của Framework

IV Giới thiệu các thành phần của JSF

V Các thành phần chính của JSF

VI Vòng đời của việc xử lý request

VII Managed Beans

Trang 28

I Giới thiệu

- Công nghệ Java Server Faces(JSF) cung cấp kiến thức về nền tảng của JavaServerFaces, thường được gọi tắt là JSF, một đặc tả và cũng là một công nghệ then chốt của Sun Microsytems, cho phép lập trình viên xây dựng các ứng dụng web trên nền tảng Java một cách nhanh chóng và hiệu quả hơn Vì JSF không chỉ là một công nghệ mà còn là một đặc tả, cho phép các nhà phát triển khác nhau viết mã thực thi (implementation) cho đặc tả này, làm phong phú thêm trong việc lựa chọn JSF làm nền tảng xây dựng web với Java, như Apache MyFaces, ICEFaces, JBoss RichFaces

- Java Server Faces là gì ?

JSF 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à làm cho việc phát triển các ứng dụng Web dễ dàng bằng việc mang đến một sự hỗ trợ mạnh mẽ giàu tính năng với các thành phần giao diện người dùng (như các text box, list box, tabbed pane và data grid) Một thành phần của Java Community Process, JSF hướng đến trở thành một phần của Java 2 Enterprise Edition (J2EE)

II Đặc điểm của JSF

- Một trong những lợi điểm lớn nhất của công nghệ JSF là nó cho phép phân chia rạch ròi giữa behavior (cách xử lý) và presentation (cách trình bày) Tuy nhiên, một ứng dụng JSP không thể ánh xạ những request HTTP thành những xử lý sự kiện các thành phần cụ thể hoặc quản lý các thành phần UI như những đối tượng có trạng thái trên server, nhưng công nghệ JSF lại cho phép bạn làm được điều đó

- Việc phân chia luận lý từ presentation cũng cho phép mỗi thành viên của một nhóm phát triển ứng dụng Web tập trung vào những phần trong tiến trình phát triển của họ, và cung cấp một

mô hình lập trình đơn giản để liên kết những phần đó với nhau.Một mục tiêu quan trọng khác của công nghệ JSF là cung cấp các mức độ thân thuộc các thành phần UI và các khái niệm tầng Web

- Quan trọng hơn hết, công nghệ JSF cung cấp một kiến trúc dành cho việc quản lý trạng thái các thành phần, xử lý dữ liệu

Trang 29

thành phần, kiểm tra nhập liệu của người dùng, xử lý các sự kiện và thông báo bất kỳ lỗi gì trước khi dữ liệu phía server được cập nhật

- Các ứng dụng JSF cũng tương tự như bất kỳ các ứng dụng Java Web khác, Chúng chạy trên một Java Servlet container,

và thông thường chứa:

Các thành phầns JavaBean (được gọi là những mô hình đối tượng trong công nghệ JSF)

- Thư viện thẻ tùy biến xóa bỏ những gì cần thiết cho các thành phần UI trong HTML hoặc ngôn ngữ đánh dấu khác, kết quả là những thành phần tái sử dụng hoàn toàn Và thư viện core tạo nên sự dễ dàng để đăng ký các sự kiện, kiểm tra và những hành động khác

- Thư viện thẻ tùy biến có thể là thư viện thẻ HTML cơ bản chứa cùng với công nghệ JSF, hoặc bạn có thể định nghĩa thư viện thẻ của riêng mình nhằm tạo ra các thành phần tùy biến hoặc xuất ra kiểu khác HTML

III Vai trò của Framework

- Page Authors: Là người sử dụng ngôn ngữ đánh dấu, giống như HTML, để tạo ra các trang cho ứng dụng Web Khi sử dụng framework công nghệ JSF, page authors sẽ hầu hết sử dụng thư viện thẻ

- Application Developers: Là người lập trình mô hình các thành phần, các xử lý sự kiện, các kiểm tra, và navigation của trang Application developer có thể cung cấp các lớp helper mở rộng

- Component Writers: Là người có kinh nghiệm lập trình UI và đề nghị tạo ra các thành phần tùy biến sự dụng ngôn ngữ lập trình.Những người này có thể tạo ra các thành phần của riêng

Trang 30

họ trực tiếp từ các lớp thành phần, hoặc họ có thể kế thừa các thành phần chuẩn cung cấp bởi công nghệ JSF.

- Tool Verdors: người cung cấp các công cụ nhằm tạo ra công nghệ JSF xây dựng UI phía server dễ dàng hơn

IV Giới thiệu các thành phần của JSF

- Java Server Faces là một UI framework cho việc xây dựng các ứng dụng web chạy trên Java server và thay thế UI phía sau cho client Các thành phần chính của công nghệ JSF bao gồm:

Điều khiển việc tạo ra các sự kiện phía client từ việc viế

- UI Component (còn gọi là một control hay đơn giản là

component) : một đối tượng có trạng thái, được chứa trên server, cung cấp các chức năng cụ thể để tương tác với người

Trang 31

dùng cuối UI component là những JavaBean với các thuộc tính, phương thức, sự kiện Chúng được tổ chức thành một cây các component thường hiển thị như một trang

- Rederer: Trả lời cho việc hiển thị một UI component và trao đổi

một dữ liệu nhập của user vào giá trị của component Renderer

có thể được thiết kế để làm việc với một hoặc nhiều UI component, và một UI component có thể tập hợp với nhiều renderer khác nhau

- Validator: Trả lời cho việc chắc chắn rằng giá trị nhập vào bởi

user được chấp nhận Một hoặc nhiều validator có thể được tập hợp với một UI component

- Backing beans:Các Java Bean xác định tập hợp các giá trị từ các UI component và bổ sung các phương thức listener cho event Chúng cũng có thể nắm giữ các tham chiếu đến các UI component

- Converter: Chuyển đổi một giá trị của component thành và từ

một chuỗi để hiển thị Một UI component có thể được tập hợp với một converter duy nhất

- Event/listener: JSF sử dụng mô hình event/listener JavaBeans (cũng được sử dụng cho Swing) UI component (và những đối tượng khác) tạo ra các event, và các listener có thể đăng ký để

xử lý các sự kiện

- Messages: Thông tin hiển thị cho user Chỉ bất kỳ phần ứng dụng nào (backing beans, validators, converter ) có thể tạo ra thông tin hoặc thông điệp lỗi nhằm hiển thị cho use

- Navigation: Khả năng di chuyển từ một trang đến trang khác JSF có một hệ thống navigation mạnh mẽ tích hợp với những event listeners

VI Vòng đời của việc xử lý request:

Chúng ta nói về lập trình Web đơn giản thế nào với các components, events, listeners, và chín mươi khác niệm khác nhau Vì thế tại sao phần này nói về xử lý request Trong khi bạn tìm hiểu framework bên dưới xử lý request của Servlet API,

sẽ phân tích Faces xử lý request như thế nào Điều này cho phép bạn xây dựng các ứng dụng tốt hơn bởi vì bạn sẽ biết chính xác cái gì được đặt ở đâu và khi nào

- Bước 1 - Restore View: Hiển thị thay thế tất cả các component tạo nên một trang cụ thể Nó có thể lưu trữ trên client (thông

Trang 32

thường trong một field ẩn trên trình duyệt) hoặc trên server (thông thường trong session).

- Bước 2 - Apply Request Values: Mỗi UI component chấp nhận

dữ liệu nhập có một giá trị được submit thay thế giá trị dữ liệu gốc từ user Trong suốt bước này, framework ấn định giá trị được submit dựa trên tham số gởi đi trong request Quá trình này gọi là decoding

- Bước 3 - Process Validation: trong bước này, JSF đặt cây component và hỏi mỗi component có chắc chắn rằng giá trị submit là có thể chấp nhận không Bởi vì giá trị được submit của mỗi component nhập vào được cập nhật bởi bước 2, component bây giờ có hầu hết dữ liệu hiện thời của user Trước khi validation xảy ra, giá trị được submit được chuyển đổi, bằng mỗi converter đã đăng ký cho component hoặc converter mặc định Validation là sau khi xử lý trực tiếp bằng component hoặc công bố cho một hoặc nhiều validator

- Bước 4 - Update Model Values: Bây giờ chúng ta đã chắc chắn

về giá trị cục bộ của các component đã được cập nhật và chính xác và đúng kiểu, có thể chuyển đi với bất kỳ bean nào được tập hợp hoặc mô hình các đối tượng Bởi vì các đối tượng được tập hợp với các component thông qua các phát biểu JSF

EL, đây là nơi các phát biểu này được kiểm tra và các thuộc tính được cập nhật dựa trên giá trị cụ bộ của component

- Bước 5 - Invoke Application: Bây giờ các bean cần thiết và mô hình các đối tượng được cập nhật, chúng ta có thể đi xuống việc công bố thông tin Trong bước này, JSF quảng bá các sự kiện cho bước này đối với bất kỳ listener nào đã được đăng ký

- Bước 6 - Render Response: Tại thời điểm này, tất cả xử lý bới framework và ứng dụng đã trải qua Tất cả chờ được gởi đi trả lời cho user, và đây là mục tiêu chính của bước này Mục tiêu thứ hai là lưu lại trạng thái hiển thị để nó có thể được phục hồi trong bước Restore View nếu user yêu cầu lại Trạng thái hiển thị lưu lại trong bước này bởi vì thường thì hiển thị được lưu trên client, vì thế nó là một phần của response nhằm gởi trả cho user Trong trường hợp này, JSF đang lưu trạng thái trên server, vì thế hiển thị hầu hết được lưu trữ trong session của user

VII Managed Beans

a Định nghĩa bean

Trang 33

- Định nghĩa

Bean một đối tượng có thuộc tính, có các phương thức Bean phục vụ cho mục đích khác Các đối tượng được tạo và được quản lý bên trong chương trình Java khi chương trình gọi các phương thức khởi tạo và các phương thức khác Tuy nhiên bean có thể được cấu hình và được quản lý mà không cần lập trình

Ví dụ: Ứng dụng login UserManager được cấu hình trong faces-config.xml:

<managed-bean>

<managed-bean-name>usermanager</managed-bean-name>

bean-class>

<managed-bean-class>enterprise.jsf_jpa_war.UserManager</managed-<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

Khi chương trình thực thi nó tao ra đối tượng của com.corejsf.UserBean, đặt tên là usermanager, và giữ nó tồn tại trong suốt session, để phục vụ cho tất cả các yêu cầu hình thành từ client

Mỗi khi bean được định nghĩa, nó có thể được truy cập bởi các component của JSF Ví dụ trường input này đọc và cập nhật thuộc tính password của bean usermanager

<h:inputSecret value="#{user.password}"/>

- Các thuộc tính của bean

Lớp bean cần theo quy ước lập trình để đưa ra các đặc tính mà các công cụ có thể sử dụng

Property của Bean gồm nhiều thuộc tính: tên, kiểu dữ liệu và phương thức getter/setter cho giá trị thuộc tính

Ví dụ:

private String username;

public String getUsername() { return username;

Trang 34

} public void setUsername(String username) { this.username = username;

}

- Value Binding Expressions

Nhiều component giao diện của JSF có thuộc tính value để bạn

có thể xác định giá trị hoặc binding đến một giá trị được chứa trong thuộc tính của bean Ví dụ, bạn có thể xác định giá trị trực tiếp:

<h:outputText value="Hello, World!"/>

hoặc xác định value binding:

<f:loadBundle basename="messages" var="msgs"/>

- Element này sẽ load các message trong bundle vào biến tên là msgs Sử dụng như sau:

Trang 35

Thiết lập locale mặc định và được hỗ trợ trong INF/faces-config.xml

viewRoot.setLocale(new Locale("de"));

c Backing Beans

- Thỉnh thoảng, thật sự hiệu quả khi thiết kế một bean chứa một vài hoặc tất cả các đối tượng component của web form Và bean đó được gọi là backing bean cho web form:

public class QuizBean { private UIOutput scoreComponent;

private UIInput answerComponent;

// PROPERTY: scoreComponent public UIOutput getScoreComponent() { return scoreComponent;

} public void setScoreComponent(UIOutput newValue) { scoreComponent = newValue;

} // PROPERTY: answerComponent public UIInput getAnswerComponent() { return answerComponent;

} public void setAnswerComponent(UIInput newValue) { answerComponent = newValue;

} }

- Khi sử dụng backing bean, bạn cần gắn kết các component trên form với bean Bạn có thể sử dụng thuộc tính binding cho mục đích này:

<h:outputText binding="#{quiz.scoreComponent}"/>

d Bean Scopes

Trang 36

- Request Scope: Phạm vi của request tồn tại ngắn, nó bắt đầu khi một HTTP request được submit và kết thúc khi response được gửi trở lại cho client

Ghi chú: nếu một request là forward đến một request khác, tất cả các cặp name/value lưu trong request scope được mang đến request mới Trái lại, nếu một request được redirect, dữ liệu của request sẽ bị mất

- Session scope

Session Scope beans được tạo ra và được lưu trữ thành các đối tượng trong session Session sẽ tắt nếu ứng dụng web gọi phương thức invalidate trên đối tượng HttpSession hoặc nếu

nó time out

- Application Scope

Application scope giống như một session nhưng được tồn tại trong suốt khoảng thời gian của ứng dụng web(giống như một biến toàn cục), nó chỉ mất khi ứng dụng web đóng

e Configuring Beans

- Configuring Beans thường sử dụng file cấu hình là

WEB-INF/faces-config.xml Tuy nhiên cũng có thể cấu hình thông tin trong file cấu hình sau:

File tên là META-INF/faces-config.xml

Danh sách các file trong tham số javax.faces.CONFIG_FILES bên trong WEB-INF/web.xml Ví dụ như:

<web-app>

<context-param>

<param-name>javax.faces.CONFIG_FILES</param-name>

INF/beans.xml</param-value>

Trang 37

Thiết lập giá trị thuộc tính

<managed-bean>

<managed-bean-name>user</managed-bean-name>

class>

Để khởi tạo một thuộc tính bằng null, hãy sử dụng element null-value

Khởi tạo List và Map:

Có thể sử dụng element list-entries và map-entries để khởi tạo bean hoặc property có kiểu List hoặc Map

o List entries:

Ngày đăng: 30/07/2014, 16:35

TỪ KHÓA LIÊN QUAN

w