你的问题是可以实现的。在你的Struts中,只要将<action ..../>节点中,把type属性的值改为:org.springframework.web.struts.DelegatingActionProxy
然后在你的spring 配置文件中,将bean  的id 属性值改为和 action 中的path值一样,
这样,就可以将struts中的action 交由Spring 的容器来管理了!要将hibernate结合其中,更简单,在spring中配置一个bean节点sessionFactory,就可以了!
以上具体的实现方式,请参考Spring开发指南,里边很详细的 。

解决方案 »

  1.   

    你用spring做什么,如果这个都不知道,你又怎么整合呢?
      

  2.   

    我是没有感觉到Spring的方便(不要PS,没用过)。我感觉Struts+Hibernate再自己分事务层,也挺方便的,可是经理就要用Spring,你也没办法。这就是为什么!
      

  3.   

    <beans>
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName">
    <value>org.gjt.mm.mysql.Driver</value>
    </property>
    <property name="url">
    <value>jdbc:mysql://192.168.1.4:3306/PAYEZ?useUnicode=true;characterEncoding=gb2312;</value>
    </property>
    <property name="username">
    <value>pfweb</value>
    </property>
    <property name="password">
    <value>pfroot!</value>
    </property>
    </bean>
    <bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref local="myDataSource" />
    </property>
    <property name="mappingResources">
    <list>
    <value>com/redbox/PayEz/newqanda/qanda/hibbernate/qanda/Qanda.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
    <prop key="hibernate.query.substitutions">true</prop>
    <prop key="hibernate.show_sql">true</prop>
    </props>
    </property>
    </bean> <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref local="mySessionFactory" />
    </property>
    </bean>
    <bean id="QanDaImpl" class="com.redbox.PayEz.newqanda.qanda.struts.impl.QanDaImpl">
    <property name="sessionFactory">
    <ref local="mySessionFactory" />
    </property>
    </bean>
    <bean id="staffDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref local="myTransactionManager" />
    </property>
    <property name="target">
    <ref local="QanDaImpl" />
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
    </props>
    </property>
    </bean> <bean name="/loginAction" class="com.redbox.PayEz.newqanda.qanda.struts.action.LoginAction" singleton="false"> </bean></beans>
    java文件:
    public class QanDaImpl extends HibernateDaoSupport{
    public List findStaffList() {
    List staffList = null;
    String thql = "from Qanda as q order by q.level asc";
    System.err.println("sssssssssssssss");
    staffList = this.getHibernateTemplate().find(thql);
    System.err.println("dddddddddddddddd");//打印不出来,报 this.getHibernateTemplate为null,为什么?
    return staffList;
    }
    }
    报错:
    this.getHibernateTemplate()==null,为什么它为空?!
      

  4.   

    补充一下:
    web.xml,我没动这里,还是以前Struts的配置,spring要在这里配置吗?
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
       <servlet>
          <servlet-name>LoginAction</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>3</param-value>
          </init-param>
          <init-param>
             <param-name>detail</param-name>
             <param-value>3</param-value>
          </init-param>
          <load-on-startup>0</load-on-startup>
       </servlet>
       <servlet-mapping>
          <servlet-name>LoginAction</servlet-name>
          <url-pattern>*.do</url-pattern>
       </servlet-mapping>
    </web-app>