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 1THÔ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 3TÀI LIỆU THAM KHẢO
Trang 4MỤ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 5VII 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 6PHẦN I: STRUTS
I Giới thiệu về Struts
II Lịch sử phát triển của Struts
Trang 7I 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 8Model (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 9Struts đượ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 10Struts 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 12PH Ầ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 13I 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 16III 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 18Framework đã 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 20sự 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 22phươ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 23thố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 24bean 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 253 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 26org.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 27PHẦ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 28I 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 29thà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 30họ 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 31dù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 32thườ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 35Thiế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 37Thiế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: