您的位置:首页 > 编程语言 > Java开发

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

2015-08-14 23:13 453 查看
我们以具体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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: