为什么Strut2.x要改变Struts1中Action的单例模式,而为每个request申请一个Action实例?

xxgamexx 2009-04-07 02:25:37
RT


在DOC看到他们两的区分,但并没有找到为什么这么做


Threading Model

Struts 1 Actions are singletons and must be thread-safe since there will only be one instance of a class to handle all requests for that Action. The singleton strategy places restrictions on what can be done with Struts 1 Actions and requires extra care to develop. Action resources must be thread-safe or synchronized.

Struts 2 Action objects are instantiated for each request, so there are no thread-safety issues. (In practice, servlet containers generate many throw-away objects per request, and one more object does not impose a performance penalty or impact garbage collection.)
...全文
559 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SINCE1978 2009-04-18
  • 打赏
  • 举报
回复
说实话
挺无聊
xxgamexx 2009-04-18
  • 打赏
  • 举报
回复
总结下:

1,为了多并发的线程安全


2,为了去掉FORM这个大头
zabaglione 2009-04-10
  • 打赏
  • 举报
回复
帮顶,学习中
xxgamexx 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xdkkerry 的回复:]
线程安全啊
[/Quote]

这个应该不是最主要的 线程安全做好了也可以的 不然S1也不会有那么多人用了
hndth 2009-04-10
  • 打赏
  • 举报
回复
up
xdkkerry 2009-04-10
  • 打赏
  • 举报
回复
线程安全啊
xxgamexx 2009-04-09
  • 打赏
  • 举报
回复
up! thanks

另一方面是不是S2 删除了ACTIONFROM元素,而REQUEST传过来的参数给了实例ACTION,为了避免覆盖的危险,所以要为每个ACTION分配实例???

还有我有看到S2 用了接口来代替原先的ABSTRACT CLASS 他说这样为定制服务提供了可能性 我有点不明白?
silverend 2009-04-09
  • 打赏
  • 举报
回复
Struts2 FormBean算是看上去最大的一个变化了;
原因很简单:采用WebWork的核心引擎,用OGNL自动捕获属性值,而不用手工通过FormBean来获取,完全自动了。
silverend 2009-04-08
  • 打赏
  • 举报
回复
最好的方式其实就是按他们的原版解释。
楼主贴出来的大部分已经解释了。

Struts 1: server启动后,对用户的每个request, 后台controller会mapping其对应的ACTION,如果是首次访问,则initialize。 单例的好处:多个request共享一个ACTION instance,节省了资源,但由于共享,not thread safe,需要额外小心。

Struts 2: 采用Webwork的核心引擎,每个request会new 出一ACTION instance, 不用考虑thread safe问题。
xxgamexx 2009-04-08
  • 打赏
  • 举报
回复
up!

67,518

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧