Servlet、Struts2以及SpringMvc中的线程安全
Servlet是单例多线程
struts2每次处理一个请求,struts2就会实例化一个对象,这样就不会有线程安全的问题了。Struts2 是线程安全的,当然前提情况是,Action 不交给 spring管理,并且不设置为单例。
Spring mvc 线程不安全的原因
请求时多线程请求的,但是每次请求过来调用的Controller对象都是一个,而不是一个请求过来就创建一个controller对象
原因就在于如果这个controller对象是单例的,那么如果不小心在类中定义了类变量,那么这个类变量是被所有请求共享的,
这可能会造成多个请求修改该变量的值,出现与预期结果不符合的异常
在单例的情况下 相当于所有类变量对于每次请求都是共享的,每一次请求对类变量的修改都是有效的
那有没有办法让controller不以单例而以每次请求都重新创建的形式存在呢?答案是当然可以,只需要在类上添加注解@Scope("prototype")即可,这样每次请求调用的类都是重新生成的(每次生成会影响效率)还有其他方法么?答案是肯定的!使用ThreadLocal 来保存类变量,将类变量保存在线程的变量域中,让不同的请求隔离开来
注:servlet Struts1 SpringMvc 是线程不安全的,当然如果你不使用实例变量也就不存在线程安全的问题了。
Servlet、Struts2以及SpringMvc中的线程安全相关推荐
- 聊聊Servlet、Struts1、Struts2以及SpringMvc中的线程安全
前言 很多初学者,甚至是工作1-3年的小伙伴们都可能弄不明白?servlet Struts1 Struts2 springmvc 哪些是单例,哪些是多例,哪些是线程安全? 在谈这个话题之前,我们先了解 ...
- Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照...
2019独角兽企业重金招聘Python工程师标准>>> Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考 ...
- springmvc中数据绑定,controler开发细节,以及与struts2对比
springmvc和struts2的本质区别(以下为我抄的): struts2:通过在action类中设置成员变量接收参数,所以struts2必须使用多例. springmvc:请求数据,通过参数绑定 ...
- struts1,struts2,springMVC对比
struts1,struts2,springMVC对比 [参考原文:http://blog.csdn.net/xiaokui008/article/details/8980429] Struts1官方 ...
- Struts1、Struts2及SpringMVC对比
Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...
- Struts2和SpringMVC简单配置以及区别总结
Struts2: struts 2 是一个基于MVC(mode-view-con)设计模式的Web应用框架,是由Struts1和WebWork两个经典框架发展而来的. 工作流程: 1客户端浏览器发出H ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
2019独角兽企业重金招聘Python工程师标准>>> 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制 ...
- 框架:SpringMVC中Interceptor拦截器的两种实现
Spring中使用Interceptor拦截器 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证, ...
- SpringMVC中使用Interceptor拦截器
2019独角兽企业重金招聘Python工程师标准>>> SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理. ...
最新文章
- mybaits十九:bind绑定
- 逻辑回归的向量化实现样例
- 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!
- java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...
- java 静态缓存_JAVA缓存的实现
- VS2005的类设计器(Class Designer)中,如果显示让类继承接口,而不是实现接口?
- linux 查找并删除
- PSPNet :语义分割
- 北斗卫星导航系统的研究及应用
- Rockchip BT.656 TX 和 BT.1120 TX 开发指南
- 智慧城市,定位“需求”
- java打开jnlp_如何打开jnlp
- opencv 图片上画一条线
- 解决cesium widgets.css is not exported from package
- 浏览器主页被2345劫持捆绑解决方案---极其简单!
- 神武可以同时登陆服务器账号吗,解读新系统神武账号仓库 同号共用仓库
- Grafana 仪表盘
- Less is more——如何修复setup violation?
- java跳出循环的几种方式
- 海康威视录像机如何添加大华摄像头