zoukankan      html  css  js  c++  java
  • Spring IoC容器管理Action

    Spring IoC容器管理Action有两种方式:DelegatingRequestProcessor、DelegatingActionProxy

    不管采用哪一种方式,都需要随应用启动时创建ApplicationContext实例,由Struts负责在应用启动时创建ApplicationContext实例。Struts中提供了PlugIn的扩展点,可在应用启动和关闭时,创建或销毁某些资源。

    使用ContextLoaderPluIn创建了ApplicationContext实例后,关键是如何将AtionServlet拦截的请求,转发给Spring管理的bean。

    ActionServlet将请求转发到Spring容器,有以下两个时机:在ActionServlet之处将处理转发给Spring容器中的bean、在Action之处将处理转发给Spring容器中的bean。

    根据这两个时机,完成这个转发也有以下两种策略:采用DelegatingRequestProcessor,在ActionServlet出完成转发、采用DelegatingActionProxy,在Action出完成转发。

    查看 Struts 的源代码,我们可以看到由 ActionServlet 调用 RequestProcessor 完成实 际的转发。如想在 ActionServlet 处将请求转发给 ApplicationContext 的 bean ,可以通过 扩展 RequestProcessor 完成,使用扩展的 RequestProcessor 替换 Struts 的 RequestProcessor ,例如:

    //使用 spring 的 RequestProcessor 替换 struts 原有的 RequestProcessor

    <controller processorClass="org.springframework.web.struts.Delegating RequestProcessor"/>      

    DelegatingRequestProcessor 可直接替换了原有的 RequestProcessor,并在请求转发给 action 之前,转发给 Spring 管理的 bean; 而 DelegatingActionProxy 则被配置成 Struts 的 action,即所有的请求先被 ActionServlet 拦截,然后将请求转发到对应的 action,而 action 的实现类全都是 DelegatingActionProxy; 最后由 DelegatingActionProxy 将请求转发给 Spring 容器的 bean。

  • 相关阅读:
    ubuntu 20.04 安装mysql
    vim 编辑器常用命令备份
    各个Iot Cloud对MQTT协议的支持
    Linux下sleep函数与usleep函数加Windows下的Sleep函数
    localtime、localtime_s、localtime_r的使用
    Windows平台下利用openssl配置产生SSL认证文件
    转载
    转载- 常见arduino型号(版本)比较
    转载
    转载
  • 原文地址:https://www.cnblogs.com/yzp666/p/7593616.html
Copyright © 2011-2022 走看看