`
小杨学JAVA
  • 浏览: 904221 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring整合Struts2的两种方案

 
阅读更多

 

Spring整合Struts2的两种方案 收藏
一、需要的JAR文件为:Spring和Struts2框架本身需要的JAR文件以及他们所依赖的JAR文件,比如commons-logging.jar等等,另外还需要Struts2发布包中的struts2-spring-plugin-x.xx.jar。

二、在web.xml中增加WebApplicationContext的相应配置,以下两种配置方式本质是一样的。
1.         Servlet 2.3及以上版本可以使用监听器,相应配置如下:
<context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
如果spring配置文件被命名为applicationContext.xml,并且放在WEB-INF目录下,则不需要配置<context-param>,因为ContextLoaderListener默认在WEB-INF目录下寻找名为applicationContext.xml的文件。若存在多个Spring配置文件,则在<param-value>中依次列出,之间以逗号隔开。
2.         Servlet 2.3以下版本由于不支持<listener>,需要配置<servlet>,格式如下:
<context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<servlet>
              <servlet-name>contextLoaderServlet</servlet-name>
              <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
              <load-on-startup>1</load-on-startup>
</servlet>
如果spring配置文件被命名为applicationContext.xml,并且放在WEB-INF目录下,则不需要配置<context-param>,因为ContextLoaderListener默认在WEB-INF目录下寻找名为applicationContext.xml的文件,或者是名字为contextConfigLocation的ServletContext参数所指定的文件。由于该Servlet配置只是为了在容器启动时能启动ContextLoaderServlet使其工作,而不需要引用该Servlet,所以不需要配置<servlet-mapping>。
三、在web.xml中完成加载WebApplicationContext之后,接下来就可以做到Spring和Struts2的整合了。整合有两种方法,分别叙述如下:
1.         第一种实现方法:
1)        将Struts的业务逻辑控制器类配置在Spring的配置文件中,业务逻辑控制器中引用的业务类一并注入。注意,必须将业务逻辑控制器类配置为scope=”prototype”!
示例如下:
<bean id=”LoginAction” class=”yaso.struts.action.LoginAction”>
                     <property name=”loginDao” ref=”LoginDao”/>
</bean>
2)        在struts.xml或者等效的Struts2配置文件中配置Action时,指定<action>的class属性为Spring配置文件中相应bean的id或者name值。示例如下:
<action name=”LoginAction” class=”LoginAction”>
                     <result name=”success”>/index.jsp</result>
</action>
2.         第二种实现方法:
1)        业务类在Spring配置文件中配置,业务逻辑控制器类不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。
2)        业务逻辑控制器类中引用的业务类不需要自己去初始化,Struts2的Spring插件会使用bean的自动装配将业务类注入进来,其实业务逻辑控制器也不是Struts2创建的,而是Struts2的Spring插件创建的。默认情况下,插件使用by name的方式装配,可以通过增加Struts2常量来修改匹配方式:设置方式为:struts.objectFactory.spring.autoWire = typeName,可选的装配参数如下:
a)         name:等价于Spring配置中的autowire=”byName”,这是缺省值。
b)        type:等价于Spring配置中的autowire=”byType”。
c)         auto:等价于Spring配置中的autowire=”autodetect”。
d)        constructor:等价于Spring配置中的autowire=” constructor”。
四、如果原先在Struts2中使用了多个object factory,则需要通过Struts2常量显式指定object factory,方式如下:struts.objectFactory = spring;如果没有使用多个object factory,这一步可以省略。
五、可以通过设增加Struts2常量来指定是否使用Spring自身的类缓存机制。可以设定的值为true或false,默认为true。设置方式为:struts.objectFactory.spring.useClassCache = false。
六、至此,完成了两种方式的整合。比较这两种整合方式,其本质是一样的。不同之处在于,使用第二种自动装配的方式时,由于没有在Spring中配在web.xml

里面设置
 <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>*.action</url-pattern>     
    </filter-mapping>     
      
    <filter-mapping>     
      <filter-name>struts2</filter-name>     
      <url-pattern>*.jsp</url-pattern>     
    </filter-mapping>  
----------struts2的action请求设置

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/spring/application.xml,/WEB-INF/spring/applicationDao.xml
   ,/WEB-INF/spring/applicationAction.xml,/WEB-INF/spring/applicationService.xml 
  </param-value>
 </context-param>
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>

配置spring管理相关组件。。

 

分享到:
评论

相关推荐

    Spring集成Struts的三种方案

    除了上述两种常见的集成方式,还有一种更为现代的集成方法是使用Spring MVC,Spring MVC是Spring框架的一部分,它提供了一种更现代、更灵活的MVC实现。相比于Struts,Spring MVC提供了更多的特性和灵活性,如类型...

    spring与struts2整合

    Spring 和 Struts2 是两个...总之,Spring 和 Struts2 的整合利用了两者的优势,提供了一种强大的方式来构建可扩展、易于维护的 Java Web 应用。通过深入学习和实践,开发者可以掌握这种整合技巧,并在实际项目中应用。

    spring和struts整合的三种方案

    这两种处理器都允许 Spring 自动管理 Struts 中的 Action 对象。例如,配置如下: ```xml &lt;set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/&gt; `...

    Spring + struts 整合的三种主要方式

    ### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...

    Spring与Struts2整合

    Spring提供了一种全面的业务层和持久层管理方案,而Struts2则专注于视图和控制层。整合这两者可以使我们在享受Struts2的优秀UI处理和Action逻辑管理的同时,利用Spring进行更灵活的依赖管理和事务控制。 **二、整合...

    Spring整合Struts

    Spring与Struts的整合提供了灵活且强大的Web应用开发解决方案。无论是通过ContextLoaderPlugin还是继承ActionSupport类,开发者都可以根据项目的需求选择最合适的整合策略。通过利用Spring的DI和AOP特性,以及Struts...

    Spring+struts2

    Spring 和 Struts2 是两种非常流行的 Java Web 开发框架,它们在企业级应用开发中有着广泛的应用。Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,而 Struts2 则是用于构建 MVC(Model-View-...

    Spring-Struts2项目环境搭建

    6. **整合Struts2和Spring**:在`struts.xml`中配置Spring插件,这样Struts2就可以从Spring容器中获取Action实例。 ```xml &lt;constant name="struts.objectFactory" value="org.springframework.web.struts.spring...

    第28讲--Struts与Spring集成方案2(Spring集成Struts)

    集成Spring和Struts有多种方法,常见的有以下两种: 1. **基于Servlet Filter的集成**: Spring通过实现Servlet Filter,可以在请求到达Struts之前进行预处理,比如验证用户、注入依赖等。然后,Filter将请求转发...

    Spring+Struts的集成(第一种方案)

    在"Spring+Struts的集成(第一种方案)"中,我们通常指的是基于Servlet Filter的集成方式,这种方案将Spring作为应用的核心容器,而Struts作为MVC框架处理HTTP请求。下面我们将详细介绍这个集成方案的具体步骤和关键...

    struts和spring整合的2种方式

    本文将详细介绍两种整合Struts1与Spring的方法。 首先,我们需要理解这两个框架的基本概念。Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它专注于控制层,处理用户请求并转发到相应的...

    spring整合struts2的方法

    5. **整合Struts2的Action**:如果有些Action还需要使用Struts2,可以在Spring的配置文件中定义这些Action类的bean,并在Action类中使用Spring的setter方法注入依赖。 以上两种整合方式各有优缺点。基于Spring-...

    struts和spring整合(两种实现方法)

    用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。

    Spring 和struts 整合的三种方式

    这种整合方式通常用于Struts 2,也称为“Spring-Struts 2集成”。在这种模式下,Struts 2完全依赖于Spring来管理Action。首先,我们需要在Struts 2的配置文件(struts.xml)中启用Spring插件: ```xml ...

    spring_struts整合jar包

    2. **Spring MVC与Struts2的集成**:虽然两者都有MVC模式,但在整合时,通常会使用Struts2来处理请求的路由和响应,而Spring MVC则处理更复杂的视图解析和数据绑定。 3. **Spring事务管理**:Spring提供了强大的...

    Spring与Struts整合3种方式实例

    Spring 和 Struts 是两个流行的 Java Web 开发框架,Spring 提供了全面的依赖注入和面向切面编程功能,而 Struts 则专注于 MVC 模式的实现。整合 Spring 和 Struts 可以使得应用的业务逻辑层更好地管理和控制,提高...

    struts2整合spring实现拦截器

    值得注意的是,Struts2_Spring整合过程中可能会遇到如依赖冲突、配置问题等挑战,因此熟悉两种框架的原理和配置细节至关重要。同时,随着技术的发展,现代Web开发更多倾向于使用Spring Boot这类一站式解决方案,但...

    struts2和spring整合包

    **Struts2和Spring整合** 整合Struts2和Spring的主要目标是利用两者的优点,创建一个更强大的MVC应用。整合步骤通常包括: 1. **配置Spring**:创建Spring的ApplicationContext配置文件,定义Bean及其依赖。 2. **...

    CXF2.1.3+spring3.0+struts2.3.4

    通过Spring,可以将CXF和Struts2整合起来,使得各个组件之间的协作变得更加流畅。 【Struts2】是ActionServlet的一个实现,用于处理HTTP请求。Struts2.3.4版本包含了一些关键改进,如增强了拦截器的灵活性,提供了...

Global site tag (gtag.js) - Google Analytics