1、现有项目是通过

<action    path="/aaaaAction"
                type="org.springframework.web.struts.DelegatingActionProxy"
                name="plDraftPrLineForm"
                scope="request"
                parameter="method"
                validate="true">
            <forward name="list" path="/aaa.jsp"/>
            <forward name="batchSetting" path="/bbb.jsp"/>
            <forward name="list" path="/ccc.jsp" />
            <forward name="edit" path="/dddd.jsp" />
            <forward name="create" path="/eeee" redirect="true"/>
            <forward name="delete" path="/ffffff" redirect="true"/>
        </action>

<bean name="/aaaaAction" class="com.AaaAction">
        <property name="a" ref="m />
        <property name="b" ref="e"/>
        <property name="c" ref="f" />
        <property name="d" ref="g" />
    </bean>

这样整合的

2、DelegatingActionProxy

英语中

delegate 是被推选出代表人(是一个团体的代表)
proxy 代表人(只代表一个人) 即委任别人替你参与(会议/投票)活动 (或要收费若委任的是尊业人士)。
agent 经纪人 / 代理 (尊业要收费的)

3、DelegatingActionProxy中

package org.springframework.web.struts;

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

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 org.apache.struts.action.ActionServlet;
import org.apache.struts.config.ModuleConfig;

import org.springframework.beans.BeansException;
import org.springframework.web.context.WebApplicationContext;

/**
* Proxy for a Spring-managed Struts <code>Action</code> that is defined in
* {@link ContextLoaderPlugIn ContextLoaderPlugIn's}
* {@link WebApplicationContext}.
*
* <p>The proxy is defined in the Struts config file, specifying this
* class as the action class. This class will delegate to a Struts
* <code>Action</code> bean in the <code>ContextLoaderPlugIn</code> context.
*
* <pre class="code">&lt;action path="/login" type="org.springframework.web.struts.DelegatingActionProxy"/&gt;</pre>
*
* The name of the <code>Action</code> bean in the
* <code>WebApplicationContext</code> will be determined from the mapping
* path and module prefix. This can be customized by overriding the
* <code>determineActionBeanName</code> method.
*
* <p>Example:
* <ul>
* <li>mapping path "/login" -> bean name "/login"<br>
* <li>mapping path "/login", module prefix "/mymodule" ->
* bean name "/mymodule/login"
* </ul>
*
* <p>A corresponding bean definition in the <code>ContextLoaderPlugin</code>
* context would look as follows; notice that the <code>Action</code> is now
* able to leverage fully Spring's configuration facilities:
*
* <pre class="code">
* &lt;bean name="/login" class="myapp.MyAction"&gt;
*   &lt;property name="..."&gt;...&lt;/property&gt;
* &lt;/bean&gt;</pre>
*
* Note that you can use a single <code>ContextLoaderPlugIn</code> for all
* Struts modules. That context can in turn be loaded from multiple XML files,
* for example split according to Struts modules. Alternatively, define one
* <code>ContextLoaderPlugIn</code> per Struts module, specifying appropriate
* "contextConfigLocation" parameters. In both cases, the Spring bean name
* has to include the module prefix.
*
* <p>If you want to avoid having to specify <code>DelegatingActionProxy</code>
* as the <code>Action</code> type in your struts-config file (for example to
* be able to generate your Struts config file with XDoclet) consider using the
* {@link DelegatingRequestProcessor DelegatingRequestProcessor}.
* The latter's disadvantage is that it might conflict with the need
* for a different <code>RequestProcessor</code> subclass.
*
* <p>The default implementation delegates to the {@link DelegatingActionUtils}
* class as much as possible, to reuse as much code as possible with
* <code>DelegatingRequestProcessor</code> and
* {@link DelegatingTilesRequestProcessor}.
*
* <p>Note: The idea of delegating to Spring-managed Struts Actions originated in
* Don Brown's <a href="http://struts.sourceforge.net/struts-spring">Spring Struts Plugin</a>.
* <code>ContextLoaderPlugIn</code> and <code>DelegatingActionProxy</code>
* constitute a clean-room implementation of the same idea, essentially
* superseding the original plugin. Many thanks to Don Brown and Matt Raible
* for the original work and for the agreement to reimplement the idea in
* Spring proper!
*
* @author Juergen Hoeller
* @since 1.0.1
* @see #determineActionBeanName
* @see DelegatingRequestProcessor
* @see DelegatingTilesRequestProcessor
* @see DelegatingActionUtils
* @see ContextLoaderPlugIn
* @deprecated as of Spring 3.0
*/
@Deprecated
public class DelegatingActionProxy extends Action {

/**
     * Pass the execute call on to the Spring-managed delegate <code>Action</code>.
     * @see #getDelegateAction
     */
    @Override
    public ActionForward execute(
            ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception {

Action delegateAction = getDelegateAction(mapping);
        return delegateAction.execute(mapping, form, request, response);
    }

/**
     * Return the delegate <code>Action</code> for the given <code>mapping</code>.
     * <p>The default implementation determines a bean name from the
     * given <code>ActionMapping</code> and looks up the corresponding bean in
     * the {@link WebApplicationContext}.
     * @param mapping the Struts <code>ActionMapping</code>
     * @return the delegate <code>Action</code>
     * @throws BeansException if thrown by <code>WebApplicationContext</code> methods
     * @see #determineActionBeanName
     */
    protected Action getDelegateAction(ActionMapping mapping) throws BeansException {
        WebApplicationContext wac = getWebApplicationContext(getServlet(), mapping.getModuleConfig());
        String beanName = determineActionBeanName(mapping);
        return (Action) wac.getBean(beanName, Action.class);
    }

/**
     * Fetch ContextLoaderPlugIn's {@link WebApplicationContext} from the
     * <code>ServletContext</code>, falling back to the root
     * <code>WebApplicationContext</code>.
     * <p>This context is supposed to contain the Struts <code>Action</code>
     * beans to delegate to.
     * @param actionServlet the associated <code>ActionServlet</code>
     * @param moduleConfig the associated <code>ModuleConfig</code>
     * @return the <code>WebApplicationContext</code>
     * @throws IllegalStateException if no <code>WebApplicationContext</code> could be found
     * @see DelegatingActionUtils#findRequiredWebApplicationContext
     * @see ContextLoaderPlugIn#SERVLET_CONTEXT_PREFIX
     */
    protected WebApplicationContext getWebApplicationContext(
            ActionServlet actionServlet, ModuleConfig moduleConfig) throws IllegalStateException {

return DelegatingActionUtils.findRequiredWebApplicationContext(actionServlet, moduleConfig);
    }

/**
     * Determine the name of the <code>Action</code> bean, to be looked up in
     * the <code>WebApplicationContext</code>.
     * <p>The default implementation takes the
     * {@link org.apache.struts.action.ActionMapping#getPath mapping path} and
     * prepends the
     * {@link org.apache.struts.config.ModuleConfig#getPrefix module prefix},
     * if any.
     * @param mapping the Struts <code>ActionMapping</code>
     * @return the name of the Action bean
     * @see DelegatingActionUtils#determineActionBeanName
     * @see org.apache.struts.action.ActionMapping#getPath
     * @see org.apache.struts.config.ModuleConfig#getPrefix
     */
    protected String determineActionBeanName(ActionMapping mapping) {
        return DelegatingActionUtils.determineActionBeanName(mapping);
    }

}

Spring学习笔记之整合struts的更多相关文章

  1. Spring学习笔记四 整合SSH

    三大框架架构(整合原理) 步骤1:导包 Hibernate包 1.Hibernate包,hibernate/lib/required 2.hibernate/lib/jpa | java persis ...

  2. Spring学习笔记之整合hibernate

    1.web.xml里边要配置好对应的springxml的路径 <context-param> <param-name>contextConfigLocation</par ...

  3. Spring 学习笔记之整合Hibernate

    Spring和Hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心SQ ...

  4. Spring学习笔记(六)—— SSH整合

    一.整合原理 二.整合步骤 2.1 导包 [hibernate] hibernate/lib/required hibernate/lib/jpa 数据库驱动 [struts2] struts-bla ...

  5. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  6. Spring学习笔记(一)

    Spring学习笔记(一) 这是一个沉淀的过程,大概第一次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了一个很 ...

  7. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  8. Java架构师之路 Spring学习笔记(一) Spring介绍

    前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...

  9. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

随机推荐

  1. MyBatis——优化MyBatis配置文件中的配置

    原文:http://www.cnblogs.com/xdp-gacl/p/4264301.html 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写 ...

  2. org.apache.hadoop.hbase.TableExistsException: hbase:namespace

    Problem is here : https://community.cloudera.com/t5/Storage-Random-Access-HDFS/HMaster-not-starting- ...

  3. 可视化工具之 IGV 使用方法

    整合基因组浏览器(IGV)是一种高性能的可视化工具,用来交互式地探索大型综合基因组数据.它支持各种数据类型,包括array-based的和下一代测序的数据和基因注释. IGV这个工具很牛,发了NB: ...

  4. 项目解析- JspLibrary - part2

    banner.jsp 验证用户是否登录 <%String manager=(String)session.getAttribute("manager"); //验证用户是否登 ...

  5. Django开发博客- 三部曲

    其实在django中实现一个功能只需要三个步骤即可,这里我姑且叫它三部曲. 这三部曲就是: 定义urls映射 定义views 定义templates 什么是URL? URL就算一个WEB地址,你在浏览 ...

  6. jmeter 实时搜索结果

    因为JMeter 2.13你可以得到实时搜索结果发送到后端通过 后端侦听器 使用潜在的任何后端(JDBC.JMS网络服务,€Š) 通过提供一个实现类 AbstractBackendListenerCl ...

  7. 笔记6:winfrom连接sql server 进行数据交换

    今天的作业是用winfrom窗体做一个留言板,如图: 要求和数据库有查询和添加功能.下拉框里的值是直接获取数据库中的值 一.连接数据库,获取表中数据 //创建一个存数据的表 DataTable tab ...

  8. python与unicode

    Unicode是一种在计算机上使用的字符编码,是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求. Uni ...

  9. hdu----149850 years, 50 colors(最小覆盖点)

    50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  10. sql server中局部变量与全局变量的 申明与赋值(转)

    来源:http://www.111cn.net/database/mssqlserver/36734.htm 例子:http://www.cnblogs.com/sunxi/p/4497493.htm ...