Spring 学习(三)与Struts整合

本文介绍了Spring与Struts框架的整合方式,包括所需的jar文件、配置文件(web.xml, bean.xml, struts.xml)及Java实现。通过整合,Spring负责创建Struts的Action对象,并管理依赖注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Spring与Struts框架整合

Spring负责对象创建,Struts负责用Action处理请求;因此,两种框架的整合效果是让Spring框架负责创建Struts框架的Action对象

二、Spring与Struts框架整合HelloWorld

1. 引入jar文件

struts框架:

commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar

spring框架:

commons-logging-1.1.3.jar
spring-beans-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE.jar
spring-expression-3.2.5.RELEASE.jar

spring-web:

spring-web-3.2.5.RELEASE.jar
struts2-spring-plugin-2.3.4.1.jar

2. 配置文件

1) web.xml
<?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">

    <!-- struts核心过滤器 -->            
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- spring监听器配置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!-- src文件下的非java文件(java文件会被编译为class文件)放入WEB-INF/classes目录下 -->
        <param-value>/WEB-INF/classes/bean*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

配置struts核心监听器和spring容器初始化以及servletContextListener

2) bean.xml

bean-dao.xml:

<bean id="userDao" class="com.cityu.dao.UserDao"></bean> 

bean-service.xml:

<bean id="userService" class="com.cityu.service.UserService">
        <property name="userDao" ref="userDao"></property>
</bean>

bean-action.xml

<bean id="userAction" class="com.cityu.action.UserAction">
        <property name="userService" ref="userService"></property>
</bean>
3) struts.xml
<struts>
    <package name="user" extends="struts-default">
        <!-- action需要由spring来创建,因此class应该指定为userAction bean对象,
        这样会去是spring的IOC容器中会寻找该对象 -->
        <action name="user" class="userAction" method="execute">
            <result name = "success">/index.jsp</result>
        </action>
    </package>
</struts>

这里需要注意,之前是在用户访问时由struts创建对象,这里我们有了spring,可以将创建对象userAction的工作交给spring

3. java实现

public class UserDao {
    public void save(){
        System.out.println("save into DataBase!");
    }
}

public class UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void service(){
        userDao.save();
    }
}

public class UserAction extends ActionSupport{
    private UserService userService;
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public String execute(){
        userService.service();
        return SUCCESS;
    }
}

简单的流程是这样的:用户请求时,访问action,action对象由spring容器创建;在action访问到dao的过程中,所需要的依赖对象都是由spring创建的,执行完业务方法后,由action的返回值定位到index.jsp页面,和用户交互。当然,其中struts框架的过滤作用暂时没有很多体现,因为使用的都是默认的拦截器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值