一,概述
1)Spring:负责对象创建及处理对象依赖关系
2)Struts:用Action处理请求
3)Spring与Struts整合的关键点:将Struts框架Action的创建交给Spring完成
4)SSH整合关键点:
Spring与Struts:Action对象交给Spring创建
Spring与Hibernate:SessionFactory对象交给Spring创建
二,准备工作
1)引入struts相关jar文件,如下图:
2)spring-core相关jar文件,如下图:
3)引入spring-web支持的jar包,如下图:
4)在web.xml中配置struts核心过滤器
<!-- 1,struts配置:引入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>
5)在web.xml中对spring进行配置
<!-- 2,spring配置,,初始化spring的IOC容器 -->
<!-- 多个文件用空格隔开 -->
<!-- <param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value> -->
<!-- 这样写<param-value>/WEB-INF/classes/bean-*.xml</param-value>,表示加载src下所有的bean-开头的xml -->
<context-param>
<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>
三,代码环节
1)UserDao.java
package com.bighuan.dao;
public class UserDao {
public void save(){
System.out.println("DB:保存用户");
}
}
2)UserService.java
package com.bighuan.service;
import com.bighuan.dao.UserDao;
public class UserService {
private UserDao userDao;//=new UserDao();
//IOC:对象的创建交给spring的外部容器创建
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void save(){
userDao.save();
}
}
3)UserAction.java
package com.bighuan.action;
import com.bighuan.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.net.httpserver.Authenticator.Success;
public class UserAction extends ActionSupport{
// service:springIOC容器注入
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() {
userService.save();
return SUCCESS;
}
}
4,配置环节
以下四个配置文件都在src目录下.
1)bean-dao.xml
<?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"
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">
<!-- IOC容器的配置:要创建的所有对象都在这里配置 -->
<bean id="userDao" class="com.bighuan.dao.UserDao"></bean>
</beans>
2)bean-service.xml
<?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"
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">
<!-- IOC容器的配置:要创建的所有对象都在这里配置 -->
<bean id="userService" class="com.bighuan.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
3)bean-action.xml
<?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"
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">
<!-- IOC容器的配置:要创建的所有对象都在这里配置 -->
<bean id="userAction" class="com.bighuan.action.UserAction">
<property name="userService" ref="userService"></property>
</bean>
</beans>
4)struts.xml配置文件
<?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>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<package name="user" extends="struts-default">
<!-- 这种方式还是struts创建action -->
<!-- <action name="user" class="com.bighuan.action.UserAction"
method="execute">
<result name="success">/index.jsp</result>
</action> -->
<!-- spring方式创建Action -->
<action name="user" class="userAction" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
抛弃传统配置Action的方式,如上面代码注释的Action,而是通过Spring方式创建Action.
访问Action:http://localhost:8080/spring_struts/user,最终成功跳转到index.jsp页面,spring与struts整合成功!