Spring与Struts框架整合的关键点是让struts框架action对象的创建,交给spring完成。
1、目录结构:
2、引入所需jar文件
1)引入struts .jar相关文件
2)spring-core 相关jar文件
3)spring-web 支持jar包
spring-web-3.2.5.RELEASE.jar (spring中)
struts2-spring-plugin-2.3.4.1.jar (struts中,让spring管理struts2必须要这个jar包)
3、Java类
UserAction.java
public class UserAction extends ActionSupport {
// springIOC容器注入
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() {
userService.save();
return SUCCESS;
}
}
UserService.java
public class UserService {
//IOC容器注入
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void save() {
userDao.save();
}
}
UserDao.ava
public class UserDao {
//仅做演示,此处没有操作数据库,
public void save() {
System.out.println("DB:保存用户");
}
}
4、配置XML
web.xml 【核心过滤器: 引入struts功能,初始化spring的ioc容器】
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 1. spring 配置 初始化spring容器-->
<context-param>
<!--配置文件路径,默认在WEB-INF下的ApplicationContext.xml可以不用配置此处-->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/bean-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 2. struts配置 -->
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts.xml 【struts路径与action映射配置】
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" extends="struts-default">
<!--由于struts2交由spring管理,此处的class需要填写spring中Action的bean的id或name名称,不需要填写类的全路径( struts2-spring-plugin-2.3.4.1.jar负责) -->
<action name="user" class="userAction" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
bean-action.xml 【spring ioc容器配置】
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 指定action多例,默认为单例 -->
<bean id="userAction" class="cn.ss.test.action.UserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
</beans>
bean-service.xml
<bean id="userService" class="cn.ss.test.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
bean-dao.xml
<bean id="userDao" class="cn.ss.test.dao.UserDao" scope="singleton" lazy-init="false"></bean>