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>
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>
相关文章推荐
- JavaEE细节问题01——访问web资源的相对路径和绝对路径
- JAVA 23 种设计模式
- Struts之mvc设计模式
- Java 抽象类与接口的区别
- java项目经验
- 修改配置Eclipse提示代码以及空格上屏
- 深入分析 Java 中的中文编码问题
- Java JDBC 学习笔记 - 注册驱动类的4种方式
- Java学习路线图,专为新手定制的Java学习计划建议
- java中大数处理和高精度小数处理(so easy)
- [转载] Java并发编程:Callable、Future和FutureTask
- Java源文件编译出错:类文件包含错误的类 请删除该文件或确保文件位于正确的类路径子目录中
- 使用Java、Servlet 生成二维码
- spring+quartz定时任务管理
- 转战Androidstudio之项目eclipse迁移
- Java实现Kmeans算法
- 【转】JAVA中的浅拷贝和深拷贝
- 用hibernate和spring整合做小例子对数据库增删改查
- Java JDBC 学习笔记 - 可更新的结果集
- Java中的大树处理