【IT168 技术文档】本文不关心必须的JAR包,这个东东在网上能够找到很多,本文只关心如何配置,才能够让STRUTS SPRING HIBERNATE和MYSQL相关连。
开发环境:wsad5.1
Spring-Version: 1.1.4
Struts Framework 1.1
Hibernate-Version: 2.1.7
Blog.Ad0.Cn
-------- -------------------------
<web.xml>
-------- -------------------------
程序代码
<?xml
version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-
app_2_3.dtd">
<web-app
id="WebApp">
<display-
name>MVC_BPEL_MODELWeb</display-name>
<context-
param>
<param-
name>contextConfigLocation</param-name>
<param-
value>/WEB-
INF/Hibernate_Context.xml</param-value>
</context-
param>
<servlet>
<servlet-
name>SpringContextServlet</servlet-name>
<servlet-
class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-
startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-
name>action</servlet-name>
<servlet-
class>org.apache.struts.action.ActionServlet</servlet-class>
<init-
param>
<param-
name>config</param-name>
<param-
value>WEB-INF/struts
-config.xml</param-
value>
</init-
param>
<init-
param>
<param-
name>debug</param-name>
<param-
value>2</param-value>
</init-
param>
<init-
param>
<param-
name>detail</param-name>
<param-
value>2</param-value>
</init-
param>
<init-
param>
<param-
name>validate</param-name>
<param-
value>true</param
-value>
</init-
param>
<load-on-
startup>2</load-on-startup>
</servlet>
<servlet-
mapping>
<servlet-
name>action</servlet-name>
<url-
pattern>*.do</url-
pattern>
</servlet-
mapping>
<welcome-file-
list>
<welcome-
file>index.html</welcome-file>
<welcome-
file>index.htm</welcome-file>
<welcome-
file>index.jsp</welcome-file>
<welcome-
file>default.html</welcome-file>
<welcome-
file>default.htm</welcome-file>
<welcome-
file>default.jsp</welcome-file>
</welcome-file-
list>
<taglib>
<taglib-
uri>/WEB-INF/struts-
bean.tld</taglib-
uri>
<taglib-
location>/WEB-
INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-
uri>/WEB-INF/struts-
html.tld</taglib-
uri>
<taglib-
location>/WEB-
INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-
uri>/WEB-INF/struts-
logic.tld</taglib-
uri>
<taglib-
location>/WEB-
INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-
uri>/WEB-INF/struts-
nested.tld</taglib-
uri>
<taglib-
location>/WEB-
INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-
uri>/WEB-INF/struts-
template.tld</taglib
-uri>
<taglib-
location>/WEB-
INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-
uri>/WEB-INF/struts-
tiles.tld</taglib-
uri>
<taglib-
location>/WEB-
INF/struts-tiles.tld</taglib-location>
</taglib>
</web-
app>

-----------------------------------
<action-servlet.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 name="/User" class="com.yaya.action.UserAction" singleton="false">
<property
name="userManager">
<ref bean="userManager" />
</property>
</bean>
</beans>

<hibernate_context.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="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property
name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value><
/property>
<property name="prefix"><value>/WEB-INF/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
</bean> -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy
-method="close">
<property
name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property
name="url">
<value>jdbc:mysql://localhost/pdm</value>
</property>
<property
name="username">
<value>root</value>
</property>
<property
name="password">
<value></value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property
name="dataSource">
<ref local="dataSource" />
</property>
<property
name="mappingResources">
<list>
<value>hbm_tb/Tsysuser.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>
<!-- Spring的数据访
问异常转换器(Data Access Exception Translator)定义 --
>
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property
name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="userDao" class="com.yaya.service.dao.hibernate.UserHibernateDao">
<property
name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userManagerTarget" class="com.yaya.service.spring.UserManagerImpl">
<property
name="userDao">
<ref local="userDao" />
</property>
</bean>
<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property
name="transactionManager">
<ref bean="transactionManager" />
</property>
<property
name="target">
<ref local="userManagerTarget" />
</property>
<property
name="proxyTargetClass">
<value>true</value>
</property>
<property
name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>

-------------------------------------------------------------------
<struts-config.xml> Ad0.Cn
------------------------------------------------ -------------------
程序代码
<?xml
version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration
1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-
config>
<!-- 数据源
-->
<data-
sources></data-
sources>
<!-- 表单 Bean
-->
<form-
beans>
<form-bean
name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property
name="user" type="com.yaya.hb.Tsysuser" />
</form-
bean>
</form-
beans>
<!-- 全局异常
-->
<global-
exceptions></global-exceptions>
<!-- 全局转发
-->
<global-
forwards></global
-forwards>
<!-- 操作映射
-->
<action-
mappings>
<action
path="/User" type="org.springframework.web.struts.DelegatingActionProxy"
name="UserActionForm"
scope="request"
parameter="method"
validate="false">
<forward
name="list" path="/userlist.jsp" />
<forward
name="edit" path="/userform.jsp" />
</action>
</action-
mappings>
<!-- 消息资源
-->
<message-resources
parameter="mvc_bpel_modelweb.resources.ApplicationResources"
/>
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property
property="contextConfigLocation" value="/WEB-INF/action-servlet.xml"
/>
</plug-
in>
<plug-in
className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-
in>
</struts-
config>

------------------------------------------------------------------
UserHibernateDao.java Ad0.Cn
------------------------------------------------ ------------------
程序代码
* 创建日期 2005-4-7
*
* 更改所生成文 件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package
com.yaya.service.dao.hibernate;
import java.util.List;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import net.sf.hibernate.HibernateException;
import com.yaya.hb.Tsysuser;
import com.yaya.service.dao.IUserDao;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**//**
*
@author Administrator
*
*
更改所生成类型注释的模板为
*
窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/

public class UserHibernateDao extends
HibernateDaoSupport implements IUserDao ...{
private Log log
= LogFactory.getLog
(UserHibernateDao.class);

/**//* (非 Javadoc)
*
@see com.jandar.dao.IUserDAO#getUsers()
*/

public List
getUsers() ...{
return
getHibernateTemplate().find("from Tsysuser");
}

/**//* (非 Javadoc)
*
@see com.jandar.dao.IUserDAO#getUser(java.lang.Long)
*/

public Tsysuser
getUser(String username) ...{
// TODO 自动生成方法存
根
if (this.getHibernateTemplate() == null)

...{
System.out.println
("error at
there");
return null;
}
Tsysuser user =
(Tsysuser) getHibernateTemplate().get(Tsysuser.class,username);
//Tsysuser user =
(Tsysuser) getHibernateTemplate().find("from Tsysuser users where users.username =
'admin'",username);

if (user ==
null) ...{
throw new ObjectRetrievalFailureException
(Tsysuser.class, username);
}
return user;
//String msg = getHibernateTemplate().get(Tsysuser.class,username).toString();
//Tsysuser user = (Tsysuser) getHibernateTemplate().find("from Tsysuser where username =
?",username);
//System.out.println(user.getUserdesc());
//System.out.println(user.getHeadship());
//return user;
}

/**//* (非 Javadoc)
*
@see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)
*/

public
void saveUser(Tsysuser
user) ...{
log.debug("xxxxxxx");
System.out.println
("yyyy");
getHibernateTemplate().saveOrUpdate(user);

if
(log.isDebugEnabled()) ...{
log.debug("username
set to " +
user.getUsername());
}
}

/**//* (非 Javadoc)
*
@see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)
*/

public
void removeUser(String
username) ...{
Object user =
getHibernateTemplate().load(Tsysuser.class, username);
getHibernateTemplate().delete(user);

if
(log.isDebugEnabled()) ...{
log.debug("del user
" + username);
}
}
}