Struts2集成spring3后action的几种实例方法

我们以具体userAction为例进行说明,代码如下:

package com.tang.dgsx_wx.user.web;

import com.cattsoft.common.web.BaseAction;
import com.cattsoft.dgsx_wx.user.entity.SysUser;
import com.cattsoft.dgsx_wx.user.webservice.UserWsService;

public class UserAction extends BaseAction {

private static final long serialVersionUID = -3513776580197643049L;

private UserWsService userWsService;
/**

* Description:返回用户和微信用户账号绑定页面<br>
* @return
*/
public String userWeiXin(){
return "userWeiXin";
}

public void setUserWsService(UserWsService userWsService) {
this.userWsService = userWsService;
}
}

1:struts的配置中action的class为一个完整的类名,指向一个实际的类时,spring的配置文件中只配置action所依赖的业务组件。这种情况下,action是在struts接收到页面请求后实例化的,实例的同时实例并注入action依赖的全部业务组件(虽然本次请求不一定会用到某些组件)。这种配置,每次请求都会产生新的action实例,这项工作是由spring来完成的。

struts配置文件如:

<action name="UserAction" class="com.cattsoft.dgsx_wx.user.web.UserAction">
<result name="userWeiXin">/WEB-INF/pages/user/userWeixinBind.jsp</result>
</action>

spring配置文件如:

  <bean id="userWsService" class="com.cattsoft.dgsx_wx.user.webservice.UserWsServiceImpl" lazy-init="true">
  </bean>

2:struts的配置中action的class设为spring配置文件一个bean的id,如果这个bean不是懒加载的,则容器启动的时候就会由spring实例好,否则的话也是struts接收到请求后再由spring实例。spring在实例action的时候,只会注入spring配置文件中所配置的action的业务组件,如果未配置,请求方法中直接使用了某业务组件,会报空指针错误。另外要注意的时,如果spring配置文件中action bean配置的是单实例的话,则每次处理请求的action都是同一实例。这样处理请求时,容易引起线程安全问题。

struts配置文件如:

  <action name="UserAction" class="UserAction">
<result name="userWeiXin">/WEB-INF/pages/user/userWeixinBind.jsp</result>
  </action>

spring配置文件如:

  <bean id="userWsService" class="com.tang.dgsx_wx.user.webservice.UserWsServiceImpl">
  </bean>

  <bean id="UserAction" class="com.tang.dgsx_wx.user.web.UserAction">

<property name="userWsService" ref="userWsService"></property>

  </bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以直接运行,并对整合springstruts2步骤及需要注意的事项进行类总结 整合springstruts2总结 1.将struts2spring中的库文件复制到项目下(可以查看WEB-INF\lib目录下的文件) 注意:struts2-spring-plugin-2.3.8.jar和commons-logging.jar文件可以在 struts框架中的找到而spring.jar 在spring框架中 2. 配置struts.objectFactory属性值: 在struts.xml文件中添加 注意:如果有了struts2-spring-plugin-2.3.8.jar文件可以不用配置(本源代码中是没有配置的) 3.配置spring的监听器: 在web.xml中添加 org.springframework.web.context.ContextLoaderListener 4.配置spring的配置文件(可以查看WEB-INF里面的applicationContext.xml文件) 注意:如果是默认,一定要放在WEB-INF中并文件名为applicationContext.xml 5.配置struts中的配置文件 注意:如果让spring来创建对象可以将action中的class属性中的值为spring 中bean 中的id值,如果想让struts来创建可以直接指定类 附加: 整合原理 : Struts2Spring集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar,这个包是同Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到,则由Spring创建,否则由Struts 2框架自身创建,然后由Spring来装配。Spring插件具体有如下几个作用: — 允许Spring创建Action、Interceptror和Result。 — 由Struts创建的对象能够被Spring装配。 — 如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值