`

DelegatingActionProxy

 
阅读更多
DelegatingActionProxy


org.springframework.web.struts.DelegatingActionProxy
在目录spring-framework-2.5.4\dist\modules下的spring-webmvc-struts.jar

如何将Struts1.x和spring整合在一起,让spring去管理struts中的Action实例,action里面属性的注入?

必看:http://www.iteye.com/topic/18348
      http://java.chinaitlab.com/Struts/767495_3.html

1.在web.xml加入:
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath*:spring/core/applicationContext.xml
		</param-value>
	</context-param>


2.修改struts-config.xml中action节点的配置信息,将原来定义的
<action path="/validateUser"
    type="com.wuwei.struts.action.ValidateUserAction" name="userForm">
    <forward name="success" path="/success.jsp"></forward>
    <forward name="fail" path="/fail.jsp"></forward>
   </action>
中的type改为: type="org.springframework.web.struts.DelegatingActionProxy">或者你也可以不改,而在<plug-in>标签前加入如下定义

<!-- 加上controller就不用再配置action的type属性了/或者说type属性不用改为
   type="org.springframework.web.struts.DelegatingActionProxy" -->
<controller
   processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>

3.在applicationContext.xml中为ValidateUserAction添加定义,将userDao的实例化加给Spring,这也是Spring中的依赖注入
<!-- Struts -->
<bean name="/validateUser"
   class="com.wuwei.struts.action.ValidateUserAction">
   <property name="userDAO" ref="userDao"/>
</bean>

当然,这里ref(引用)的Bean userDao也是在applicationContext.xml中己定义好的

<!-- 通过HibernateDaoSupport来操作数据库,需要植入sessionFactory
   UserDao继承自HibernateDaoSupport
-->
<bean id="userDao" class="com.wuwei.struts.dao.UserDAO">
   <property name="sessionFactory" ref="sessionFactory" />
</bean>





二、使用 DelegatingActionProxy


使用 DelegatingRequestProcesso 非常简单方便,但有一个缺点:RequestProcessor 是Struts 的一个扩展点,也许应用程序本身就需要扩展RequestProcessor ,而DelegatingRequest Processor 已经使用了这个扩展点。

为了重新利用 Struts 的 RequestProcessor 这个扩展点,有以下两个方法:使应用程序的 RequestProcessor 不再继承 Struts 的 RequestProcessor ,改为继承DelegatingRequestProcessor 。

使用 DelegatingActionProxy。

前者常常有一些未知的风险,而后者是 Spring 推荐的整合策略。使用 DelegatingActionProxy 与DelegatingRequestProcessor 的目的只有一个,都是将请求转发给 Spring管理的 bean。

DelegatingRequestProcessor 可直接替换了原有的 RequestProcessor,并在请求转发给action 之前,转发给 Spring 管理的 bean; 而 DelegatingActionProxy 则被配置成 Struts 的action,即所有的请求先被 ActionServlet拦截,然后将请求转发到对应的 action,而 action的实现类全都是 DelegatingActionProxy; 最后由 DelegatingActionProxy 将请求转发给Spring 容器的 bean(真正的处理类action)。
这个bean可以配置在applicationContext.xml中,也可以将它从里面抽取出来,配置在专门的applicationContext-action.xml中,并在applicationContext.xml里面配置该文件名的映射路径。
	
<bean name="/datadictAdmin"		class="com.lenovo.platform.admin.web.action.DatadictAdminAction">
		<property name="datadictService" ref="datadictService" />
	</bean>


可以看出:使用 DelegatingActionProxy 比使用 DelegatingRequestProcessor 要晚一步转发到 Spring 的 contexto 但通过这种方式可以避免占用扩展点。与使用 DelegatingRequestProcessor 对比,使用 DelegatingActionProxy 仅需要去掉controller 配置元素,并将所有的 action 实现类改为 DelegatingActionProxy 即可。
分享到:
评论

相关推荐

    SSH集成代理1.2版第二种和struts.xml中DelegatingActionProxy代理搭配

    在这个场景中,我们关注的是SSH中的Struts框架和SSH集成代理1.2版的第二种搭配方式,以及如何在`struts.xml`配置文件中使用`DelegatingActionProxy`代理。 首先,让我们深入理解SSH框架的各自职责。Spring框架作为...

    Struts_Spring框架整合DelegatingActionProxy.

    "Struts_Spring框架整合DelegatingActionProxy"这个主题,就是关于如何将这两个框架进行集成,以优化Java Web应用程序的架构。 DelegatingActionProxy是Spring的一个组件,它在Struts与Spring的整合中扮演了重要...

    SSH集成代理2.0版和struts.xml中DelegatingActionProxy代理搭配

    在Struts2中,DelegatingActionProxy是Action代理的一种实现,它主要用于动态地加载和调用实际的Action类,实现了Action的AOP(面向切面编程)功能,如权限控制、异常处理等。DelegatingActionProxy在运行时根据配置...

    struts1整合spring-通过DelegatingActionProxy实现

    DelegatingActionProxy的作用是作为Struts1 Action的代理,它将Struts1的Action实例化工作交给了Spring。这样,我们在配置文件中可以声明Action的Bean,Spring会在需要时自动创建并管理这些Bean。 整合步骤大致如下...

    SSH集成代理1.2版第一种和struts.xml中DelegatingActionProxy代理搭配

    在这个主题中,我们将深入探讨SSH集成代理1.2版的第一种方法以及如何与`struts.xml`中的`DelegatingActionProxy`代理进行配合。 **Spring框架**是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...

    为何不使用ContextLoaderPlugIn也可以正常使用DelegatingRequestProcessor和DelegatingActionProxy整

    在Spring MVC框架中,`ContextLoaderPlugIn`和`DelegatingRequestProcessor`以及`DelegatingActionProxy`是三个关键组件,它们各自扮演着不同的角色。本文将深入探讨这三个概念,以及在某些情况下,为什么可以不使用...

    ssh整合 5种方式

    在Struts配置文件中,通过指定`type`为`org.springframework.web.struts.DelegatingActionProxy`,并在Spring的配置文件中定义对应的Action Bean,这样就可以实现Struts和Spring之间的通信。 ### 第二种方式:...

    轻量级J2EE企业应用实战源码 7 下

    从压缩包中列出的文件名"usable"、"DelegatingActionProxy"和"DelegatingRequestProcessor"来看,我们可以推测这部分内容可能涉及了Spring框架中的关键概念和技术。 首先,"usable"可能是指可复用或可操作的组件,...

    Struts2 实现文件简单上传

    Struts2是一个流行的Java web框架,它为开发者提供了一种优雅的方式来构建可维护、结构清晰的Web应用程序。... ...例如: ... ...当用户提交表单时,服务器端的Servlet(通常是Struts2的Action)接收到请求。...

    Spring和strtus的xml文件的修改

    在Spring与Struts框架的整合中,通过修改`Struts-config.xml`、`applicationContext.xml`以及使用`DelegatingActionProxy`,可以实现Struts Action与Spring管理的bean之间的无缝集成。这种整合方式充分利用了Spring...

    整合Spring与Struts的几种方法

    3. **使用DelegatingActionProxy代理Action**:在`struts-config.xml`中,所有Action的type属性改为`DelegatingActionProxy`,而非具体类名,然后在Spring配置文件中定义对应的bean。这是最灵活的整合方式,因为它...

    ssh三大框架整合

    &lt;action path="/somepath" type="org.springframework.web.struts.DelegatingActionProxy" /&gt; ``` - 配置监听器(可选): 如果不希望在`struts-config.xml`中配置`ContextLoaderPlugIn`插件,可以在`web.xml`...

    ssh框架整合

    &lt;bean id="delegatingActionProxy" class="org.springframework.web.struts.DelegatingActionProxy"&gt; ``` 其中: - `targetBeanName`: 指向Spring容器中定义的服务Bean名称。 - `targetMethod`: 指向服务Bean...

    Spring与Struts整合3种方式实例

    这种方式更为灵活,Action 对象由 Spring 创建并管理,Struts 通过代理对象(`DelegatingActionProxy`)调用 Action。Action 无需继承任何特定的类,可以完全解耦合。这是 Spring-Struts2 整合的常见方式,适用于 ...

    spring 整合 struts 文档

    3. **通过Spring的DelegatingActionProxy类** 接下来我们将分别详细介绍这三种方法的具体实施步骤及其优缺点。 #### 二、通过Spring的ActionSupport类 这种方式是通过让Action类继承Spring的`ActionSupport`类来...

    spring 和 struts整合

    &lt;action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" type="org.springframework.web.struts.DelegatingActionProxy" /&gt; ``` 这意味着当Struts接收到`/login`路径...

    hibernate struts 和spring整和配置

    2. **配置Struts**:在`struts-config.xml`文件中,你需要将所有的Action定义为Spring的代理Action `org.springframework.web.struts.DelegatingActionProxy`。这样,当请求到达Struts时,实际的处理工作将由Spring...

    利用spring管理strurs里的Action

    原本直接指定Action类的类型,现在需要改为`DelegatingActionProxy`,这是一个Spring提供的代理类,它会根据Spring配置文件来创建和管理Action实例。例如: ```xml &lt;!-- 原始的Action定义 --&gt; &lt;!-- 修改后的...

    spring-struts.jar

    org.springframework.web.struts.DelegatingActionProxy.class org.springframework.web.struts.DelegatingActionUtils.class org.springframework.web.struts.DelegatingRequestProcessor.class org.spring...

    SSH搭建方法

    同时,在`struts-config.xml`中,每个Action的配置应该包含一个`method`参数,以及`DelegatingActionProxy`类型: ```xml &lt;action path="/yourAction" type="org.springframework.web.struts.DelegatingActionProxy...

Global site tag (gtag.js) - Google Analytics