一种实用的Struts+Spring整合策略

本文介绍了一种简单的Struts与Spring框架整合策略,通过在BaseAction类中定义通用的业务逻辑获取方法,使得具体业务Action能够灵活地切换不同的整合方式,同时保持代码的整洁性和低耦合。

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

这种整合策略其实非常简单,其思路是将获取业务的逻辑组件的方式放在父类中,其余的action则从父类中获取,下面是BaseAction的代码

public class BaseAction extends ActionSupport{
    
public Object getBean(String beanName){
        
return getWebApplicationContext().getBean(beanName);
    }

}

 具体的业务Action

 

public LoginAction extends BaseAction{
   
public ValidBean getVB(){
      
return getBean("vb");
   }

   publicv ActionForward execute(......)
{
   }

}

这种策略的另一个好处是,可以自由的更换整合方式,其业务Action无需改变

假设我们要使用Spring IOC特性,则可以修改BaseAction如下:

 

public class BaseAction extends ActionSupport...{
   Object serviceObj;
   
public void setServiceObj(Object obj){
       
this.serviceObj=obj;
   }
  
   
public Object getBean(String beanName){
      
return this.serviceObj;
   }

}

这里的beanName实际上是没用的

我们还需要修改struts-config.xml,以使用DelegationRequestProcessor来实现整合

 

 

<action path="/login" name="loginForm"></action>  <!---这里并不配置type属性-->
<Controller proccessorClass="org.springframework.web.struts.DelegatingRequestProccessor"/>
<plug-in ClassName="org.springframework.web.struts.ContextLoaderPlugIn">
   
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>

 

spring的配置文件做如下配置

 

<bean name="/login" class="lee.LoginAction" singleton="false">
   
<property name="serviceObj">
      
<ref bean="obj"/>  
   
</property>
</bean>

 

 

这种策略有三个好处

1.可以在不同的整合策略中自由切换
2.避免重复创建DelegatingActionProxy实例
3.使业务Action不受侵入,避免代码污染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值