- 浏览: 7189212 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 5836Struts2 通过"流"下载文件时对结果 ... -
JSONplugin 下载
2009-03-29 10:44 5527地址是: http://code.google.com/p/j ... -
如何在log4j中设置属性把struts2的debug信息去掉
2009-03-28 19:23 12098struts2 在发开时,控制台如输出大量信息,太烦人了 ... -
Struts2通用的Action配置
2009-03-28 14:03 3612struts.xml 配置一个<action/> ... -
Struts 2中的OGNL
2009-03-28 11:29 2222转自: http://www.blogjava.net/max ... -
常用的Struts 2.0的标志(Tag)介绍
2009-03-28 11:26 1841转自:http://www.blogjava.net/max/ ... -
struts2开发注意事项
2009-03-28 10:30 2583我有一个index.jsp , 是全部的首页, 内容如下 : ... -
12 struts2拦截器
2009-03-19 11:47 2804自己写拦截器, 要认识下面接口 与 类 com.op ... -
11 动态代理的例子
2009-03-18 18:15 1773结构如下 : package com.client ... -
10 一个通用的跳入jsp视图的方法
2009-03-17 12:15 2142后注: 以有新的解决方法,请见 Struts2通用的Actio ... -
9 动态调用Action与Action中方法(二)
2009-03-17 12:02 2319其实有 8 动态调用Action与Action中方法(一) ... -
8 动态调用Action与Action中方法(一)
2009-03-17 11:03 3993Struts1 提供了DispatchAction 实现一个A ... -
7 Struts2输入校验(二)----验证框架
2009-03-17 11:02 3379一 文件名约定: 1) 验证XML的文件名: Acti ... -
6 addActionError与addFieldError
2009-03-17 09:21 6688前面的第5讲中用到了addFieldError, 所以这里就 ... -
5 Struts2输入校验(一)----validate方法-validateXxx方法
2009-03-08 16:32 10075这是一种编码校验的方 ... -
4 Struts2类型转换(二)----集合类型
2009-03-08 14:32 2350情况一 : HTML复选框 与 List<Stri ... -
3 Struts2类型转换(一)----常规类型,自定义类型,错误处理
2009-03-08 11:30 5949Struts2的类型转换是基于OGNL表达式的.有良好的扩展性 ... -
2 Struts2的优点与Struts1的区别:
2009-02-28 08:52 4855单实例与多实例有状 ... -
1 struts2标签的定义文件 struts-tags.tld
2008-08-10 15:59 10691在工程中使用struts2标签 一、 struts ...
相关推荐
《整合Hibernate、Struts2与Spring的学生信息管理系统详解》 在Java Web开发领域,整合Hibernate、Struts2和Spring框架是构建高效、可维护性高的应用程序的常见实践。本系统——"学生信息管理系统",正是这种整合...
- **事务管理**:Struts2可以配合Spring框架进行事务控制,保证数据一致性。 4. **项目结构分析**: - **01**等文件可能代表项目的不同模块或资源,如Java源代码、配置文件、静态资源等。 - **jsp源码**:表示...
Struts2作为MVC(模型-视图-控制器)框架,负责处理用户请求和业务逻辑,Spring则提供了依赖注入和事务管理等功能,而Hibernate作为持久层框架,简化了数据库操作,实现了对象关系映射(ORM)。这种架构具有良好的...
在这个示例中,Spring可能会被用来管理Struts2的Action实例,实现服务层和DAO层的事务控制,并且可能使用Spring的IoC容器来配置数据源。 Hibernate作为ORM(对象关系映射)工具,是SSH中的数据库访问层。它使得Java...
SSH2框架,即Struts2、Spring和Hibernate的集成,为开发提供了强大的支持,它简化了Web应用的构建,提高了代码的可维护性和可扩展性。 首先,我们需要理解SSH2框架的核心组件: 1. **Struts2**:这是一个基于MVC...
首先,Struts2是Java企业级应用中广泛使用的MVC(Model-View-Controller)框架,它简化了Web应用的开发,通过Action、Interceptor、Result等核心概念,实现了业务逻辑与表现层的分离。在都市供求信息网中,Struts2被...
开发者可以通过Spring的AOP实现日志记录、安全控制等通用功能,利用Struts的拦截器进行请求预处理和后处理,以及使用Hibernate简化数据库操作。同时,由于这三个框架都是开源项目,有着丰富的社区支持和众多的扩展库...
Struts通过Action类和配置文件来定义业务流程,实现了模型与视图、控制器的解耦,简化了大型项目的开发工作。 3. **Hibernate框架**:是一个持久层框架,主要处理数据库操作。它提供了一种对象关系映射(Object-...
2. **Action类**:每个Struts应用的核心是Action类,它处理来自用户的请求,调用业务逻辑,并返回一个结果到视图层。 3. **配置文件**:Struts应用需要配置struts-config.xml文件,定义Action映射、Form Bean、结果...
全程使用注解扫包,无struts action的配置文件,无Hibernate配置文件, Spring自动扫包来获取bean 数据库内容太简单,不再上传。 只是一个小实例。 请用MyEclipse导入项目。 我的版本是MyEclipse 2013
- **配置SSH框架**: 配置Spring的bean定义、Struts2的action配置以及Hibernate的实体映射。 - **编写业务逻辑**: 实现Struts2的动作类,通过Spring注入jbPM5的服务,启动和控制流程。 - **界面展示**: 创建视图...
- Spring的IoC容器负责组件间的依赖注入,JavaScript进行前端表单验证,Struts标签和Hibernate数据持久化技术实现了用户管理、租房信息发布等功能。 - 作为独立开发者,我完整地完成了项目开发,加深了对SSH框架和...
【用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置-->...
【用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置-->...
用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置--> ...
Spring2.0配置--> applicationContext.xml Hibernate3.2配置--> hibernate.cfg.xml JSP文件--> 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--> 业务Action.java和导出Excel的...
2. **j2ee.jar**:这个文件是Java 2 Platform, Enterprise Edition (J2EE)的API库,包含了JSP、Servlet、EJB(Enterprise JavaBeans)等组件的接口定义,用于开发分布式、多层的企业级应用。JSP和Servlet是Web开发中...
例如,Struts2项目会涉及到Action、struts.xml配置文件、拦截器、业务控制器、输入校验以及文件上传和下载等功能。Hibernate项目则要掌握其核心组件和高级应用,包括对象映射、查询接口、事务处理等。Spring 3项目则...
3. **框架整合**:整合Struts2、Hibernate和Spring三大框架,实现MVC架构下的数据持久化和业务逻辑处理。 4. **路径配置**:合理设置绝对路径与相对路径,确保程序运行的稳定性。 5. **用户安全注销**:提供安全的...