Spring分别与Struts1.x 和Struts2.x集成方法

[align=center][size=xx-large][b][color=red]Spring分别与Struts1.x 和Struts2.x集成方法[/color][/b][/size][/align]


1.整合struts1:
a.可以通过action继承spring提供的ActionSupport来获得spring中的bean,
b.配置struts的过程处理器cotroller类为spring的org.springframework.web.struts.DelegatingRequestProcessor
c.用ActionProxy代理Action,Action继承ActionSupport,每个类里可以有多个处理方法


2.Spring不用去管理struts2,因为struts2是本身有Ioc的特性,更容易和Spring进行整合,获得Spring的环境非常容易,struts2的配置文件中说明bean容器为spring就可以很轻松获得spring中的bean对象


Spring整合Struts1.x详细:
Spring 框架与 Struts 框架集成有三个方案

[size=medium][b][color=green]1.使用spring的ActionSupport类集成Struts[/color][/b][/size]
采用这种方式需要修改Struts中的action,使struts的action继承Spring的ActionSupport,这样action中定义的业务逻辑对象可通过getBean()方法从Spring的应用上下文WebApplicationContext中获得,从而达到集成的效果。不过缺点就是使struts的Action和Spring紧密的耦合在一起。

下面介绍此方案集成的步骤

(1).加载applicationContext.xml 有两种方法

一、通过struts-config.xml文件来加载

<plug-in className="org.springframework.web.struts.ContextLoaderPlugin">

<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml">

</set-property>

</plug-in>

二、通过web.xml中配置

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

(2).修改Action 之前继承的父类是Action,需要改成Spring的ActionSupport类,这样就能使用上下文对象获取applicationContext.xml配置文件里的getBean()方法

ApplicationContext context = this.getWebApplicationContext();

业务逻辑对象 = context.getBean("idName");

这样就不需要new来创建对象,把创建的细节很好的封装起来,完全由spring容器plicationContext.xml

来注入管理

[size=medium][b][color=green] 2.使用spring的Action代理集成Struts[/color][/b][/size]
采用此方法需要建立一个Spring的Action代理,代理Struts的Action,当Struts执行Action时执行这个代理。代理会在Spring应用上下文找到真正的StrutsAction,然后就交给这个Action处理,下面看看步骤

(1).加载applicationContext.xml 有两种方法

一、通过struts-config.xml文件来加载

<plug-in className="org.springframework.web.struts.ContextLoaderPlugin">

<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml">

</set-property>

</plug-in>

二、通过web.xml中配置

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

(2)修改Action 为所需要的业务逻辑对象定义属性并增加setXXX()方法,这样做目的是为了使用spring的依赖注入。

(3)修改struts-config.xml文件 修改的内容是<action>元素的type属性值。修改内容为

type="org.springframework.web.struts.DelegatingActionProxy"

(4).配置applicationContext.xml

[size=medium][b][color=green] 3..配置struts的过程处理器cotroller类为spring的[/color][/b][/size]org.springframework.web.struts.DelegatingRequestProcessor

修改Struts控制器来继承struts

为了更直观的在Struts配置文件中显示出Action对应的处理类,可以将Struts配置文件中<action>元素的type属性直接显示为Struts的Action类,执行的时候还会到Spring的上下文中去查找对应的StrutsAction类。

完成这样的过程需要修改controller,将struts-config.xml中的controller改成org.springframework.web.struts.DelegatingTilesRequestProcessor如果Struts中使用了Tiles组件,则可以使用org.springframework.web.struts.DelegatingTilesRequestProcessor来作为controller。如果Struts没有使用Tiles组件,则可以使用org.springframework.web.struts.DelegatingRequestProcessor来作为controller。

下面说说步骤:

(1).加载WebApplicationContext.上下文同以上方法的第一步骤。

(2).新建一个类 EncodingProcessor 并继承DelegatingRequestProcessor 实现 process()方法同时为了解决乱码问题必须在process()方法上添加两行代码:

request.setCharacterEncoding(UTF-8);

response.setContentType("text/html;charset=UTF-8");

(3).修改struts-config.xml文件,即修改Struts的RequestProcessor控制器

使用自定义的控制器controller需要在Struts-config.xml文件中对<controller>元素进行配置,代码如下

  <controller processorClass="EncodingProcessor的类路劲"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值