第三篇 整合struts+spring+hibernate
2007-08-10 23:21
381 查看
Struts+Spring+Hibernate的完美融合之整合struts+spring+hibernate
第三篇 整合struts+spring+hibernate
我们在上两篇的基础只要再对applicationContext.xml文件进行修改,就可以达到我们整合的目地。
第一步 完善applicationContext.xml内容
1、添加事务处理。内容如下:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="customerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="customerDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
2、CustomerAction Bean注入事务处理。内容如下:
<bean name="/customer" class="com.ssh.struts.action.CustomerAction" >
<property name="customerDAO"><ref bean="customerDAOProxy"/></property>
</bean>
3、最终applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/pullhand">
</property>
<property name="username" value="root"></property>
<property name="password" value="815241"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ssh/beans/po/Customer.hbm.xml</value></list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="customerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="customerDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="customerDAO" class="com.ssh.beans.dao.CustomerDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean name="/customer" class="com.ssh.struts.action.CustomerAction" >
<property name="customerDAO"><ref bean="customerDAOProxy"/></property>
</bean>
</beans>
第二步,修改CustomerAction
最后内容如下:
package com.ssh.struts.action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ssh.beans.dao.ICustomerDAO;
import com.ssh.beans.po.Customer;
public class CustomerAction extends Action {
ICustomerDAO customerDAO=null;
public void setCustomerDAO(ICustomerDAO customerDAO){
this.customerDAO=customerDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
List list=new ArrayList();
Customer customer=null;
if(customerDAO!=null){
list=customerDAO.getALLCustomer();
for(int i=0;i<list.size();i++){
customer=(Customer)list.get(i);
System.out.println("OK:"+customer.getCustName());
}
}else{
System.out.println("ERROR or NULL");
}
return mapping.findForward("success");
}
}
第三步 解决找不到Action问题
初学者会经常遇到下面这个问题:
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
当你努力去解决这个问题时,会发现去掉applicationContext.xml下面这个<property>标签,一切正常:
<property name="mappingResources">
<list>
<value>
com/ssh/beans/po/Customer.hbm.xml
</value>
</list>
</property>
那是什么原因呢?我想大家都会首先想到下面两个问题:
1、路径是否正确:即com/ssh/beans/po/Customer.hbm.xml的路径正确么?
2、文件是否正确:即Customer.hbm.xml的文件内容对么?
当你费了一身力气发现一切OK,到底什么原因???
问题在于构件路径(lib)内的包重叠(提示:前提是你要保证这个问题出现之前都正常),所以你要确定构建路径里的包不能重复!
建议:大家在导入包时,按照默认导入,不要把所有的包都导进工程,在操作中在把需要的jar包导进去(最好不要把整个liberaries导进去),这样即可以减小工程的大小,又能确保struts/spring/hibernate之间的包不会重叠或者被替换。
好了,我的任务完成了,大家删包去吧!祝你好运!
第三篇 整合struts+spring+hibernate
我们在上两篇的基础只要再对applicationContext.xml文件进行修改,就可以达到我们整合的目地。
第一步 完善applicationContext.xml内容
1、添加事务处理。内容如下:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="customerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="customerDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
2、CustomerAction Bean注入事务处理。内容如下:
<bean name="/customer" class="com.ssh.struts.action.CustomerAction" >
<property name="customerDAO"><ref bean="customerDAOProxy"/></property>
</bean>
3、最终applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/pullhand">
</property>
<property name="username" value="root"></property>
<property name="password" value="815241"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ssh/beans/po/Customer.hbm.xml</value></list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="customerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="customerDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="customerDAO" class="com.ssh.beans.dao.CustomerDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean name="/customer" class="com.ssh.struts.action.CustomerAction" >
<property name="customerDAO"><ref bean="customerDAOProxy"/></property>
</bean>
</beans>
第二步,修改CustomerAction
最后内容如下:
package com.ssh.struts.action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ssh.beans.dao.ICustomerDAO;
import com.ssh.beans.po.Customer;
public class CustomerAction extends Action {
ICustomerDAO customerDAO=null;
public void setCustomerDAO(ICustomerDAO customerDAO){
this.customerDAO=customerDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
List list=new ArrayList();
Customer customer=null;
if(customerDAO!=null){
list=customerDAO.getALLCustomer();
for(int i=0;i<list.size();i++){
customer=(Customer)list.get(i);
System.out.println("OK:"+customer.getCustName());
}
}else{
System.out.println("ERROR or NULL");
}
return mapping.findForward("success");
}
}
第三步 解决找不到Action问题
初学者会经常遇到下面这个问题:
HTTP Status 404 - Servlet action is not available
type Status reportmessage Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
Apache Tomcat/5.0.28
就是找不到我们的action。当你努力去解决这个问题时,会发现去掉applicationContext.xml下面这个<property>标签,一切正常:
<property name="mappingResources">
<list>
<value>
com/ssh/beans/po/Customer.hbm.xml
</value>
</list>
</property>
那是什么原因呢?我想大家都会首先想到下面两个问题:
1、路径是否正确:即com/ssh/beans/po/Customer.hbm.xml的路径正确么?
2、文件是否正确:即Customer.hbm.xml的文件内容对么?
当你费了一身力气发现一切OK,到底什么原因???
问题在于构件路径(lib)内的包重叠(提示:前提是你要保证这个问题出现之前都正常),所以你要确定构建路径里的包不能重复!
建议:大家在导入包时,按照默认导入,不要把所有的包都导进工程,在操作中在把需要的jar包导进去(最好不要把整个liberaries导进去),这样即可以减小工程的大小,又能确保struts/spring/hibernate之间的包不会重叠或者被替换。
好了,我的任务完成了,大家删包去吧!祝你好运!
相关文章推荐
- struts2.1.8 hibernate3.3.2 spring2.5 整合需要哪些jar包
- struts2.0、hibernate3、spring2.5框架整合流程实例
- SSH学习之——Spring、Struts和Hibernate整合开发
- 用maven整合struts+spring+hibernate之一 用maven创建基础的web应用
- Spring与Hibernate、Struts、Log4j整合
- Spring整合Hibernate与Struts
- Struts+Spring+Hibernate整合入门详解
- struts-2.3.1+spring-framework-3.2.2+hibernate-4.1.1整合历程<第二部分>(详解)
- struts2.1.8 + spring2.5.6 + hibernate3.3.2整合的登陆
- Spring、Struts、Hibernate整合
- Spring2.5+Struts1.3.8+JPA(Hibernate实现)整合之二
- Spring2.5+Struts1.3.8+Jpa(Hibernate实现)整合之七
- JDK6+Tomcat6+MyEclipse6,整合Struts,Spring,Hibernate出现异常
- Struts+Spring+Hibernate--SSH整合实例
- Struts1.2 Spring2.0 Hibernate3.1 MyEclipse整合可能的包冲突
- Struts+Spring+Hibernate--SSH整合实例
- ssh框架整合 hibernate5.2.8_spring4.3.7_struts2.5.1
- MyEclipse整合SSH(Struts+Spring+Hibernate)简单登录范例(一)
- Struts+Spring+Hibernate(JPA) + Ajax整合详解(基于最新版本)
- Struts+Spring+Hibernate整合