`
wuhongyu
  • 浏览: 404503 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

Struts 1 和 Struts 2 的线程安全

阅读更多

    昨天人问我Struts 2是怎么保证全局变量的线程安全的,跟Struts 1有什么区别,我一时懵了一下,没给解释清,发现自己也不是特别清楚,就google了一下,打算今天做个笔记,结果今没等google呢,就听说google走了,可惜了了啊!

还是说说 Struts 线程安全的事吧。

 

    总的来说,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的线程安全。

 

 

2
0
分享到:
评论
3 楼 di1984HIT 2015-02-06  
写的不错。
2 楼 guo2168 2010-12-21  
  明白的更清晰了
1 楼 _s45 2010-04-23  
讲的很清楚!非常感谢!

相关推荐

    struts1,struts2,webwork,线程安全问题

    struts1,struts2,webwork,线程安全问题,easy518网 http://www.easy518.com/

    Struts1与Struts2本质区别

    2 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的...

    servlet与Struts action线程安全问题分析

    servlet与Struts action线程安全问题分析

    转:struts1与struts2的区别

    struts1与struts2的区别,线程模式,servlet的依赖...

    struts1和struts2区别

    不同点 Action 类 线程模式 Servlet 依赖 可测性 捕获输入 表达式语言 绑定值到页面(view) 类型转换 校验 Action执行的控制 文档更详细……

    Struts线程安全

    struts线程安全,里面讲述了struts中的一些关于线程的安全方面的介绍。

    servlet与Struts action线程安全问题分析(pdf)

    servlet与Struts action线程安全问题分析 <br>===================================================== Servlet的线程安全问题只有在大量的并发访问时才会显现出来,并且很难发现,因此在编写Servlet程序时要...

    java struts2学习笔记之线程安全

    主要为大家详细介绍了java struts2学习笔记之线程安全,感兴趣的朋友可以参考一下

    Struts2与struts1不同

    Struts2和Struts1的不同  Action 类: 线程模式:

    Struts 2 全版本漏洞检测工具 18.09 过waf版

    5、作者对不同的struts2漏洞测试语句做了大量修改,执行命令、上传功能已经能通用。 6、支持HTTPS。 7、支持GET、POST、UPLOAD三种请求方法,您可以自由选择。(UPLOAD为Multi-Part方式提交) 8、部分漏洞测试支持...

    struts2 会话技术

    深入剖析struts2 的各种存储数据的范围,解析因为存储范围混乱而导致的线程混乱, 解决web开发总的界面跳转混乱问题

    struts1的服务器端验证

    struts1的服务器端验证,一个很好的验证配置文件,线程安全问题有保障

    struts2 annotation 批量下载

    通过产生临时文件下载之后,再通过线程删除临时文件

    Struts中action线程安全问题解析

    主要介绍了Struts中action线程安全问题解析,涉及实例代码,还是挺不错的,具有一定参考价值,需要的朋友可以了解下。

    Struts2与Struts1的对比

    Struts2与Struts1的对比 对Action 类、线程模式、捕获输入、表达式语言、 绑定值到页面(view)、类型转换、Action执行的控制 等等读做了解析.

    Struts 2.0

    清晰的介绍了Struts 2.0框架的工作流程,Action线程安全,程序入口,配置文件。

    struts1和struts2的比较

    基于Action类,线程模型,servlet依赖,易测性,接受输入,表达式语言等的比较

    struts2.doc

    struts2.doc struts 1 和struts 2比较 Action 类 线程模式 Servlet 依赖 可测性 捕获输入 表达式语言 绑定值到页面(view) 类型转换 校验 Action执行的控制 等 自己总结的一些东西

Global site tag (gtag.js) - Google Analytics