JSF2.0+Spring+Hibernate采用注解方式实现

1.新建一个WEB工程

2.导入所需要的包,包的目录结构如下所示:

3.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  <!-- The bare minimum needed for JSF 2.0 is a servlet 2.5
      declaration and the mapping for the FacesServlet.
      Setting PROJECT_STAGE to Development is highly recommended
      during initial development so that you get more helpful
      error messages.
      
      From JSF 2.0 tutorial at http://www.coreservlets.com/JSF-Tutorial/jsf2/
  -->
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <!-- Start the Spring listener that loads the application context
       when the Web app starts up. It assumes the context is named
       WEB-INF/applicationContext.xml unless you set a context param
       called contextConfigLocation to override it. -->
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  <!-- Lets the bean definition file specify scopes of request 
       and session. -->
  <listener>
    <listener-class>
      org.springframework.web.context.request.RequestContextListener
    </listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

4.application.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-2.5.xsd">
      <context:annotation-config />
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<!-- 指定连接数据库的驱动 -->
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<!-- 指定连接数据库的 URL -->
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" />
		<!-- 指定连接数据库的用户名 -->
		<property name="user" value="root" />
		<!-- 指定连接数据库的密码 -->
		<property name="password" value="123" />
		<!-- 指定连接数据库连接池的最大连接数 -->
		<property name="maxPoolSize" value="40" />
		<!-- 指定连接数据库连接池的最小连接数 -->
		<property name="minPoolSize" value="1" />
		<!-- 指定连接数据库连接池的初始化连接数 -->
		<property name="initialPoolSize" value="1" />
		<!-- 指定连接数据库连接池的连接最大空闲时间 -->
		<property name="maxIdleTime" value="20" />
	</bean>
	<!-- 定义 Hibernate 的 SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 依赖注入数据源,正是上文定义的 dataSource -->
		<property name="dataSource" ref="dataSource" />
		<!-- mappingResources 属性用来列出全部映射文件 -->
		<property name="mappingResources">
			<list>
				<!-- 以下用来列出所有的 PO 映射文件 -->
				<value>coreservlets/Person.hbm.xml</value>
			</list>
		</property>
		<!-- 定义 Hibernate 的 SessionFactory 属性 -->
		<property name="hibernateProperties">
			<props>
				<!-- 指定 Hibernate 的连接方言 -->
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<!-- 配置启动应用时,是否根据 Hibernate 映射自动创建数据表 -->
				<!--  <prop key="hibernate.hbm2ddl.auto">update</prop>-->
			</props>
		</property>
	</bean>
	<bean id="personDao" class="coreservlets.PersonDaoImpl" />
	<bean id="formBean" class="coreservlets.CustomerBackingBean" scope="request"/>	
</beans>

5.faces-config.xml配置

<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
   version="2.0">
  <application>
    <variable-resolver>
      org.springframework.web.jsf.DelegatingVariableResolver
    </variable-resolver>
  </application>

</faces-config>

6.页面文件customer-lookup.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
<h:head><title>Spring Bank: Balance Lookup</title>
</h:head>
<h:body >

  <h:form >
    
      <h:inputText value="#{formBean.id}" />

    <h:commandButton value="Show Person"
                     action="#{formBean.findBalance}"/>
  </h:form>

</h:body>
</html>
show-personName.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
<h:head><title>Spring Bank: Your Balance</title>
<link href="./css/styles.css" 
      rel="stylesheet" type="text/css"/> 
</h:head>
<h:body style="#{formBean.colorPreferences.style}">
<table border="5" align="center">
  <tr><th class="title">Spring Bank: Your Balance</th></tr>
</table>
<p/>
<ul>
  <li>person:#{formBean.person.name}</li>
</ul>
</h:body>
</html>

7.java文件CustomerBackingBean.java
package coreservlets;

import javax.annotation.Resource;

public class CustomerBackingBean {
	
	@Resource
	private PersonDao personDao;
	private Person person;
	private int id;



	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public PersonDao getPersonDao() {
		return personDao;
	}

	public void setPersonDao(PersonDao personDao) {
		this.personDao = personDao;
	}


	public String findBalance() {
	   person = personDao.get(id);
			return ("show-balance");
		
	}
}

Person.java
package coreservlets;

/**
 * Person entity. @author MyEclipse Persistence Tools
 */

public class Person implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer id;
	private String name;

	// Constructors

	/** default constructor */
	public Person() {
	}

	/** full constructor */
	public Person(String name) {
		this.name = name;
	}

	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

PersonDao.java
package coreservlets;

public interface PersonDao {

	public Person get(int id);

}

PersonDaoImpl.java
package coreservlets;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;


public class PersonDaoImpl implements PersonDao {
	private HibernateTemplate ht = null;
	
	@Resource
	private SessionFactory sessionFactory;
	
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	public HibernateTemplate getHibernateTemplate() {
		if (ht == null) {
			ht = new HibernateTemplate(sessionFactory);
		}
		return ht;
	}
	
	/* (non-Javadoc)
	 * @see lee.PersonDao#get(int)
	 */
	public Person get(int id){
		
		Person p = (Person)getHibernateTemplate().get(Person.class,id);
		return p;
	}
}

8.Person.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="coreservlets.Person" table="person" catalog="test">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

一个很简单的功能,实现了JSF2.0+Spring+Hibernate的环境搭建
 
 




发布了24 篇原创文章 · 获赞 3 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/jiejiewish/article/details/7758935