Spring与Struts1整合方式之通过Spring的DelegatingActionProxy类

  Spring提供了DelegatingActionProxy类,用来代理Struts中的Action,负责在Spring配置文档中查找对应的Action映射,从而把Struts的Action与Spring分离开,并把Struts的动作置于Spring框架的控制之下。

  1.创建web工程,将需要的资源包导入工程的WEB-INF/lib下,所需要的资源包包括:commons-beanutils- 1.8.0.jar、commons-chain-1.2.jar、commons-digester-1.8.jar、commons- logging-1.0.4.jar、log4j-1.2.14.jar、spring.jar、struts-core-1.3.10.jar、 struts-extras-1.3.10.jar。

  2.配置web.xml,采用struts1分配请求连接,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    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_3_0.xsd">
    <!-- 定义Struts1请求处理对象 -->
    <servlet>
        <servlet-name>actionServlet</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        <!-- 初始化配置文档 -->
        <init-param>
            <param-name>config</param-name>
            <param-value>struts.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 分配请求,将匹配*.do的请求交给actionServlet处理 -->
    <servlet-mapping>
        <servlet-name>actionServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <display-name></display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

web.xml

  3.在classpath中导入struts.xml配置文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.2//EN"
 "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
    <form-beans>
        <form-bean name="helloWorld" type="com.luxl.action.HelloWorld"></form-bean>
    </form-beans>

    <!-- 配置请求连接 -->
    <action-mappings>
        <action path="/helloWorld" type="org.springframework.web.struts.DelegatingActionProxy" name="helloWorld">
            <forward name="show" path="/JSP/index.jsp"/>
        </action>
        <!-- 请求的URL对应于<action>中的path属性 -->
        <action path="/newHelloWorld"
                type="org.apache.struts.actions.ForwardAction"
                parameter="/JSP/newHelloWorld.jsp" />
    </action-mappings>

    <!-- 注册ContextLoaderPlugIn插件 -->
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation" value="/WEB-INF/spring.xml"></set-property>
    </plug-in>
</struts-config>

struts.xml

  4.在WEB-INF/lib下导入spring.xml配置文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="helloWorldService" class="com.luxl.service.impl.HelloWorldServiceImpl">
    </bean>

    <!-- 定义对应于struts.xml中的action的bean,name与action的path对应 -->
    <bean name="/helloWorld" class="com.luxl.action.HelloWorldAction">
        <property name="service">
            <ref bean="helloWorldService" />
        </property>
    </bean>
</beans>

spring.xml

  5.定义Struts的Action类时,使其继承Struts的Action类,实例Action类如下:


package com.luxl.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.luxl.service.HelloWorldService;

public class HelloWorldAction extends Action{

    private Logger logger = Logger.getLogger(this.getClass());

    private HelloWorldService service;

    public HelloWorldService getService() {
        return service;
    }

    public void setService(HelloWorldService service) {
        this.service = service;
    }

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // TODO Auto-generated method stub
        //通过ApplicationContext获取配置文件
        logger.log(Level.INFO, "receive request");
        String msg = service.addMsg((HelloWorld)form);
        request.setAttribute("helloWorld", msg);
        return mapping.findForward("show");
    }
}

HelloWorldAction.java

注:DelegatingActionProxy类比DelegatingRequestProcessor的优势在于,它代理的是Action,而不是RequestProcessor,即使用户自定义了RequestProcessor也无所谓。

				
时间: 2024-11-09 05:13:36

Spring与Struts1整合方式之通过Spring的DelegatingActionProxy类的相关文章

Spring与Hibernate整合,实现Hibernate事务管理

1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar                 [spring对hibernate的支持] spring-tx-3.2.5.RELEASE.jar                     [事务相关] 2.配置文件 Product.hbm.xml <?xml version="1.0" encoding=

spring与jdbc整合详解

先上一段简单示例 public class MyTemplate { private DataSource dataSource; public DataSource getDataSource() { return dataSource; } public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void insert(String sql) throws SQLExc

Spring+SpringMVC +MyBatis整合配置文件案例66666

Spring+SpringMVC +MyBatis整合配置文件案例 标签: springspringmvcmybatismvcjava 2017-04-13 19:12 228人阅读 评论(1) 收藏 举报 分类: java_javaSE(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Spring+SpringMVC +MyBatis整合配置文件案例 针对spring/SpringMVC/MyBatis三个框架的整合有很多的方式,经过最近的学习我来总结一下其配置文

Spring Boot:整合Spring Security

综合概述 Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架.除了常规的认证(Authentication)和授权(Authorization)之外,Spring Security还提供了诸如ACLs,LDAP,JAAS,CAS等高级特性以满足复杂场景下的安全需求.另外,就目前而言,Spring Security和Shiro也是当前广大应用使用比较广泛的两个安全框架. Spring Security 应用级别的安全主要包含两

Spring与JDBC整合应用

Spring与JDBC整合背景: 1.Spring提供了编写Dao的工具类:JdbcTemplate JdbcTemplate.update("insert....",参数); JdbcTemplate.query();//查询多行记录 JdbcTemplate.queryForObject();//查询单行记录 int rows=JdbcTemplate.queryForInt(); 2.Spring提供了AOP式事务管理(不需要在方法中追加事务提交和回滚) 3.提供了统一的异常处理

struts2+spring的两种整合方式

借助于Spring插件(Struts2-spring-plugin-XXX.jar),我们可以非常简单地完成Spring和Struts2的整合,这种整合包括让Action自动装配Spring容器中的Bean,以及让Spring管理应用中的Action两种方式,不管采用哪种方式,完成Struts2和Spring的整合都是非常简单的,而且差别不大.一旦在Web应用中安装了Spring插件,即可充分利用该插件提供的功能: 1,可以通过Spring来创建所有的Action,Interceptor和Res

spring与hibernate整合(三种方式)

Spring与Hibernate整合关键点: 1) Hibernate的SessionFactory对象交给Spring创建: 2) hibernate事务交给spring的声明式事务管理. SSH整合: Spring与Struts: Spring与hibernate整合: SH整合步骤: 1)引入jar包 连接池/数据库驱动包 Hibernate相关jar Spring核心包(5个) Springaop 包(4个) spring-orm-3.2.5.RELEASE.jar           

struts2和spring的两种整合方式

首先,来看看如何让Spring 来管理Action. 引入包struts2-spring-plugin-2.2.1.jar 配置 web.xml <!-- 指定spring的配置文件,主要配置spring为随着服务器启动而自启动,默认从web根目录寻找配置文件,我们可以通过spring提供的classpath:前缀指定从类路径下寻找 --> <context-param> <param-name>contextConfigLocation</param-name&

springmvc3.2+spring+hibernate4全注解方式整合(四)

以上是工程文件,下面开始测试 package test.testservice; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.t