Spring管理的Struts2的Action的全程安全问题

HDMI接口协议 接口HDMI(High-Definition Multimedia Interface),新一代多媒体接口标准。即高清多媒体接口。它能够同时传输视频和音频,简化了设备的接口和连线;同时提供了更高的数据传输带宽,可以传输无压缩的数字音频及高分辨率视频信号。HDMI 1.0 版本于 2002 年发布,最高数据传输速度为 5Gbps;而2017 年发布的 HDMI 2.1 标准的理论带宽可达 48Gbps。1、能够同时传输视频和音频,简化了设备接口与连线。2、提供了更高的数据传输带宽, 阅读详情

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

 

Java代码 复制代码  收藏代码
  1. 源自网络   
  2.   
  3. public class ClearFieldErrorInterceptor extends AbstractInterceptor {   
  4.   
  5. @Override  
  6. public String intercept(ActionInvocation invocation) throws Exception {   
  7. ActionSupport actionSupport = (ActionSupport)invocation.getAction();   
  8. actionSupport.clearErrorsAndMessages();   
  9. String resultCode = invocation.invoke();   
  10. return resultCode;   
  11. }   
源自网络

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性能没问题.


方案二:  有人担心方案一性能不好, 所有才有了方案二, 不知比方案一性能 能高多少?应该不会高多少。

数控弯管机xyz转换ybc的算法_数控弯管机技术的更新和应用.pdf 您所在位置:网站首页 > 海量文档&nbsp>&nbsp汽车/机械/制造&nbsp>&nbsp机械/模具设计数控弯管机技术的更新和应用.pdf3页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所... 阅读详情

相关推荐

OCCT(Open CASCADE Technology)入门-2.搭建开发环境

安装完成后,在【扩展】菜单下会看到【Qt VS Tools】菜单,打开子菜单【options】进入qt配置窗口。打开VS后随便创建一个新项目,进入开发环境主页,打开顶部菜单【扩展】->【管理扩展】打开管理扩展窗口。然后点击右下角【创建】,一路【next】即可,最后会进入到开发主界面,得到一个下面的工程结构。好了,到这里基本的环境我们已经安装好了,下面我们开始创建项目并配置开发环境。打开顶部菜单【项目】,点击最后一个菜单项【xxx属性】,进入项目配置界面。这里的配置一般不用改,我们看【Versions】

2501_91235145的博客 2875

关于Struts2中action请求之间共享数据

struts1的Action 是在第一次请求的时候实例化的,比如第一次请求Action时会创建这个Action, 之后并没有放弃这个Action实例 而是将Action实例放在一个Map 中 当你再一次请求这个Action的时候会先从这个Map中去找,如果找到了就直接用,没找到才创建。换句话就是仅有Action的一个实例来处理所有的请求。 struts2中当请求到达Action时,Action对...

潜力股wjk的博客 1265

浅谈车联网概述-1

车联网技术目前在车企中应用广泛,车联网通过车载传感器、无线通信等技术,能够将车辆上百的传感器数据上传至云端,当前智能网联车辆可以理解为一个“大号”手机。

Hello, World! 新能源汽车智能网联工程师,分享日常工作思考。 560

由Spring管理的Struts2的Action的全程安全问题

Struts2的Action的线程安全问题   背景 : 1) Struts2 默认会对每一个请求,产生一个新的Action的实例来处理. 2) Spring的Ioc容器管理的bean默认是单实例的. 当Struts2与Spring整合后,由Spring来管理Struts2的Action,会遇到什么问题 ?如何解决 ? -------------...

SiC B2B2C Shop大型B2B2C商城软件产品,使用Java语言开发,高性能高扩展性高安全性分布式。可帮助你快速的建立大型B2B2C电商系统 301

卡尔曼滤波调参避坑指南:Q/R参数怎么设?实测5种传感器场景

本文针对卡尔曼滤波在工程实践中Q/R参数设置的难题,提供了一套实用的调参避坑指南。通过分析过程噪声方差Q与测量噪声方差R的物理意义与博弈关系,并结合温度传感器、陀螺仪、超声波测距等五种典型传感器场景的实测效果对比,总结出从噪声估算、离线仿真到收敛测试的系统性调参方法论,帮助工程师快速实现稳定有效的滤波效果。

weixin_29174141的博客 803

使用嘉立创绘制STM32F103T8C6最小系统板

使用嘉立创EDA绘制一个属于自己的STM32最小系统板

weixin_67887035的博客 1万+

struts2为每个线程提供一个action实例

1.struts2为每个线程提供一个action实例,多线程访问时不会出现问题。当使用spring管理struts2的action实例对象时,scope必须配置为prototype或者session,若配置为singleton则多线程访问时会出现问题,例如actionMessage,fieldError等信息会累加,多用户访问时有的用户访问到的是另一个用户的数据。 2.scope=“pro...

wdreams的专栏 359

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

关于struts2 的单例和多例及线程安全的问题

我知道struts 2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象。原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面。如果Action是单实例的话,这些数据在多线程的环境下就会相互影响,例如造成别人填写的数据被你看到了。它存在着线程不安全。 而struts 1的Action是单实例的,因为它的数据保存在

yelloo的博客 5683

【NVIDIA-GB200-1】国内第一份生产环境实战安装配置教程,配置安装脚本,nvidia gb200配置教程-复制即用;gb200驱动安装

GB200 的高性能通信依赖。

jundao1997的专栏 705

Qt for WebAssembly环境搭建

一、前言 二、Ubuntu 1、在线安装Qt15 在线安装下载器:https://download.qt.io/official_releases/online_installers/ 安装时记得勾选WebAssembly,如下: 2、安装依赖 # Install Python sudo apt-get install python2.7 # Install CMake (optional, only needed for tests and building Binaryen) sudo apt

贝勒里恩的博客 3668

Struts2 action 并发访问线程安全问题

本人最近二年一直在用struts2,对struts2的安全问题一直没多大关心,认为一个大家可以公认的框架,应该不会出现大的安全问题,自己考虑到的东西,别人估计已经考虑到了。为了自己用的踏实就做了一次小小的测试。可能我的这次测试没测试到要点,还喜欢大家多提意见,小弟在这里先说一声谢谢了。 测试目的:测试struts2 同一个action连续2次请求是否线程安全 测试内...

cd_cd的专栏 601

机器学习笔记 - 神经辐射场(NeRF)的简要概述

神经辐射场十分重要。在表示和渲染 3D 场景领域,神经辐射场 (NeRF) 在准确性方面取得了巨大突破。给定底层场景的多个图像,NeRF 可以从任意视点重建该场景的高分辨率、2D 渲染图。与局部光场融合 (LLFF) 和场景表示网络 (SRN) 等现有技术相比,NeRF 更能够捕获场景外观和几何形状的复杂组成部分(例如,依赖于视图的反射和复杂的材料)。NeRF的研究目的是合成同一场景不同视角下的图像。

学以致用 知行合一 1693

Struts2的Action的线程安全问题

背景 : 1) Struts2 默认会对每一个请求,产生一个新的Action的实例来处理. 2) Spring的Ioc容器管理的bean默认是单实例的. 当Struts2与Spring整合后,由Spring来管理Struts2的Action,会遇到什么问题 ?如何解决 ? ---------------------------------------------------

gongzhufanlulu的博客 1727

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

spring struts2整合之action产生问题

   Spring和Struts2的整合只需一个插件包,不过笔者在练习的过程中,被一个小问题给郁闷了好久。按道理来说Spring和Struts2整合之后,Action的创建以及属性注入是有Spring来管理的,是否由Spring来管理Action的创建与属性注入还是要取决于我们的配置,如下为ModulAction的配置:  /modul/index.jsp     眨眼

收破烂的 8106

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

struts2 整合spring 及 由spring治理struts的Action实例

1.当指定struts.objectFactory为spring时,struts2框架就会把bean转发给spring来创建,装配,注入。但是bean创建完成之后,还是由struts容器来治理其生命周期 2. 在某些时候,你可能希望不仅仅让SPRING创建和装配Action对象,还希望让SPRING完全治理这些对象,如希望使用AOP或者希望使用acegi时。这时候,只需要在spring的配置文件中定义这些action即可。

it_man的专栏 5379

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Spring管理Struts action的安全问题

1、在没有集成之前,struts本身是怎么管理的? struts配置 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "ht...

chouzhulun1683的博客 202

Struts Action的线程安全问题

提一个问题:Struts 1.x和Struts 2的Action是不是线程安全的?  Struts 1.x在第一次请求某个Action时,会创建这个Action实例。但之后再请求该Action实例时,就用之前创建好的这个Action处理,即它是单例模式。所以Struts 1.x的Action不是线程安全的。  但是为什么我们在使用Struts 1.x开发的时候一般不用考虑线程安全问题呢

opmic的专栏 4141

关于Spring整合Struts2时Action管理的疑惑小解

看了黑马姜涛老师讲解的SSH整合,在 在这个图中很疑惑为什么不直接把Action交给Spring管理,直接注入Service即可 <bean name="CustomerAction" class="com.awf.sshIntegrate.web.action.CustomerAction"> <property name="CustomerService" ref...

Humman_an的博客 273

Struts2整合Spring创建的Action同步问题

前提:测试反馈 1.关于个人中心头像隔断时间自动被更改;2014/12/18 2.穿戴设备手环用户实时上传数据间隔报异常;(原则上是每天用户在XXX表只有一条记录,但是查看数据库竟然发现有些日期竟然出现多条记录)2014/1/12 原因: struts2的对象被拖管给spring管理(spring的bean在Ioc容器范围内默认都是singlen的),而且如果项目中也不是采取了st

土鳖&only29 1551

在struts.xml文件中使用spring代理,管理action

使用代理,指明处理action的xml文件,然后原来action里指定的类都改成type="org.springframework.web.struts.DelegatingActionProxy"          例子   你要spring管理action 可以

1763

如何使用Spring来管理Struts中的Action

当指定struts.objectFactory为spring时,struts2框架就会把bean转发给spring来创建,装配,注入。但是bean创建完成之后,还是由struts容器来管理其生命周期。配置方式: (1)struts.xml中: xml 代码:  (2)struts.properties中: java 代码: struts.objectFac

lw0121的专栏 425

由Spring管理的Struts2的Action的单实例问题

背景  : 1) Struts2  会对每一个请求,产生一个Action的实例来处理. 2) Spring的Ioc容器管理的bean默认是单实例的. 当Struts2 与Spring整合后,由spring来管理Struts2 的Action,会遇到什么问题  ?如何解决  ? ---------------------------------...

张飞的IT专栏 161

引入了 struts2-spring-plugins 包后 Spring 就会管理你的 Action

Struts2 与 Spring 结合,使用 Spring 来管理 Action 实例,在项目中引入了struts2-spring-plugin-2.2.1.jar 包。然后想到的是既然是要用 Spring 来管理 Action 实例,就得在 struts.xml 里加上: 1 &lt;constant name="struts.objectFactory" va...

langdashu 191

Struts2 是如何把Action交给Spring托管的?

首先,来看看如何让Spring 来管理Action. 1.在struts.xml中加入   有两种整合方式:      (1) 将Struts的业务逻辑控制器类配置在Spring的配置文件中,Action中引用的业务类一并注入。                 (这样的处理,必须将action类的scope配置成property) Xml代码   bea

三兆的学习笔记 2013
上一篇: Hibernate 一对多 多对一 非主键 问题
下一篇: 下载文件迅雷不支持问题的原因
lb8607
博客等级 码龄18年 17粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值