- 浏览: 7156385 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (397)
- 架构研究 (44)
- 网络协议-TCP/HTTP (20)
- SPRING (23)
- HIBERNATE 3 (30)
- STRUTS 2 (20)
- Java/J2se (25)
- Servlet/Jsp (9)
- 开发工具IDE (10)
- WEB服务器 (17)
- 前端--Java Script (33)
- 前端--CSS (7)
- OS--Linux (31)
- OS--MAC OS (19)
- MySQL数据库 (19)
- Oracle数据库 (11)
- 项目管理工具 (12)
- 数据报表技术 (4)
- 图像处理技术 (10)
- 其它综合技术 (13)
- 权限管理 (1)
- MyBatis (1)
- 网络安全 (6)
- IO (21)
- PostgreSQL (2)
- Eclipse RCP (1)
- GWT (1)
- 算法 (3)
- Storm (2)
- zookeeper (3)
- 消息 (1)
最新评论
-
bukebuhao:
已解决,打开文件太多。ulimit -n 上次临时生效后再次s ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
bukebuhao:
ds重启后启动不了。报错信息如下,请大神帮助[2018-08- ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
墨上清:
感谢,看完有了一个完整的知识网络。
Spring MVC 教程,快速入门,深入分析 -
云卷云舒灬:
谢谢,学到很多
Spring MVC 教程,快速入门,深入分析 -
luozhy:
非常感谢非常感谢
Project Web Access ActiveX控件 安装
Struts2的Action的线程安全问题
背景 :
1) Struts2 默认会对每一个请求,产生一个新的Action的实例来处理.
2) Spring的Ioc容器管理的bean默认是单实例的.
当Struts2与Spring整合后,由Spring来管理Struts2的Action,会遇到什么问题 ?如何解决 ?
----------------------------------------------------------------
会遇到什么问题?
Struts2与Spring整合后, 由spring来管理Struts2的Action, bean默认是单实例有情况下,会有如下问题:
1) Struts2的Action是单例,其中的FieldError,actionerror中的错误信息会累加, 即使再次输入了正确的信息,也过不了验证.
2) Struts2的Action是有状态的,他有自己的成员属性, 所以在多线程下,会有线程安全问题,这是最大的问题。
----------------------------------------------------------------
如何解决?
方案一: 就是不用单例, spring中bean的作用域设为prototype,每个请求对应一个Action实例.(建议这样做)
方案二: spring中bean的作用域设为session ,每个session对应一个实例,解决了多线程问题.
(如何设置作用域请看: 4 spring中bean的作用域 )再写一个拦截器, 清空 FieldError与actionerror
源自网络 public class ClearFieldErrorInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { ActionSupport actionSupport = (ActionSupport)invocation.getAction(); actionSupport.clearErrorsAndMessages(); String resultCode = invocation.invoke(); return resultCode; }
-------------------------------------------------------------------------------------
总结 :
方案一:bean的作用域设为prototype, 不用担心性能不好, 实际测试过,多实例Action性能没问题.
方案二: 有人担心方案一性能不好, 所有才有了方案二, 不知比方案一性能 能高多少?应该不会高多少。
评论
要保存数据可以用Session或是其它持久类啊。为啥一定要保存在Action里
个人感觉Session保存太多的信息不是好事。另外, spring中bean的作用域设为prototype,每个请求对应一个实例.请求完成后,改实例会被回收,所以,不会有性能问题。
要保存数据可以用Session或是其它持久类啊。为啥一定要保存在Action里
如果每次都要自己去清理的话那会很累人的。而且感觉是自找麻烦。
如果是单例,Action 中数据就是共享的。在多线程下,这种错误是致命的。
无状态的对象单态没问题,如struts1的action,又如一般意义上的service.
另外一个方向来说,如果我的需求就是要让这个action数据全局共享,显然web框架该给我提供这个功能。
一如JSF的backed bean,Action应该可以设置作用域,决定是否可以共享。
对于你需要的数据全局共享,因为独立的提取到service层,action其实不应该作过多的业务处理
如果是单例,Action 中数据就是共享的。在多线程下,这种错误是致命的。
Struts1 就是单例的..如果不可行.就不会这么多人用了...
只要处理的好还是可以用的....
问题就是要处理的好..线程相关的要自己处理了.
Struts1是有ActionForm
Struts2对应的是Action中的一个成员。
用单例不怕把成员实例覆盖么?
如果是单例,Action 中数据就是共享的。在多线程下,这种错误是致命的。
无状态的对象单态没问题,如struts1的action,又如一般意义上的service.
另外一个方向来说,如果我的需求就是要让这个action数据全局共享,显然web框架该给我提供这个功能。
一如JSF的backed bean,Action应该可以设置作用域,决定是否可以共享。
如果是单例,Action 中数据就是共享的。在多线程下,这种错误是致命的。
Struts1 就是单例的..如果不可行.就不会这么多人用了...
只要处理的好还是可以用的....
问题就是要处理的好..线程相关的要自己处理了.
s1跟s2在action的处理上是完全不一样的
s1如果如果设置scope是request,每次请求actionform是新的
s2则是用action取代了s1的actionform和action的功能,提交的数据和渲染到页面的数据都在action里,这是没法共享的,所以s2的action也就不能用单例
如果是单例,Action 中数据就是共享的。在多线程下,这种错误是致命的。
Struts1 就是单例的..如果不可行.就不会这么多人用了...
只要处理的好还是可以用的....
问题就是要处理的好..线程相关的要自己处理了.
如果是单例,Action 中数据就是共享的。在多线程下,这种错误是致命的。
提示你一下:
如果我打开两个浏览器同时提交向一个action会出现什么???
Action 单例的话很带来很多问题的...很多东西都要自己处理
首先action就不应该带有状态了..
如你说的用拦截器去清理状态感觉不是很合适,一般用threadlocal去存那些状态.然后用拦截器去请这个threadlocal就可以了
还有...为啥用spring整合Struts2后action会变单例呢?
这好像是两码事吧...
发表评论
-
Struts2 通过"流"下载文件时显示中文文件名
2010-04-10 22:47 5773Struts2 通过"流"下载文件时对结果 ... -
JSONplugin 下载
2009-03-29 10:44 5433地址是: http://code.google.com/p/j ... -
如何在log4j中设置属性把struts2的debug信息去掉
2009-03-28 19:23 12053struts2 在发开时,控制台如输出大量信息,太烦人了 ... -
Struts2通用的Action配置
2009-03-28 14:03 3549struts.xml 配置一个<action/> ... -
Struts 2中的OGNL
2009-03-28 11:29 2182转自: http://www.blogjava.net/max ... -
常用的Struts 2.0的标志(Tag)介绍
2009-03-28 11:26 1796转自:http://www.blogjava.net/max/ ... -
struts2开发注意事项
2009-03-28 10:30 2509我有一个index.jsp , 是全部的首页, 内容如下 : ... -
12 struts2拦截器
2009-03-19 11:47 2762自己写拦截器, 要认识下面接口 与 类 com.op ... -
11 动态代理的例子
2009-03-18 18:15 1732结构如下 : package com.client ... -
10 一个通用的跳入jsp视图的方法
2009-03-17 12:15 2099后注: 以有新的解决方法,请见 Struts2通用的Actio ... -
9 动态调用Action与Action中方法(二)
2009-03-17 12:02 2284其实有 8 动态调用Action与Action中方法(一) ... -
8 动态调用Action与Action中方法(一)
2009-03-17 11:03 3918Struts1 提供了DispatchAction 实现一个A ... -
7 Struts2输入校验(二)----验证框架
2009-03-17 11:02 3338一 文件名约定: 1) 验证XML的文件名: Acti ... -
6 addActionError与addFieldError
2009-03-17 09:21 6643前面的第5讲中用到了addFieldError, 所以这里就 ... -
5 Struts2输入校验(一)----validate方法-validateXxx方法
2009-03-08 16:32 10034这是一种编码校验的方 ... -
4 Struts2类型转换(二)----集合类型
2009-03-08 14:32 2298情况一 : HTML复选框 与 List<Stri ... -
3 Struts2类型转换(一)----常规类型,自定义类型,错误处理
2009-03-08 11:30 5894Struts2的类型转换是基于OGNL表达式的.有良好的扩展性 ... -
2 Struts2的优点与Struts1的区别:
2009-02-28 08:52 4801单实例与多实例有状 ... -
1 struts2标签的定义文件 struts-tags.tld
2008-08-10 15:59 10640在工程中使用struts2标签 一、 struts ...
相关推荐
spring管理struts的action的代码 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分 * classpath: 关键字特指类路径下加载
让spring管理struts,spring管理hibernate,一步一步,非常简单
struts2+spring+springstruts2+spring+springstruts2+spring+spring
基于注解的Spring+Struts2+Mybatis+Maven项目,Spring 3.0 Struts2 Mybatis3.0
一个已经配置好了的Spring +Struts2项目
spring与struts2整合的小示例,适合初学者,具体说明在博客里
里面有spring+struts2+ibatis整合的jar包,
Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911
集成spring+struts2+springjdbc 图书管理系统,想学配置的来下载
Spring+Struts2+JPA入门小例子
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
Spring+Struts2+Ibatis整合
Spring+Struts2+iBatis简要说明
详细介绍:细谈Spring(十一)深入理解spring+struts2整合(附源码)http://blog.csdn.net/csh624366188/article/details/7666280
META-INF/MANIFEST.MForg.springframework.web.struts.ActionServletAwareProcessor.class org.springframework.web.struts.ActionSupport.class org.springframework.web.struts.AutowiringRequestProcessor.class ...
CXF+spring+struts实现WebService
spring+struts2+mybatis整合的一个小工程,可以用来学习框架搭建,里面是工程的原代码,可以直接导入到eclipse中。
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
spring4 struts2 mybatis3 maven3 整合 测试正常 无误
spring+struts2+mybatis 简单的一个框架