总的来说,Struts1 的 Action 是单例模式,因此开发者必须保证它是线程安全的或是同步的,因为Struts 1中每个Action仅有一个实例来处理所有的请求。
但是在用Struts 1开发时并没有考虑到线程安全问题,这是因为我们在Action中使用的基本都是局部变量,而“局部变量是线程安全的。因为每执行一个方法,都会在独立的空间创建局部变量,它不是共享的资源。局部变量包括方法的参数变量”(忘了引自哪了)。在Struts 1中,所有的变量都是定义在Action中我们要执行的方法里的(Action中的execute方法或DispatchAction中指定要执行的方法),我们用于封装客户端请求参数的ActionForm,也是作为一个参数传入,也属于局部变量,因此,不存在线程安全问题。
Struts 2 的 Action 对象为每一个请求产生一个实例,因此,虽然在Action中定义了很多全局变量,也不存在线程安全问题。
Struts 2框架在处理每一个用户请求的时候,都建立一个单独的线程进行处理,值栈ValueStack也是伴随着局部线程而存在的。在该线程存在过程中,可以随意访问值栈,这就保证了值栈的安全性。
在Struts 2中,ActionContext是一个局部线程,这就意味着每个线程中的ActionContext内容都是唯一的。所以开发者不用担心Action的线程安全。
Struts1和Struts2都有什么区别?
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
struts1和struts2的区别
struts1和struts2都是基于MVC的开源框架,不过从配置都实现都是完全不同的两个框架。
Servlet 应用服务器 企业应用 框架 多线程 -
Struts1和Struts2的区别和对比
Struts1和Struts2的区别和对比:Action 类: • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍
Struts 框架 IOC Spring Servlet -
struts1与struts2的区别
本文是转载,来源互联网,在此感谢原作者! — 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的
struts1 struts2 开发者 封装 表达式语言 -
struts2与struts1的区别1
在struts1中action只有一个对象,会出现线程同步的问题,在struts2中每次访问都是一个新的对象,不会出现线程同步的问题
职场 休闲 struts2与struts1的区别1 -
struts2和struts1认识
1.Str
struts 业务逻辑 java 字符串 xml