Struts2与Spring整合,可以使用Spring的来描述依赖关系,在Struts2的配置文件struts.xml时使用Spring创建的bean。


1.导入jar包

 struts2:

struts-2.3.15.3\apps\struts2-blank.war\WEB-INF\lib\*.jar

struts-2.3.15.3\lib\struts2-json-plugin-2.3.15.3.jar

struts-2.3.15.3\lib\struts2-spring-plugin-2.3.15.3.jar

Spring:

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

2.在web.xml中配置struts2的核心拦截器

<filter>
			<filter-name>struts2</filter-name>
			<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		</filter>
		<filter-mapping>
			<filter-name>struts2</filter-name>
			<url-pattern>/*</url-pattern>
		</filter-mapping>


3.在web.xml中配置spring的监听器,用于初始化容器的对象的监听器,与其他的架构进行整合。容器启动时会自动读取applicationContext.xml文件

<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext*.xml</param-value>
	</context-param>


4.在applicationContext.xml配置自动装配bean的包路径

<!-- 自动装配bean -->
	<context:component-scan base-package="cn.syq.oa"></context:component-scan>

5.在struts.xml中配置action,在这里因为已经和spring 进行的了整合所以不需要在配置action 的class时全路径,直接写bean的名称

<struts>
    <!-- 配置开发模式,修改后直接部署 -->
    <constant name="struts.devMode" value="true" />
	<!-- 把扩展名配置为action -->
    <constant name="struts.action.extension" value="action" />
    <!-- 把主题配置为simple -->
	<constant name="struts.ui.theme" value="simple"></constant>
	
    <package name="default" namespace="/" extends="struts-default">
    	<!-- 没有与spring整合的action配置 
		<action name="test" class="cn.syq.oa.test.TestAction">-->
		<!-- 与spring整合的action配置,只写bean的名称-->
		<action name="test" class="testAction">
			<result name="success">/test.jsp</result>
		</action>
    </package>
</struts>


6.写action的单元测试。需要加入spring的注解,需要注意的是Scope注解属性要用prototype。

package cn.syq.oa.test;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;

@Controller
@Scope("prototype")
public class TestAction extends ActionSupport{
	
	@Override
	public String execute() throws Exception {
		testService.saveUser();
		return "success";
	}

}

总之,struts2与spring整合以后,可以在struts中直接使用spring进行bean的配置。换句话说就是让struts2的action由容器管理。




Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐