花了2个小时终于配置好struts2.0.6+spring2.0.3+hibernane3,为自己庆祝一下,分享一下经验

一、struts2。

跟webwork配置基本一致,主要是struts2.properties和struts.xml 2个配置文件,我的struts2.properties如下配置:

struts2.properties
  1. struts.tag.altSyntax = true  
  2. struts.devMode = true  
  3.   
  4. ### These can be used to set the default HTTP and HTTPS  ports   
  5. struts.url.http.port = 80  
  6. #webwork.url.https.port = 443  
  7.   
  8. ### This can be used to set your locale and encoding scheme   
  9. struts.custom.i18n.resources=ApplicationResources  
  10. struts.locale=zh_CN  
  11. struts.i18n.encoding=utf-8   
  12.   
  13. # uses javax.servlet.context.tempdir by default   
  14. struts.multipart.parser=com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest   
  15. #struts.multipart.saveDir=tmp  
  16. struts.multipart.saveDir=/tmp   
  17. struts.multipart.maxSize=512000000  
  18. struts.configuration.xml.reload=true  
  19.   
  20. struts.objectFactory = spring  

struts.xml 就是配置action了,由于设定了struts.objectFactory = spring,因此struts2会自动将action转为spring的bean,struts.xml可以直接配置我们的action路径,在action中我们只需要设置某个service文件的set方法即可调用事务管理bean

struts.xml
  1. xml version="1.0" encoding="UTF-8" ?>  
  2.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  3.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  4.   
  5. <struts>  
  6.   
  7.     <include file="struts-default.xml" />  
  8.   
  9.     <package name="default" extends="struts-default">  
  10.         <default-interceptor-ref name="completeStack" />  
  11.   
  12.         <global-results>  
  13.             <result name="login" type="redirect">login!default.actionresult>  
  14.             <result name="unauthorized">unauthorized.jspresult>  
  15.         global-results>  
  16.            
  17.         <action name="login" class="com.baseframe.action.LoginAction">  
  18.             <result name="input">login.jspresult>  
  19.             <result name="success">main.jspresult>  
  20.             <result name="error">login.jspresult>  
  21.         action>  
  22.         <action name="logout" class="com.baseframe.action.LogoutAction">  
  23.             <result name="success">login.jspresult>  
  24.         action>  
  25.     package>  
  26.   
  27. struts>  

二、spring2。

添加dist下的3个spring包,因为不知道哪些包是必须的,把lib里的包都加了,去除jakarta-commons/commons-attributes-compiler.jar、j2ee/servlet-api.jar、j2ee/jsp-api.jar,然后建立配置文件,我分了三个文件:

主配置文件
  1. xml version="1.0" encoding="UTF-8"?>  
  2.     "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>    
  4.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  5.         ...   
  6.     bean>  
  7.        
  8.     <bean id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">  
  9.         ...   
  10.     bean>  
  11.        
  12.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  13.         <property name="dataSource" ref="dataSource"/>  
  14.         <property name="hibernateProperties">  
  15.             <ref bean="hibernateProperties"/>  
  16.         property>  
  17.         <property name="mappingResources">  
  18.             <list>  
  19.                 <value>com/baseframe/model/AppUser.hbm.xmlvalue>  
  20.                   
  21.             list>  
  22.         property>  
  23.     bean>  
  24.        
  25.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  26.         <property name="sessionFactory" ref="sessionFactory"/>  
  27.     bean>  
  28.        
  29.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
  30.         <property name="transactionManager" ref="transactionManager"/>  
  31.         <property name="transactionAttributes">  
  32.             <props>  
  33.                 <prop key="*">PROPAGATION_REQUIREDprop>  
  34.                 <prop key="amount*">PROPAGATION_REQUIRED,readOnlyprop>  
  35.                 <prop key="find*">PROPAGATION_REQUIRED,readOnlyprop>  
  36.             props>  
  37.         property>  
  38.     bean>    
  39.        
  40.     <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  41.         <property name="beanNames">  
  42.             <value>*Servicevalue>  
  43.         property>  
  44.         <property name="interceptorNames">  
  45.             <list>  
  46.                 <value>transactionInterceptorvalue>  
  47.                   
  48.             list>  
  49.         property>  
  50.     bean>  
  51.        
  52.     <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">  
  53.         <property name="transactionInterceptor" ref="transactionInterceptor"/>  
  54.     bean>  
  55. beans>  
 
dao配置文件
  1. xml version="1.0" encoding="UTF-8"?>  
  2.   
  3.     "http://www.springframework.org/dtd/spring-beans.dtd">  
  4.   
  5. <beans default-autowire="byName">  
  6.        
  7.     <bean id="userDao" class="com.baseframe.dao.impl.UserDaoImpl"/>  
  8.        
  9. beans>  

 

service/manager配置 
  1. xml version="1.0" encoding="UTF-8"?>  
  2.   
  3.     "http://www.springframework.org/dtd/spring-beans.dtd">  
  4.   
  5. <beans default-autowire="byName">  
  6.        
  7.     <bean id="userService" class="com.baseframe.service.impl.UserServiceImpl"/>  
  8.        
  9. beans>  

 

三、web.xml

有一点很重要,struts的filter需要放在最底,不然action接收的中文可能会乱码,不知道是不是这个原因,反正配置了就没有乱码了,加上org.springframework.orm.hibernate3.support.OpenSessionInViewFilter就不用考虑hibernate的lazy问题了:

xml 代码
  1. <filter>  
  2.       <filter-name>encodingFilterfilter-name>  
  3.       <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>  
  4.       <init-param>  
  5.           <param-name>encodingparam-name>  
  6.           <param-value>UTF-8param-value>  
  7.       init-param>  
  8.   filter>  
  9.   <filter-mapping>  
  10.       <filter-name>encodingFilterfilter-name>  
  11.       <url-pattern>/*url-pattern>  
  12.   filter-mapping>  
  13.  <filter>
      <filter-name>hibernateFilter</filter-name>
      <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
      </filter>
      <filter-mapping>
      <filter-name>hibernateFilter</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>

      
  14.   <filter>  
  15.        extremetable的filter   
  16.   filter>  
  17.   <filter-mapping>  
  18.        extremetable的filter mapping   
  19.   filter-mapping>  
  20.   
  21.   <filter>  
  22.       <filter-name>struts2filter-name>  
  23.       <filter-class>org.apache.struts2.dispatcher.FilterDispatcherfilter-class>  
  24.   filter>  
  25.   <filter-mapping>  
  26.       <filter-name>struts2filter-name>  
  27.       <url-pattern>/*url-pattern>  
  28.   filter-mapping>  

 

如有错误,欢迎指正

评论
tony.lee 2007-06-29
为什么用这个?
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/struts.xml"
/>
</plug-in>
那么strtus2提供的struts2-spring-plugin-2.0.8.jar是干嘛用的呢?
kevin_gzhz 2007-06-29
内容是很好的,我刚开始学这个东西,你能不能把你这个应用的目录结构说一下拉!!
cqyaoran 2007-06-21
你的spring事务配置用的是1.0的配置呀,不是2.0的
xugq035 2007-06-20
你是否漏了某些包没加进去?
越前龙马.sh 2007-06-18
感谢楼主的知识分享!

我也跟着先做了一个struts2的helloworld列子,启动成功,struts2的架子搭好了,准备把spring2和hibernate3整合到其中,以下是我的一些配置文件:
web.xml :
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
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">

<display-name>Struts2test</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>Struts2test.root</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/*.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>
/WEB-INF/classes/conf/log4j.properties
</param-value>
</context-param>

<!-- 著名 Character Encoding filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!--Hibernate Open Session in View Filter-->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- 让hibernate open session in view的荣光也照耀xfire -->
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!--Spring ApplicationContext 载入 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<!-- session超时定义,单位为分钟 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

</web-app>


struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<include file="struts-default.xml" />
<include file="struts/example.xml"/>

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/struts.xml"
/>
</plug-in>
</struts>

struts.properties:
struts.devMode = true
struts.enable.DynamicMethodInvocation = false
#struts.objectFactory = spring 这里有个问题,在struts.xml中已经定义了plugin,在这里还需要再定义这个吗?

以上是我的整合spring的配置文件,但是启动tomcat的时候会报如下错误:
log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
2007-6-18 7:26:43 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2007-6-18 7:26:43 org.apache.catalina.core.StandardContext start
严重: Context [/struts2test] startup failed due to previous errors
2007-06-18 07:26:43,109 INFO [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/struts2test]] - Shutting down Log4J
2007-6-18 7:26:43 org.apache.catalina.core.StandardContext processTlds
严重: Error reading tld listeners java.lang.NullPointerException
java.lang.NullPointerException
at org.apache.log4j.Category.isEnabledFor(Category.java:757)
at org.apache.commons.logging.impl.Log4JLogger.isTraceEnabled(Log4JLogger.java:327)
at org.apache.catalina.startup.TldConfig.tldScanResourcePaths(TldConfig.java:581)
at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:282)
at org.apache.catalina.core.StandardContext.processTlds(StandardContext.java:4278)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4115)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
2007-6-18 7:26:43 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2007-6-18 7:26:43 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2007-6-18 7:26:43 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31 config=null
2007-6-18 7:26:43 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2007-6-18 7:26:43 org.apache.catalina.startup.Catalina start
信息: Server startup in 1422 ms

以下是我加入的jar包:
antlr-2.7.6.jar
asm-2.2.1.jar
cglib-nodep-2.1_3.jar
commons-beanutils-1.7.1-20061106.jar
commons-collections-3.2.jar
commons-dbcp-1.2.1.jar
commons-digester-1.7.jar
commons-lang-2.3.jar
commons-logging-1.1.jar
dom4j-1.6.1.jar
freemarker-2.3.8.jar
hibernate-3.2.0.ga.jar
jstl-1.1.2.jar
jta-1.0.1B.jar
jtds-1.2.jar
log4j-1.2.8.jar
ognl-2.6.11.jar
spring-2.0.jar
struts2-core-2.0.6.jar
struts2-spring-plugin-2.0.6.jar
xwork-2.0.1.jar
tomcat包就不列出来了

起初我看到是log4j的错误时,我就把web.xml中的log4j去掉,但是启动还报这个错误,我有点困惑,为何一加入spring之后就会报这个错误,为何去掉了log4j后还会报log4j的错误。
stamen 2007-06-01
请把程序文件上传上来好吗?供学习一下。
kongxx 2007-04-25
关注一下,最近正要用
xly_971223 2007-04-23
楼主有的例子中 有没有遇到下面这个帖子中的问题啊
http://www.javaeye.com/topic/73332
xly_971223 2007-04-21
引用
spring的bean应该在action中调用,在LoginAction中应该包含类似如下的代码:

private EmployeeService employeeService;
public void setEmployeeService(EmployeeService employeeService) {
this.employeeService = employeeService;
}


这个EmployeeService才是spring的bean
只要你再struts.properties文件中设定了struts.objectFactory = spring,加入struts2-spring-plugin-2.0.6.jar就可以了


是不是加了struts2-spring-plugin-2.0.6.jar之后action会自动被spring托管了?
还是其他方式,楼主能不能给解释一下?
Kaddish 2007-04-19
action交给spring管理后,struts2的validation功能使用出现异常,点击提交表单按钮后还是返回到原先页面!

struts.xml文件中增加:
 
<constant name="objectFactory" value="spring"></constant>
<action name="Login" class="login">
    <result name="input">/example/Login.jsp</result>
    <result type="redirect-action">Menu</result>
</action>


applicationContext.xml文件如下:


<beans>  
    <bean id="helloWorld" class="example.HelloWorld"></bean> 
    <bean id="logon" class="example.Login"></bean>
    <bean id="index" class="example.ExampleSupport"></bean>
</beans>


Login.jsp如下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Sign On</title>
</head>

<body>
<s:form action="Login">
    <s:textfield key="username"/>
    <s:password key="password" />
    <s:submit/>
</s:form>
</body>
</html>



Login-validation.xml如下:
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message key="requiredstring"/>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message key="requiredstring"/>
        </field-validator>
    </field>
</validators>


Login.java代码就不写了,因为程序根本就没进这个Action。每次提交时进行验证,然后返回到原拉的Login界面!如果不把action交给spring管理的话就能正确提交,为什么?
huangpengxiao 2007-04-19
原来把ACTION交给SPRING 管理 STRUTS 1.2 经常出莫名其妙的问题 WEBWORK 应该没问题
sunsy 2007-04-18
  用SPRING管理ACTION的话有一点可能要注意,就是SCOPE要设成prototype,如果也使用了struts2的UI,还是用的spring默认的scope,那么在action中提供的对象在同一浏览器中做新境、编辑时会混起来,可能出现编辑也是新增的情况,就因为默认的singleton不会再重新生成一个新的action。
  这个当时同事就遇到这个问题,我帮着调了一下,没具体使用了。
freeport 2007-04-18
 <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">   
        <property name="beanNames">   
            <value>*Service<value>   
        property>   
        <property name="interceptorNames">   
            <list>   
                <value>transactionInterceptor<value>   
                <!--    </span> </li> <li class="alt"><span><span class="comments">                                此处增加新的Interceptor   </span> </span></li> <li class=""><span><span class="comments">                        -->   
            list>   
        <property>   
    <bean>   


这里为什么是*Service
而不是*DAO呢???
raykcn 2007-04-18
Tiwen 写道
这样搭配似乎美中不足。既然你选择了SPRING作为IOC容器,那么你的ACTION也应该被SPRING的IOC管理


为什么要spring控制action呢,你在action中写逻辑代码 ?
spiritfrog 2007-04-15
roundlight 写道
非常感谢 xugq035 的介绍资料,我也想搞个 struts + spring + hibernate 相结合的东西出来, 不知道 这位朋友,能不能给我做一下指导啊,再这里 先谢过了啊

如果,有机会的话,像你学习啊


其实你可以参考appfuse啊,mvc层可以用struts,webwork,tapestry。
xly_971223 2007-04-14
引用
xugq035 写道
多谢复贴,这个做法我也试过,不过我觉得这样我就需要对每个action作2次的配置(struts、spring各一次),我还是保留我的配置方法,而且对于struts2来说还会直观一点,即使不用spring,struts2的配置文件也不需要作什么修改。

如果将struts2的action交给spring的ioc容器管理,那这个action实例能够获得springioc容器的一切优点,包括使用spring的aop系统,而且我记得在webwork2里,把action交给spring管理性能上更好一点,但struts2.0就不清楚了,毕竟人家用的是xwork2.0

个人认为让spring管理action更好一些 也可以更灵活的处理客户端请求
ahuaxuan 2007-04-03
xugq035 写道
多谢复贴,这个做法我也试过,不过我觉得这样我就需要对每个action作2次的配置(struts、spring各一次),我还是保留我的配置方法,而且对于struts2来说还会直观一点,即使不用spring,struts2的配置文件也不需要作什么修改。

如果将struts2的action交给spring的ioc容器管理,那这个action实例能够获得springioc容器的一切优点,包括使用spring的aop系统,而且我记得在webwork2里,把action交给spring管理性能上更好一点,但struts2.0就不清楚了,毕竟人家用的是xwork2.0



Tiwen 写道

Spring配置文件添加
       <bean id="LoginAction" class="com.baseframe.action.LoginAction"/>   
       <bean id="LogoutAction" class="com.baseframe.action.LogoutAction"/> 


难道spring2.0里默认的bean实例不是单例的吗
xugq035 2007-04-03
多谢复贴,这个做法我也试过,不过我觉得这样我就需要对每个action作2次的配置(struts、spring各一次),我还是保留我的配置方法,而且对于struts2来说还会直观一点,即使不用spring,struts2的配置文件也不需要作什么修改。
Tiwen 2007-04-02
这样搭配似乎美中不足。既然你选择了SPRING作为IOC容器,那么你的ACTION也应该被SPRING的IOC管理
更正

WEB.XML添加

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>


Spring配置文件添加


       <bean id="LoginAction" class="com.baseframe.action.LoginAction"/>   
       <bean id="LogoutAction" class="com.baseframe.action.LogoutAction"/> 



最后struts.xml配置文件改下
         <action name="login" class="LoginAction">   
            <result name="input">login.jspresult>   
            <result name="success">main.jspresult>   
            <result name="error">login.jspresult>   
        action>   
        <action name="logout" class="LogoutAction">   
            <result name="success">login.jspresult>   
        action>   


这样容器管理就交给SPRING好了。
xugq035 2007-03-29

gcgan 写道:
struts.xml
 
  1. xml version="1.0" encoding="UTF-8" ?>  
  2.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  3.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  4.   
  5. <struts>  
  6.   
  7.     <include file="struts-default.xml" />  
  8.   
  9.     <package name="default" extends="struts-default">  
  10.         <default-interceptor-ref name="completeStack" />  
  11.   
  12.         <global-results>  
  13.             <result name="login" type="redirect">login!default.actionresult>  
  14.             <result name="unauthorized">unauthorized.jspresult>  
  15.         global-results>  
  16.            
  17.         <action name="login" class="com.baseframe.action.LoginAction">  
  18.             <result name="input">login.jspresult>  
  19.             <result name="success">main.jspresult>  
  20.             <result name="error">login.jspresult>  
  21.         action>  
  22.         <action name="logout" class="com.baseframe.action.LogoutAction">  
  23.             <result name="success">login.jspresult>  
  24.         action>  
  25.     package>  
  26.   
  27. struts>  

的class是用的类如:com.baseframe.action.LoginAction,请问什么地方体现了struts+spring呢?
我觉得是不是应该用spring的bean来代替类呢?

spring的bean应该在action中调用,在LoginAction中应该包含类似如下的代码:

 private EmployeeService employeeService;
 public void setEmployeeService(EmployeeService employeeService) {
      this.employeeService = employeeService;
 }

这个EmployeeService才是spring的bean
只要你再struts.properties文件中设定了struts.objectFactory = spring,加入struts2-spring-plugin-2.0.6.jar就可以了

xugq035
搜索本博客
我的相册
554c92ad-245d-4625-a375-42a48fe185d7-thumb
阳溯西街
共 5 张
最新评论
评论排行榜