一、需要的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中配置业务逻辑控制器,所以需要对其配置一些AOP之类的内容时就很难实现了。
分享到:
相关推荐
用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。
本文将详细介绍两种整合Struts1与Spring的方法。 首先,我们需要理解这两个框架的基本概念。Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它专注于控制层,处理用户请求并转发到相应的...
**Struts2和Spring整合** 整合Struts2和Spring的主要目标是利用两者的优点,创建一个更强大的MVC应用。整合步骤通常包括: 1. **配置Spring**:创建Spring的ApplicationContext配置文件,定义Bean及其依赖。 2. **...
Spring 和 Struts2 是两个...总之,Spring 和 Struts2 的整合利用了两者的优势,提供了一种强大的方式来构建可扩展、易于维护的 Java Web 应用。通过深入学习和实践,开发者可以掌握这种整合技巧,并在实际项目中应用。
Spring提供了一种全面的业务层和持久层管理方案,而Struts2则专注于视图和控制层。整合这两者可以使我们在享受Struts2的优秀UI处理和Action逻辑管理的同时,利用Spring进行更灵活的依赖管理和事务控制。 **二、整合...
值得注意的是,Struts2_Spring整合过程中可能会遇到如依赖冲突、配置问题等挑战,因此熟悉两种框架的原理和配置细节至关重要。同时,随着技术的发展,现代Web开发更多倾向于使用Spring Boot这类一站式解决方案,但...
这两种处理器都允许 Spring 自动管理 Struts 中的 Action 对象。例如,配置如下: ```xml <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> `...
综上所述,"struts2_spring整合示例"是将Struts2的MVC能力与Spring的强大后端服务相结合的实例,展示了如何通过整合提高Web应用的开发效率和质量。通过学习这个示例,开发者可以更好地理解这两种框架的协同工作原理...
这个名为"springboot-hibernate-strruts2_springboot_struts2_hibernate_整合_源码"的压缩包文件,显然包含了将Spring Boot与Struts2和Hibernate整合的示例代码或项目模板。下面我们将详细讨论如何进行这种整合以及...
Struts1 和 Spring 整合是 Java Web 开发中常见的一种技术组合,它们分别作为 MVC 框架和依赖注入框架,共同提升了应用的可维护性和可扩展性。Struts1 提供了强大的控制器层,而 Spring 提供了业务逻辑处理和依赖...
4. **FilterDispatcher**:在Struts2与Spring整合时,通常会使用`StrutsSpringObjectFactory`替换默认的`DefaultActionProxyFactory`。为此,我们需要在web.xml中配置`StrutsPrepareAndExecuteFilter`而非传统的`...
Struts2和Spring是两个非常重要的Java开源框架,它们在企业级Web开发中扮演着核心角色。Struts2主要用于控制应用程序的流程,而Spring则是一个全面的轻量级框架,提供依赖注入、AOP(面向切面编程)以及对其他框架的...
### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...
Spring与Struts的整合提供了灵活且强大的Web应用开发解决方案。无论是通过ContextLoaderPlugin还是继承ActionSupport类,开发者都可以根据项目的需求选择最合适的整合策略。通过利用Spring的DI和AOP特性,以及Struts...
在这里,我们定义了一个名为 "login2" 的 action,映射到 `Login2Action` 类,并指定了成功和输入两种结果对应的 JSP 页面。 5. **配置 applicationContext.xml**:Spring 的配置文件,用于定义 Bean 的实例化和...
Struts2和Spring的整合是Java企业级开发中常见的技术结合,主要目的是为了利用Spring的强大IoC(控制反转)和AOP(面向切面编程)功能,以及Struts2的优秀MVC架构来构建可维护性和扩展性更强的Web应用。下面我们将...
Struts2 和 Spring 整合是Java开发中常见的实践,主要目的是为了利用Spring的强大功能,如依赖注入(DI)和面向切面编程(AOP),同时保持Struts2的MVC架构的优势。以下是对整合过程的详细说明: 首先,Spring框架...
Struts和Spring是两个在Java Web开发中广泛使用的开源...通过阅读并实践"**Myeclipse中Struts和Spring整合.doc**"中的示例,开发者可以更好地掌握这两种框架的结合使用,为构建复杂的Java Web应用程序打下坚实的基础。
本文将详细介绍Struts与Spring的三种整合方式,帮助开发者更好地理解和应用这两种框架。 #### 一、使用Spring的ActionSupport类整合Struts 1.x **概述:** 这种方式是最直接的整合方法,通过让Struts的Action继承...