myeclipse下究竟怎样整合struts spring hibernate呀? 我也在进行融合,可在TOMCAT启动后就报错:java.lang.ClassCastException: org.apache.naming.resources.FileDirContext,同样希望各位兄弟姐妹出手相救。我现在活在20层地狱!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得MyEclipse只不过是个工具而已,有没有它都可以整合的啊!我给你个思路,因为Spring对Hibernate提供了非常好的支持,所以Hibernate直接整合到Spring的应用上下文中,下面是我写的applicationContext.xml,这个要放到/WEB-INF/下,这个是我写的项目的配置文件,只供参考哦!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="propertyPlace" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/jdbc.properties</value> </list> </property> </bean> <!--配置Hibernate数据源--> <!--基本的数据源,无连接池使用org.springframework.jdbc.datasource.DriverManagerDataSource--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass"> <value>${jdbc.driverClass}</value> </property> <property name="jdbcUrl"> <value>${jdbc.url}</value> </property> <property name="user"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <!--C3P0连接池配置--> <property name="minPoolSize"> <value>${jdbc.c3p0.minPoolSize}</value> </property> <property name="maxPoolSize"> <value>${jdbc.c3p0.maxPoolSize}</value> </property> <!--连接的过期时间--> <property name="maxIdleTime"> <value>${jdbc.c3p0.maxIdleTime}</value> </property> </bean> <!--本地会话工厂BEAN--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="lobHandler"> <ref bean="lobHandler" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop> <prop key="hibernate.hbm2ddl.auto">${jdbc.hibernate.hbm2ddl.auto}</prop> <prop key="hibernate.show_sql">${jdbc.hibernate.show_sql}</prop> <prop key="hibernate.jdbc.fetch_size">${jdbc.hibernate.fetch_size}</prop> <prop key="hibernate.jdbc.batch_size">${jdbc.hibernate.batch_size}</prop> <!--Hibernate2.1查询翻译器--> <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop> <!--Hibernate3.0查询翻译器--> <!--<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>--> </props> </property> <property name="mappingResources"> <list> <value>net/ilkj/user/form/PoUserForm.hbm.xml</value> </list> </property> </bean> <!-- 配置中文乱码问题解决方法--> <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> <property name="contentType"> <value>text/html;charset=gb2312</value> </property> </bean> <!--Oracle 9i大对象处理器--> <!--默认的大对象处理器 org.springframework.jdbc.support.lob.DefaultLobHandler--> <!--持久化类映射文件的中的type org.springframework.orm.hibernate.support.ClobStringType,length为字节,最大为2G--> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor"> <ref bean="nativeJdbcExtractor" /> </property> </bean> <!--本地JDBC抽出器,无连接池使用org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor--> <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"></bean> <!--Hibernate事务管理器--> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!--Hibernate事务管理模板--> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> <property name="jdbcExceptionTranslator"> <ref bean="jdbcExceptionTranslator" /> </property> </bean> <!-- Spring的异常数据转换 --> <bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <!--注册服务BEAN--> <!--注册事务代理工厂BEAN--> <bean id="abstractTransactionBean" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop> <prop key="delete*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop> <prop key="update*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop> <prop key="load*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop> <prop key="get*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop> </props> </property> </bean> <!--用户中心--> <bean id="userDao" class="net.ilkj.user.dao.UserDaoImpl"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <bean id="userServiceImpl" class="net.ilkj.user.service.UserServiceImpl"> <!--name属性为UserServiceImpl类中的private属性--> <property name="inUserDao"> <ref bean="userDao" /> </property> </bean> <bean id="inUserService" parent="abstractTransactionBean"> <property name="target"> <ref bean="userServiceImpl" /> </property> </bean></beans> ------------------------------------------------------------------------其中的${}引用的是外部资源文件jdbc.properties,主要是配置数据库的参数,#是被注释了的,我写了三种数据库的操作。#DataSource-Oracle9i#jdbc.driverClass=oracle.jdbc.driver.OracleDriver#jdbc.url=jdbc:oracle:thin:@localhost:1521:lhf#jdbc.username=system#jdbc.password=lihaifeng#jdbc.c3p0.minPoolSize=5#jdbc.c3p0.maxPoolSize=100#jdbc.c3p0.maxIdleTime=3000#HibernateProperties#jdbc.hibernate.dialect=org.hibernate.dialect.Oracle9Dialect#jdbc.hibernate.hbm2ddl.auto=create#jdbc.hibernate.show_sql=true#jdbc.hibernate.fetch_size=25#jdbc.hibernate.batch_size=50#---------------------------#DataSource-MS SQL SERVER#jdbc.driverClass=net.sourceforge.jtds.jdbc.Driver#jdbc.url=jdbc:jtds:sqlserver://localhost:1433/music#jdbc.username=sa#jdbc.password=#jdbc.c3p0.minPoolSize=5#jdbc.c3p0.maxPoolSize=100#jdbc.c3p0.maxIdleTime=3000#HibernateProperties#jdbc.hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect#jdbc.hibernate.hbm2ddl.auto=create#jdbc.hibernate.show_sql=true#jdbc.hibernate.fetch_size=25#jdbc.hibernate.batch_size=50#---------------------------#DataSource-MySQLjdbc.driverClass=org.gjt.mm.mysql.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=lihaifengjdbc.c3p0.minPoolSize=5jdbc.c3p0.maxPoolSize=100jdbc.c3p0.maxIdleTime=3000HibernatePropertiesjdbc.hibernate.dialect=org.hibernate.dialect.MySQLDialectjdbc.hibernate.hbm2ddl.auto=nonejdbc.hibernate.show_sql=truejdbc.hibernate.fetch_size=25jdbc.hibernate.batch_size=50--------------------------------------------------下面就是如何把Spring整合到Struts中,这里我们理由Struts插件的特性,下面是我的struts-config.xml文件,注意“<!--注册Spring容器插件-->”和“controller”元素的配置。<?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 /> <form-beans> <form-bean name="userForm" type="net.ilkj.user.form.UserForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action attribute="userForm" name="userForm" parameter="action" path="/userLoginAction" scope="request" validate="false"> <forward name="userList" path="/userList.jsp"></forward> </action> </action-mappings> <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller> <message-resources parameter="net_ilkj" /> <!--注册验证框架插件--> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> <!--注册Spring容器插件--> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/strutsActionContext.xml" /> </plug-in></struts-config>您可能注意到Action元素没有class指定完整类名,这是因为我采用的是把Action委托交给Spring容器管理的方式,Action会在下面的Spring配置文件中给出完整类名。--------------------------------------------------------------------------因为Action中要使用service,Spring要依赖注入,把service DI给Action,这里建议把Action委托给Spring管理,这一点做到也很容易,Struts提供了很强大的扩展功能,我们可以通过扩展RequestProcessor类实现委托功能,Spring提供了一个写好的类DelegatingRequestProcessor,这个文件已经在struts-config.xml中的<controller>元素中配置好了!为了代码规范,建议把交给Spring的Action配置写在另一个文件strutsActionContext.xml中,你已经看到了Spring容器插件中的pathNames有两个XML文件,applicationContext.xml是Spring的主配置文件,strutsActionContext.xml是Action的配置文件。strutsActionContext.xml<?xml version="1.0"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!--name属性要与struts-config.xml中的一致,因为service在Action中是全局变量,Struts1的Action只有一个实例给所有的请求使用,为了防止多线程访问的安全问题,需要指定singleton的属性为false,对每个请求都产生新的实例Action--> <bean name="/userLoginAction" class="net.ilkj.user.action.UserLoginAction" singleton="false"> <!--name属性Action中的private服务类,通过set方法DI--> <property name="inUserService"> <ref bean="inUserService" /> </property> </bean></beans>--------------------------------------------------------------------------在Action中只要增加如下的代码就可以使用service了哦!private InUserService inUserService;public InUserService getInUserService() { return inUserService;}public void setInUserService(InUserService inUserService) { this.inUserService = inUserService;}-------------------------------------------------------------------最后再给你点建议,我写的整合方式是基于Struts1+Hibernate3+Spring1的做法,现在Struts2已经发布正式版了,这个版本集成了WebWork2和Struts1原有的特性,相信以后会成为主流WEB框架,希望学习一下Struts2哦!当然Struts2会有新的整合方式,但是不管版本如何,思路有就好啊!我刚学习Struts2有几天,觉得它实在是太棒了!希望有空大家交流哦!嘿嘿! MyEclipse整合这3个东西很方便啊,不过顺序很重要,最先整合Spring,然后整合Struts,然后再整合Hibernate,按照提示一步步的加就可以了 虽然MyEclipse可以按提示整合,但我还是建议大家不要过分依赖工具,要自己清楚原理,这才是最重要的啊!嘿嘿! 广州恒浪的整合系统都很好,又出了V5.1新版本~技术论坛www.jsp163.com JAVA SSH框架真的那么方便么,有没有更好用的啊? 一道面试题,请大家看看怎么做 spring-cxf.xml 配置错误 请高手支招! 网站更新发布,数据库里的东西怎么提交更新? eclipse 自动生成实体类 写代码(非工具) 有谁能谈谈form表单提交和在url后加入参数传递到后台的具体区别? struts 页面框架 研究 Struts:点提交的时候Action出的错误! 请高手指点! JSP+XML+XSLT 紧急求助(在线等候) 一个操作时间的问题,在家来帮忙 使用Hibernate Tools时遇到的问题
我给你个思路,因为Spring对Hibernate提供了非常好的支持,所以Hibernate直接整合到Spring的应用上下文中,下面是我写的applicationContext.xml,这个要放到/WEB-INF/下,这个是我写的项目的配置文件,只供参考哦!
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="propertyPlace" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/jdbc.properties</value>
</list>
</property>
</bean>
<!--配置Hibernate数据源-->
<!--基本的数据源,无连接池使用org.springframework.jdbc.datasource.DriverManagerDataSource-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass">
<value>${jdbc.driverClass}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<!--C3P0连接池配置-->
<property name="minPoolSize">
<value>${jdbc.c3p0.minPoolSize}</value>
</property>
<property name="maxPoolSize">
<value>${jdbc.c3p0.maxPoolSize}</value>
</property>
<!--连接的过期时间-->
<property name="maxIdleTime">
<value>${jdbc.c3p0.maxIdleTime}</value>
</property>
</bean>
<!--本地会话工厂BEAN-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="lobHandler">
<ref bean="lobHandler" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${jdbc.hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.show_sql">${jdbc.hibernate.show_sql}</prop>
<prop key="hibernate.jdbc.fetch_size">${jdbc.hibernate.fetch_size}</prop>
<prop key="hibernate.jdbc.batch_size">${jdbc.hibernate.batch_size}</prop>
<!--Hibernate2.1查询翻译器-->
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
<!--Hibernate3.0查询翻译器-->
<!--<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>-->
</props>
</property>
<property name="mappingResources">
<list>
<value>net/ilkj/user/form/PoUserForm.hbm.xml</value>
</list>
</property>
</bean>
<!-- 配置中文乱码问题解决方法-->
<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>
<property name="contentType">
<value>text/html;charset=gb2312</value>
</property>
</bean> <!--Oracle 9i大对象处理器-->
<!--默认的大对象处理器 org.springframework.jdbc.support.lob.DefaultLobHandler-->
<!--持久化类映射文件的中的type org.springframework.orm.hibernate.support.ClobStringType,length为字节,最大为2G-->
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
<property name="nativeJdbcExtractor">
<ref bean="nativeJdbcExtractor" />
</property>
</bean>
<!--本地JDBC抽出器,无连接池使用org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor-->
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"></bean>
<!--Hibernate事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!--Hibernate事务管理模板-->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="jdbcExceptionTranslator">
<ref bean="jdbcExceptionTranslator" />
</property>
</bean>
<!-- Spring的异常数据转换 -->
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean> <!--注册服务BEAN-->
<!--注册事务代理工厂BEAN-->
<bean id="abstractTransactionBean" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop>
<prop key="delete*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop>
<prop key="update*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop>
<prop key="load*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop>
</props>
</property>
</bean>
<!--用户中心-->
<bean id="userDao" class="net.ilkj.user.dao.UserDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userServiceImpl" class="net.ilkj.user.service.UserServiceImpl">
<!--name属性为UserServiceImpl类中的private属性-->
<property name="inUserDao">
<ref bean="userDao" />
</property>
</bean>
<bean id="inUserService" parent="abstractTransactionBean">
<property name="target">
<ref bean="userServiceImpl" />
</property>
</bean>
</beans>
其中的${}引用的是外部资源文件jdbc.properties,主要是配置数据库的参数,#是被注释了的,我写了三种数据库的操作。#DataSource-Oracle9i
#jdbc.driverClass=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@localhost:1521:lhf
#jdbc.username=system
#jdbc.password=lihaifeng
#jdbc.c3p0.minPoolSize=5
#jdbc.c3p0.maxPoolSize=100
#jdbc.c3p0.maxIdleTime=3000
#HibernateProperties
#jdbc.hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
#jdbc.hibernate.hbm2ddl.auto=create
#jdbc.hibernate.show_sql=true
#jdbc.hibernate.fetch_size=25
#jdbc.hibernate.batch_size=50#---------------------------#DataSource-MS SQL SERVER
#jdbc.driverClass=net.sourceforge.jtds.jdbc.Driver
#jdbc.url=jdbc:jtds:sqlserver://localhost:1433/music
#jdbc.username=sa
#jdbc.password=
#jdbc.c3p0.minPoolSize=5
#jdbc.c3p0.maxPoolSize=100
#jdbc.c3p0.maxIdleTime=3000
#HibernateProperties
#jdbc.hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect
#jdbc.hibernate.hbm2ddl.auto=create
#jdbc.hibernate.show_sql=true
#jdbc.hibernate.fetch_size=25
#jdbc.hibernate.batch_size=50#---------------------------#DataSource-MySQL
jdbc.driverClass=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=lihaifeng
jdbc.c3p0.minPoolSize=5
jdbc.c3p0.maxPoolSize=100
jdbc.c3p0.maxIdleTime=3000
HibernateProperties
jdbc.hibernate.dialect=org.hibernate.dialect.MySQLDialect
jdbc.hibernate.hbm2ddl.auto=none
jdbc.hibernate.show_sql=true
jdbc.hibernate.fetch_size=25
jdbc.hibernate.batch_size=50--------------------------------------------------
下面就是如何把Spring整合到Struts中,这里我们理由Struts插件的特性,下面是我的struts-config.xml文件,注意“<!--注册Spring容器插件-->”和“controller”元素的配置。<?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 />
<form-beans>
<form-bean name="userForm" type="net.ilkj.user.form.UserForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="userForm" name="userForm" parameter="action" path="/userLoginAction" scope="request" validate="false">
<forward name="userList" path="/userList.jsp"></forward>
</action> </action-mappings>
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
<message-resources parameter="net_ilkj" />
<!--注册验证框架插件-->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
<!--注册Spring容器插件-->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/strutsActionContext.xml" />
</plug-in>
</struts-config>您可能注意到Action元素没有class指定完整类名,这是因为我采用的是把Action委托交给Spring容器管理的方式,Action会在下面的Spring配置文件中给出完整类名。
--------------------------------------------------------------------------
因为Action中要使用service,Spring要依赖注入,把service DI给Action,这里建议把Action委托给Spring管理,这一点做到也很容易,Struts提供了很强大的扩展功能,我们可以通过扩展RequestProcessor类实现委托功能,Spring提供了一个写好的类DelegatingRequestProcessor,这个文件已经在struts-config.xml中的<controller>元素中配置好了!为了代码规范,建议把交给Spring的Action配置写在另一个文件strutsActionContext.xml中,你已经看到了Spring容器插件中的pathNames有两个XML文件,applicationContext.xml是Spring的主配置文件,strutsActionContext.xml是Action的配置文件。strutsActionContext.xml<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--name属性要与struts-config.xml中的一致,因为service在Action中是全局变量,Struts1的Action只有一个实例给所有的请求使用,为了防止多线程访问的安全问题,需要指定singleton的属性为false,对每个请求都产生新的实例Action-->
<bean name="/userLoginAction" class="net.ilkj.user.action.UserLoginAction" singleton="false">
<!--name属性Action中的private服务类,通过set方法DI-->
<property name="inUserService">
<ref bean="inUserService" />
</property>
</bean>
</beans>--------------------------------------------------------------------------
在Action中只要增加如下的代码就可以使用service了哦!private InUserService inUserService;public InUserService getInUserService() {
return inUserService;
}public void setInUserService(InUserService inUserService) {
this.inUserService = inUserService;
}-------------------------------------------------------------------最后再给你点建议,我写的整合方式是基于Struts1+Hibernate3+Spring1的做法,现在Struts2已经发布正式版了,这个版本集成了WebWork2和Struts1原有的特性,相信以后会成为主流WEB框架,希望学习一下Struts2哦!当然Struts2会有新的整合方式,但是不管版本如何,思路有就好啊!我刚学习Struts2有几天,觉得它实在是太棒了!希望有空大家交流哦!嘿嘿!