(1)UserInfo.java
package com.zhaoqingjie.service.hibernate;
import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;
public class UserInfo implements Serializable{
private String id;
private String username;
private String email;
public UserInfo(String id,String username,String email){
this.id = id;
this.username = username;
this.email = email;
}
public UserInfo(){
}
public UserInfo(String id){
this.id = id;
}
public String getId(){
return id;
}
public void setId(String id){
this.id = id;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = emial;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String toString(){
return new ToStringBuilder(this).append("id",getId()).toString();
}
}
(2)UserInfo.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="com.zhaoqingjie.spring.service.hibernate.UserInfo" table="userinfo">
<meta attribute="class-description" inherit="false">
@hibernate.class
table="userinfo"
</meta>
<id name="id" type="java.lang.String" column="id">
<meta attribute="field-description">
@hibernate.id
generator-class="assigned"
type="java.lang.String"
column="id"
</meta>
<generator class="assigned"/>
</id>
<property name="username" type="java.lang.String" column="username" length="36">
<meta attribute="field-description">
@hibernate.property
column="username"
length="36"
</meta>
</property>
<property name="email" type="java.lang.String" column="email" length="60">
<meta attribute="field-description">
@hibernate.property
column="email"
length="60"
</meta>
</property>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------------------------
(3)IUserInfoDAO.java
package com.zhaoqingjie.spring.service.dao;
import com.openv.spring.domainmodel.UserInfoVO;
import org.springframework.dao.DataAccessException;
import java.io.Serializable;
public interface IUserInfoDAO extends Serializable{
public boolean setUserInfo(UserInfoVO userinfoVO)throws DataAccessException;
}
(4)UserInfoDAO.java
package com.zhaoqingjie.spring.service.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.doomdark.uuid.UUIDGenerator;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.zhaoqingjie.spring.domainmodel.UserInfoVO;
import com.zhaoqingjie.spring.service.dao.IUserInfoDAO;
import com.zhaoqingjie.spring.service.hibernate.UserInfo;
public class UserInfoDAO extends HibernateDaoSupport implements IUserInfoDAO{
private static final Log log = LogFactory.getLog(UserInfoDAO.class);
public boolean setUserInfo(UserInfoVO userinfoVO)throws DataAccessException{
if(userinfoVO == null){
return false;
}
UserInfo ui = new UserInfo();
ui.setId(getID());
ui.setUsername(userinfoVO.getUsername().trim());
ui.setEmail(userinfoVO.getEmail().trim());
this.getHibernateTemplate().save(ui);
return true;
}
private String getID(){
return UUIDGenerator.getInatance().generateTimeBaseUUID().toString();
}
}
--------------------------------------------------------------------------------------------------
(5)IExampleManager.java
package com.zhaoqingjie.spring.service;
import com.openv.spring.domainmodel.UserInfoVO;
import org.springframework.dao.DataAccessException;
import java.io.Serializable;
public interface IExampleManager extends Serializable {
public boolean setUserInfo(UserInfoVO userinfoVO)
throws DataAccessException;
}
(6)ExampleManagerImpl.java
package com.zhaoqingjie.spring.service.impl;
import com.openv.spring.domainmodel.UserInfoVO;
import com.openv.spring.service.IExample29Manager;
import com.openv.spring.service.dao.IUserInfoDAO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.DataAccessException;
public class ExampleManagerImpl implements IExampleManager {
private static final Log log = LogFactory
.getLog(ExampleManagerImpl.class);
private IUserInfoDAO userinfo;
public ExampleManagerImpl() {
log.info("ExampleManagerImpl()...................");
}
public void setUserinfo(IUserInfoDAO userinfoDAO)
throws DataAccessException {
this.userinfo = userinfoDAO;
}
public boolean setUserInfo(UserInfoVO userinfoVO)
throws DataAccessException {
return userinfo.setUserInfo(userinfoVO);
}
}
-----------------------------------------------------------------------------
(7)UserInfoVO.java
package com.zhaoqingjie.spring.domainmodel;
import java.io.Serializable;
public class UserInfoVO implements Serializable{
private String username;
private String email;
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = email;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
}
------------------------------------------------------------------------------------------
JSF表示层
(8)InfoBean.java
package com.zhaoqingjie.spring.jsf;
import javax.faces.context.FacesContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.jsf.FacesContextUtils;
import com.openv.spring.domainmodel.UserInfoVO;
import com.openv.spring.service.IExampleManager;
public class InfoBean {
private static final Log log = LogFactory.getLog(InfoBean.class);
private String username = null;
private String email = null;
private String response = null;
private long maximum = 0;
private boolean maximumSet = false;
private long minimum = 0;
private boolean minimumSet = false;
public InfoBean() {
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String submitPersonInfo() {
log.info(username);
log.info(email);
ApplicationContext ac = FacesContextUtils
.getWebApplicationContext(FacesContext.getCurrentInstance());
IExampleManager em = (IExampleManager) ac
.getBean("exampleService");
UserInfoVO uiVO = new UserInfoVO();
uiVO.setUsername(username);
uiVO.setEmail(email);
boolean flag = em.setUserInfo(uiVO);
if (flag) {
setResponse("注册成功");
return "success";
} else {
setResponse("注册失败");
return "failure";
}
}
public void setResponse(String response) {
this.response = response;
}
public String getResponse() {
return null;
}
public long getMaximum() {
return (this.maximum);
}
public void setMaximum(long maximum) {
this.maximum = maximum;
this.maximumSet = true;
}
public long getMinimum() {
return (this.minimum);
}
public void setMinimum(long minimum) {
this.minimum = minimum;
this.minimumSet = true;
}
}
(9)index.jsp
<html>
<head>
</head>
<body>
<jsp:forward page="/example/home.jsp" />
</body>
</html>
(10)home.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>
用户注册
</title>
</head>
<br>
<f:view>
<h:form id="helloForm" >
<table border="10" align="center"
bordercolor="#0099CC" cellpadding="6" bordercolorlight="#999999">
<tr>
<td colspan="2" bgcolor="#66CCFF">输入用户注册信息:</td>
</tr>
<tr>
<td>
<div align="right">用户名</div>
</td>
<td>
<h:inputText id="username" value="#{InfoBean.username}">
<f:validateLength minimum="#{InfoBean.minimum}"
maximum="#{InfoBean.maximum}" />
</h:inputText>
</td>
</tr>
<tr>
<td>
<div align="right">E_mail</div>
</td>
<td>
<h:inputText id="email" value="#{InfoBean.email}"/>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFF40">
<span>
<h:message id="message"
for="username"/></span>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<h:commandButton id="submit"
action="#{InfoBean.submitPersonInfo}" value="提交" />
</td>
</tr>
</table>
</h:form>
</f:view>
</html>
(11)success.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>
用户注册成功
</title>
</head>
<body bgcolor="white">
<f:view>
<h:form id="responseForm">
<h:graphicImage id="successImg"
url="images/form-success.jpg" alt="注册成功!"/>
<h2>
<h:outputText id="result"
value="#{InfoBean.response}"/></h2>
<h:commandButton id="back"
value="返回" action="su"/>
<p>
</h:form>
</f:view>
</html>
(12)failure.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>
用户注册失败
</title>
</head>
<body bgcolor="white">
<f:view>
<h:form id="responseForm">
<h:graphicImage id="successImg"
url="images/form-error.jpg" alt="注册失败!"/>
<h2>
<h:outputText id="result"
value="#{InfoBean.response}"/></h2>
<h:commandButton id="back"
value="返回" action="su"/>
<p>
</h:form>
</f:view>
</html>
(13)web.xml
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>example</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<display-name>FacesServlet</display-name>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>/example/*</url-pattern>
</servlet-mapping>
</web-app>
(14)applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/MySqlDS</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>
com/openv/spring/service/hibernate/UserInfo.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">
true
</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="exampleServiceTarget"
class="com.openv.spring.service.impl.Example29ManagerImpl">
<property name="userinfo">
<ref local="userinfoDAO"/>
</property>
</bean>
<bean id="exampleService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="exampleServiceTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">
PROPAGATION_REQUIRED,readOnly
</prop>
<prop key="set*">
PROPAGATION_REQUIRED
</prop>
</props>
</property>
</bean>
<bean id="userinfoDAO"
class="com.openv.spring.service.dao.impl.UserInfoDAO">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
</beans>
(15)faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<application>
<locale-config>
<default-locale>zh_CN</default-locale>
</locale-config>
</application>
<navigation-rule>
<description>
JSF Home Page
</description>
<from-view-id>/home.jsp</from-view-id>
<navigation-case>
<description>
success
</description>
<from-outcome>success</from-outcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<description>
failure
</description>
<from-outcome>failure</from-outcome>
<to-view-id>/failure.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<description>
</description>
<from-view-id>/success.jsp</from-view-id>
<navigation-case>
<description>
</description>
<from-outcome>su</from-outcome>
<to-view-id>/home.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<description>
</description>
<from-view-id>/failure.jsp</from-view-id>
<navigation-case>
<description>
</description>
<from-outcome>su</from-outcome>
<to-view-id>/home.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<description>
InfoBean
</description>
<managed-bean-name>InfoBean</managed-bean-name>
<managed-bean-class>
com.openv.spring.jsf.InfoBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>minimum</property-name>
<property-class>long</property-class>
<value>6</value>
</managed-property>
<managed-property>
<property-name>maximum</property-name>
<property-class>long</property-class>
<value>18</value>
</managed-property>
</managed-bean>
</faces-config>
package com.zhaoqingjie.service.hibernate;
import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;
public class UserInfo implements Serializable{
private String id;
private String username;
private String email;
public UserInfo(String id,String username,String email){
this.id = id;
this.username = username;
this.email = email;
}
public UserInfo(){
}
public UserInfo(String id){
this.id = id;
}
public String getId(){
return id;
}
public void setId(String id){
this.id = id;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = emial;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String toString(){
return new ToStringBuilder(this).append("id",getId()).toString();
}
}
(2)UserInfo.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="com.zhaoqingjie.spring.service.hibernate.UserInfo" table="userinfo">
<meta attribute="class-description" inherit="false">
@hibernate.class
table="userinfo"
</meta>
<id name="id" type="java.lang.String" column="id">
<meta attribute="field-description">
@hibernate.id
generator-class="assigned"
type="java.lang.String"
column="id"
</meta>
<generator class="assigned"/>
</id>
<property name="username" type="java.lang.String" column="username" length="36">
<meta attribute="field-description">
@hibernate.property
column="username"
length="36"
</meta>
</property>
<property name="email" type="java.lang.String" column="email" length="60">
<meta attribute="field-description">
@hibernate.property
column="email"
length="60"
</meta>
</property>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------------------------
(3)IUserInfoDAO.java
package com.zhaoqingjie.spring.service.dao;
import com.openv.spring.domainmodel.UserInfoVO;
import org.springframework.dao.DataAccessException;
import java.io.Serializable;
public interface IUserInfoDAO extends Serializable{
public boolean setUserInfo(UserInfoVO userinfoVO)throws DataAccessException;
}
(4)UserInfoDAO.java
package com.zhaoqingjie.spring.service.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.doomdark.uuid.UUIDGenerator;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.zhaoqingjie.spring.domainmodel.UserInfoVO;
import com.zhaoqingjie.spring.service.dao.IUserInfoDAO;
import com.zhaoqingjie.spring.service.hibernate.UserInfo;
public class UserInfoDAO extends HibernateDaoSupport implements IUserInfoDAO{
private static final Log log = LogFactory.getLog(UserInfoDAO.class);
public boolean setUserInfo(UserInfoVO userinfoVO)throws DataAccessException{
if(userinfoVO == null){
return false;
}
UserInfo ui = new UserInfo();
ui.setId(getID());
ui.setUsername(userinfoVO.getUsername().trim());
ui.setEmail(userinfoVO.getEmail().trim());
this.getHibernateTemplate().save(ui);
return true;
}
private String getID(){
return UUIDGenerator.getInatance().generateTimeBaseUUID().toString();
}
}
--------------------------------------------------------------------------------------------------
(5)IExampleManager.java
package com.zhaoqingjie.spring.service;
import com.openv.spring.domainmodel.UserInfoVO;
import org.springframework.dao.DataAccessException;
import java.io.Serializable;
public interface IExampleManager extends Serializable {
public boolean setUserInfo(UserInfoVO userinfoVO)
throws DataAccessException;
}
(6)ExampleManagerImpl.java
package com.zhaoqingjie.spring.service.impl;
import com.openv.spring.domainmodel.UserInfoVO;
import com.openv.spring.service.IExample29Manager;
import com.openv.spring.service.dao.IUserInfoDAO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.DataAccessException;
public class ExampleManagerImpl implements IExampleManager {
private static final Log log = LogFactory
.getLog(ExampleManagerImpl.class);
private IUserInfoDAO userinfo;
public ExampleManagerImpl() {
log.info("ExampleManagerImpl()...................");
}
public void setUserinfo(IUserInfoDAO userinfoDAO)
throws DataAccessException {
this.userinfo = userinfoDAO;
}
public boolean setUserInfo(UserInfoVO userinfoVO)
throws DataAccessException {
return userinfo.setUserInfo(userinfoVO);
}
}
-----------------------------------------------------------------------------
(7)UserInfoVO.java
package com.zhaoqingjie.spring.domainmodel;
import java.io.Serializable;
public class UserInfoVO implements Serializable{
private String username;
private String email;
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = email;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
}
------------------------------------------------------------------------------------------
JSF表示层
(8)InfoBean.java
package com.zhaoqingjie.spring.jsf;
import javax.faces.context.FacesContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.jsf.FacesContextUtils;
import com.openv.spring.domainmodel.UserInfoVO;
import com.openv.spring.service.IExampleManager;
public class InfoBean {
private static final Log log = LogFactory.getLog(InfoBean.class);
private String username = null;
private String email = null;
private String response = null;
private long maximum = 0;
private boolean maximumSet = false;
private long minimum = 0;
private boolean minimumSet = false;
public InfoBean() {
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String submitPersonInfo() {
log.info(username);
log.info(email);
ApplicationContext ac = FacesContextUtils
.getWebApplicationContext(FacesContext.getCurrentInstance());
IExampleManager em = (IExampleManager) ac
.getBean("exampleService");
UserInfoVO uiVO = new UserInfoVO();
uiVO.setUsername(username);
uiVO.setEmail(email);
boolean flag = em.setUserInfo(uiVO);
if (flag) {
setResponse("注册成功");
return "success";
} else {
setResponse("注册失败");
return "failure";
}
}
public void setResponse(String response) {
this.response = response;
}
public String getResponse() {
return null;
}
public long getMaximum() {
return (this.maximum);
}
public void setMaximum(long maximum) {
this.maximum = maximum;
this.maximumSet = true;
}
public long getMinimum() {
return (this.minimum);
}
public void setMinimum(long minimum) {
this.minimum = minimum;
this.minimumSet = true;
}
}
(9)index.jsp
<html>
<head>
</head>
<body>
<jsp:forward page="/example/home.jsp" />
</body>
</html>
(10)home.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>
用户注册
</title>
</head>
<br>
<f:view>
<h:form id="helloForm" >
<table border="10" align="center"
bordercolor="#0099CC" cellpadding="6" bordercolorlight="#999999">
<tr>
<td colspan="2" bgcolor="#66CCFF">输入用户注册信息:</td>
</tr>
<tr>
<td>
<div align="right">用户名</div>
</td>
<td>
<h:inputText id="username" value="#{InfoBean.username}">
<f:validateLength minimum="#{InfoBean.minimum}"
maximum="#{InfoBean.maximum}" />
</h:inputText>
</td>
</tr>
<tr>
<td>
<div align="right">E_mail</div>
</td>
<td>
<h:inputText id="email" value="#{InfoBean.email}"/>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFF40">
<span>
<h:message id="message"
for="username"/></span>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<h:commandButton id="submit"
action="#{InfoBean.submitPersonInfo}" value="提交" />
</td>
</tr>
</table>
</h:form>
</f:view>
</html>
(11)success.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>
用户注册成功
</title>
</head>
<body bgcolor="white">
<f:view>
<h:form id="responseForm">
<h:graphicImage id="successImg"
url="images/form-success.jpg" alt="注册成功!"/>
<h2>
<h:outputText id="result"
value="#{InfoBean.response}"/></h2>
<h:commandButton id="back"
value="返回" action="su"/>
<p>
</h:form>
</f:view>
</html>
(12)failure.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>
用户注册失败
</title>
</head>
<body bgcolor="white">
<f:view>
<h:form id="responseForm">
<h:graphicImage id="successImg"
url="images/form-error.jpg" alt="注册失败!"/>
<h2>
<h:outputText id="result"
value="#{InfoBean.response}"/></h2>
<h:commandButton id="back"
value="返回" action="su"/>
<p>
</h:form>
</f:view>
</html>
(13)web.xml
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>example</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<display-name>FacesServlet</display-name>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>/example/*</url-pattern>
</servlet-mapping>
</web-app>
(14)applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/MySqlDS</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>
com/openv/spring/service/hibernate/UserInfo.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">
true
</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="exampleServiceTarget"
class="com.openv.spring.service.impl.Example29ManagerImpl">
<property name="userinfo">
<ref local="userinfoDAO"/>
</property>
</bean>
<bean id="exampleService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="exampleServiceTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">
PROPAGATION_REQUIRED,readOnly
</prop>
<prop key="set*">
PROPAGATION_REQUIRED
</prop>
</props>
</property>
</bean>
<bean id="userinfoDAO"
class="com.openv.spring.service.dao.impl.UserInfoDAO">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
</beans>
(15)faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<application>
<locale-config>
<default-locale>zh_CN</default-locale>
</locale-config>
</application>
<navigation-rule>
<description>
JSF Home Page
</description>
<from-view-id>/home.jsp</from-view-id>
<navigation-case>
<description>
success
</description>
<from-outcome>success</from-outcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<description>
failure
</description>
<from-outcome>failure</from-outcome>
<to-view-id>/failure.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<description>
</description>
<from-view-id>/success.jsp</from-view-id>
<navigation-case>
<description>
</description>
<from-outcome>su</from-outcome>
<to-view-id>/home.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<description>
</description>
<from-view-id>/failure.jsp</from-view-id>
<navigation-case>
<description>
</description>
<from-outcome>su</from-outcome>
<to-view-id>/home.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<description>
InfoBean
</description>
<managed-bean-name>InfoBean</managed-bean-name>
<managed-bean-class>
com.openv.spring.jsf.InfoBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>minimum</property-name>
<property-class>long</property-class>
<value>6</value>
</managed-property>
<managed-property>
<property-name>maximum</property-name>
<property-class>long</property-class>
<value>18</value>
</managed-property>
</managed-bean>
</faces-config>