2009年6月29日星期一
来源:互联网 发布:中国银行mac企业网银 编辑:程序博客网 时间:2024/05/01 12:36
Struts1中,Action默认是独立的
Struts2中,Action默认是是独立使用的(Struts2中的变量是全局变量)
但是Spring 管理Struts2时,默认scope="singleton",意思是Struts2的Action是公用的
所以在Spring 和Struts2配合使用时,必须是scope="prototype",这样就是独立的了。
以下是资料
----------------------------------------------------------------------------------------------------------------------
struts的配置文件中可以设置action对象的声明周期,但是struts2是不行的。
struts2是从webwork发展而来的,xwork有一个objectfacotry类,这个工厂类有一个线程池thSelf
=========
private static ThreadLocal<ObjectFactory> thSelf
action对象就是由这个线程池来维护的,所以如果你想知道它的生命周期是如何,可以查看这个类(com.opensymphony.xwork2.ObjectFactory)源代码。
通常和spring整合使用的时候,在struts.xml文件要配置一个元素
<constant name="struts.objectFactory" value="spring" />
或者在struts.property文件中配置
struts.objectFactory = spring
这样,我们可以在spring的配置文件中的bean元素里用一个scope属性来配置action是用什么生命周期,singleton,prototype,request,session等等
--------------------------------------------------------------------------------------------------------------------
下面是struts2+hibernate+spring配置文件的一部分,以前都是仿造已经写好的bean的配置。有一次 scope="prototype"忘记写了结果出了问题
项目中对一个表的增删该操作是用一个action,这个action有add,update,delete,save这些方法,添加和修改是共用一个页面,当页面得到id时代表进行的修改操作,反之是添加操作。因为在配置spring的bean是忘了写scope="prototype"所以每次添加时都显示最后一次访问过的记录
找了很长时间,原来是spring bean出了问题。 scope="prototype" 会在该类型的对象被请求时创建一个新的action对象。如果没有配置scope=prototype则添加的时候不会新建一个action,他任然会保留上次访问的过记录的信息。
--------------------------------------------------------------------------------------------------------------------
- 2009年6月29日星期一
- 2009年6月1日星期一
- 2007年4月29日 星期一
- 2010年3月29日星期一
- 2009年4月20日星期一
- 2009年8月10日---星期一
- 2007年6月4日 星期一
- 2007年6月11日 星期一
- 2007年6月18日 星期一
- 2007年6月25日 星期一
- 学习随笔--2009年10月12日星期一
- 2005年4月25日 星期一
- 2006年9月18日星期一
- 2006年9月16日星期一
- 2007年4月16日 星期一
- 2007年4月23日 星期一
- 2007年5月14日 星期一
- 2007年5月21日 星期一
- MyEclipse的快捷键
- SQL Union和SQL Union All用法
- 有关字节对齐的介绍
- VS2008快捷键大全
- 什么是事务
- 2009年6月29日星期一
- C#中调用一些API函数
- SQL语句教训总结
- 变长结构体
- 糟糕的面试
- CListCtrl使用技巧
- 一个简单的Win32 SDK窗口程序
- delphi 的类型转换函数
- 第三章作业