首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts1 跟 struts2中Action什么时候实例化

2012-11-16 
struts1 和 struts2中Action什么时候实例化struts1 和 struts2中Action什么时候实例化精帖1:http://blog.c

struts1 和 struts2中Action什么时候实例化
struts1 和 struts2中Action什么时候实例化
精帖1:http://blog.csdn.net/lfsf802/article/details/7277013
精帖1:http://blog.csdn.net/wmj2003/article/details/5018927


线程模式:

Struts1: Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。

Struts2: Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)


Action执行的控制:

Struts1:支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2:支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。



struts1的Action 是在第一次请求的时候实例化的,比如第一次请求LoginAction时会创建这个Action, 之后并没有放弃这个Action实例 而是将Action实例放在一个Map 中 当你再一次请求LoginAction的时候会先从这个Map中去找,如果找到了就直接用,没找到才创建.


struts2 的Action 是每次请求的时候都会帮你创建一个对象, 我个人认为原因在于 struts2中的Action因为要有收集数据的javaBean的功能, 所以你会想的到,它如果是单例模式的话,会有什么危险


热点排行