一种实用的Struts+Spring整合策略
2007-10-29 18:20
155 查看
这种整合策略其实非常简单,其思路是将获取业务的逻辑组件的方式放在父类中,其余的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不受侵入,避免代码污染
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不受侵入,避免代码污染
相关文章推荐
- Spring整合Struts策略----ActionSupport
- Spring4.2.5+Hibernate4.3.11+Struts2.3.24整合开发
- Struts2+Spring3+Hibernate4整合之Spring配置文件
- 使用Struts,spring和HibernateXML方式进行整合
- JDK6+Tomcat6+MyEclipse6,整合Struts,Spring,Hibernate出现异常
- Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记
- SSI(Struts,Spring,Ibatis)整合总结
- J2EE Web 框架整合(Struts, hibernate, Spring)
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)
- Spring3.0.5+Mybatis3.0.5+Struts2.0.6整合
- Struts2+Spring3+MyBatis3整合以及Spring注解开发
- 最新版的SSH框整合(Spring 3.1.1 + Struts 2.3.1.2 + BoneCP + Hibernate 4.1)更新增加C3P0和EhCache配置
- Struts,hibernate,Spring整合开发各层之间联系的配置说明(初学者值得看下)
- Struts ,Hibernate ,Spring 常用整合配置方法.
- spring整合struts2时action里的service注入不进来,
- Spring整合Struts详解
- Activiti5工作流框架学习之Struts2+Hibernate+Spring整合配置
- (绝对有效)sqlserver2000链接proxool连接池,终于配置出spring整合struts,hibernate annotation(pool数据池,sqlserver2000数据库)
- 用 Spring 更好地处理 Struts 动作三种整合 Struts 应用程序与 Spring 的方式
- Struts2+Hibernate3.2+Spring 2.0整合应用配置