Hướng dẫn sử dụng Sự kết hợp của2 framework Spring + Hibernate với JSF Version 1.0... OverviewĐây là 1 sự kết hợp để xây dựng 1 ứng dụng web theo mô hình MVC: Tầng view do JSF đảm nhận,
Trang 1Hướng dẫn sử dụng Sự kết hợp của
2 framework Spring + Hibernate
với JSF
Version 1.0
Trang 2Revision History
- Viết hướng dẫn sử dụng
Lê Diệp Oanh
Trang 41 Overview
Đây là 1 sự kết hợp để xây dựng 1 ứng dụng web theo mô hình MVC: Tầng view do JSF đảm
nhận, tầng bussiness Spring đảm nhận và tầng tương tác với DB do Hibernate đảm nhiệm
Không giám khẳng định rằng đây là sự kết hợp tốt nhất, nhưng sự kết hợp của Spring và Hibernatethì không có vấn đề gì phải phàn nàn cả Và hiện nay theo một số ý kiến thì JSF còn tốt hơn cả
Struts (http://www.theserverside.com/discussions/thread.tss?thread_id=33884)
a Spring 2.5.4: Tìm trong spring-framework-2.5.4.zip các thư viện sau:
i spring.jar
b JSF 1.2.3: Tìm trong myfaces-core-1.2.3-bin.zip các thư viện sau:
i commons-beanutils-1.7.0.jar
ii commons-codec-1.3.jariii commons-collections-3.2.jar
iv commons-digester-1.8.jar
v commons-discovery-0.4.jar
vi commons-logging-1.1.1.jarvii myfaces-api-1.2.3.jarviii myfaces-impl-1.2.3.jar
c jstl 1.2: Tìm trong jstl-1.2.jar.zip những thư viện sau:
iv ant-launcher-1.6.5.jar
v antlr-2.7.6.jar
vi ant-swing-1.6.5.jarvii asm.jar
viii asm-attrs.jar
ix c3p0-0.9.1.jar
x cglib-2.1.3.jar
xi checkstyle-all.jarxii cleanimports.jarxiii concurrent-1.3.2.jar
xiv dom4j-1.6.1.jar
xv ehcache-1.2.3.jarxvi jaas.jar
xvii jacc-1_0-fr.jar
xviii javassist.jar
xix jaxen-1.1-beta-7.jar
xx jboss-cache.jarxxi jboss-common.jar
xxii jboss-jmx.jar
xxiii jboss-system.jar
xxiv jgroups-2.2.8.jar
Trang 5j Tomcat plugin cho Eclipse 3.3: tomcatPluginV321.zip (Chạy tomcat trên eclipse),
sau khi copy thư mục com.sysdeo.eclipse.tomcat_3.2.1 vào trong thư mục plugin của eclipse, ta thiết định Tomcat như sau:
Vào mục Preference…
Thiết định Tomcat như sau:
Trang 63 Hướng dẫn sử dụng
B1: Tạo 1 project dạng Tomcat project: Tên project JSF_SP_Hi01
Trang 7Cấu trúc project sau khi tạo xong: (Tạo thêm thư mục jsp để chứa các file jsp)
B2: Copy các thư viện ở trên vào thư mục /WEB-INF/lib/
Sau đó tiến hành add vào Libraries trong Java Build Path
Trang 8B3: Kiểm tra jdk có phải là đang sử dụng jdk 5 hay không:
Vào Project properties -> vào Java Build Path, kiểm tra đúng như hình sau không:
Trang 9Sau đó vào mục Java Compiler kiểm tra đúng như màn hình sau hay không:
Trang 10B4: Cấu hình file web.xml như sau:
Những đoạn text bôi màu đỏ là những đoạn có thể tùy biến, cụ thể như sau:
+<display-name>JSF_SP_Hi01</display-name>
Tag này có thể có hoặc không, là tên hiển thị của web application
+ <welcome-file>index.html</welcome-file>
Tag này có hoặc không, chỉ định file mặc định chạy ứng dụng Ví dụ khi nhập vào địa chỉ:
http://localhost:8080/JSF_SP_Hi01/, nó sẽ dựa vào welcome-file này mà chạy file tương ứng
http://localhost:8080/JSF_SP_Hi01/ tương đương với
Chỉ định dạng url nào sẽ được filter bởi
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter Đây là phần filter của
Spring với các request dạng jsf
Trang 11<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<listener-</listener>
<listener>
class>org.apache.myfaces.webapp.StartupServletContextListener</listener-
Trang 12B5: Cấu hình file cho sự kết hợp Spring + Hibernate: JSF_SP_Hi01.xml như sau:
Lưu ý những phần tô đỏ sau:
Chỉ đến file hibernate XML Mapping (.hbm.xml)
+<bean id="HibernateSpringDaoTarget" class="dao.HibernateSpringDAOImpl">
Class được tạo ra trong project để xử lý ở tầng Database
Trang 13<? xml version ="1.0" encoding ="UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
< property name ="dataSource" >
< ref local ="dataSource" />
< property name ="sessionFactory" >
< ref local ="sessionFactory" />
</ property >
</ bean >
<! My bean >
<bean id="HibernateSpringDaoTarget" class="dao.HibernateSpringDAOImpl">
< property name ="sessionFactory" >
< ref local ="sessionFactory" />
</ property >
</ bean >
< bean id ="SpringHibernateDao"
class ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
< property name ="transactionManager" >
< ref local ="transactionManager" />
</ property >
Trang 14B6: Tạo 1 Class User tương ứng với table users trong DB như sau: bean.User
package bean;
import java.io.Serializable;
public class User implements Serializable {
public User(Integer userId, String userName, String userPassword, String userEmail, String userAddress) {
}
public User() {
}
public User(Integer userId) {
}
public Integer getUserId() {
}
public void setUserId(Integer userId) {
}
public String getUserName() {
}
public void setUserName(String userName) {
}
public String getUserPassword() {
}
public void setUserPassword(String userPassword) {
}
public String getUserEmail() {
}
public void setUserEmail(String userEmail) {
}
public String getUserAddress() {
}
public void setUserAddress(String userAddress) {
}
}
Và tạo file mapping User.hbm.xml như đã khai báo trong file cấu hình Spring + Hibernate:
Trang 15<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping
DTD//EN"
3.0.dtd">
"http://hibernate.sourceforge.net/hibernate-mapping-<hibernate-mapping auto-import="true" default-lazy="false">
<class name="bean.User" table="users">
<id name="userId" type="java.lang.Integer" column="userId">
<generator class="increment" />
</id>
<property name="userName" type="java.lang.String"
column="userName" length="20" />
<property name="userPassword" type="java.lang.String"
column="userPassword" length="11" />
<property name="userEmail" type="java.lang.String"
column="userEmail" length="30" />
<property name="userAddress" type="java.lang.String"
column="userAddress" length="30" />
</class>
</hibernate-mapping>
B7: Tạo ra 1 class dùng để check user: bean.CheckValidUser
Trang 16public void setUserName(String userName) {
this.userName = userName;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public void setExist(boolean exist) {
this.exist = exist;
}
public String getUserName() {
return userName;}
public String getPwd() {
return pwd;}
public boolean getExist() {
return exist;}
public String checkUser() throws Exception {
HibernateSpringDAO dao = (HibernateSpringDAO) ServiceFinder
B8: Tạo 1 interface DAO dao.HibernateSpringDAO có chứa phương thức validateUser()
được sử dụng trong class CheckValidUser:
package dao;
import org.springframework.dao.DataAccessException;
import bean.User;
public interface HibernateSpringDAO {
public User validateUser(String strUserName,String password)
throws DataAccessException,java.sql.SQLException;
}
Và 1 class để implement interface này: dao HibernateSpringDAOImpl như sau:
Trang 17public class HibernateSpringDAOImpl extends HibernateDaoSupport
implements HibernateSpringDAO {
public User validateUser(String strUserName,String password)
throws DataAccessException, java.sql.SQLException {
User obj = null;
DetachedCriteria criteria =
DetachedCriteria.forClass(User.class);
List objs = getHibernateTemplate().findByCriteria(criteria);
if ((objs != null) && (objs.size() > 0)) {
obj = (User) objs.get(0);
public class ServiceFinder {
public static Object findBean(String beanName) {
FacesContext context = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) context
Trang 18<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Refresh" content="0;url=jsp/index.jsf">
Trang 19<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
Trang 20Đảm bảo quá trình trên không có lỗi xảy ra, màn hình kết quả như sau (Trên Console)
Và:
Trang 21B3: Vào trình duyệt, gõ vào address: http://localhost:8080/JSF_SP_Hi01/
Màn hình như sau:
Trang 225 Tài liệu tham khảo
- http://www.roseindia.net/jsf/myfacesspring/index.shtml\