Servlet是单例多线程

struts2每次处理一个请求,struts2就会实例化一个对象,这样就不会有线程安全的问题了。Struts2 是线程安全的,当然前提情况是,Action 不交给 spring管理,并且不设置为单例。

Spring mvc 线程不安全的原因
请求时多线程请求的,但是每次请求过来调用的Controller对象都是一个,而不是一个请求过来就创建一个controller对象
原因就在于如果这个controller对象是单例的,那么如果不小心在类中定义了类变量,那么这个类变量是被所有请求共享的,
这可能会造成多个请求修改该变量的值,出现与预期结果不符合的异常
在单例的情况下 相当于所有类变量对于每次请求都是共享的,每一次请求对类变量的修改都是有效的
那有没有办法让controller不以单例而以每次请求都重新创建的形式存在呢?答案是当然可以,只需要在类上添加注解@Scope("prototype")即可,这样每次请求调用的类都是重新生成的(每次生成会影响效率)还有其他方法么?答案是肯定的!使用ThreadLocal 来保存类变量,将类变量保存在线程的变量域中,让不同的请求隔离开来

注:servlet Struts1 SpringMvc 是线程不安全的,当然如果你不使用实例变量也就不存在线程安全的问题了。

Servlet、Struts2以及SpringMvc中的线程安全相关推荐

  1. 聊聊Servlet、Struts1、Struts2以及SpringMvc中的线程安全

    前言 很多初学者,甚至是工作1-3年的小伙伴们都可能弄不明白?servlet Struts1 Struts2 springmvc 哪些是单例,哪些是多例,哪些是线程安全? 在谈这个话题之前,我们先了解 ...

  2. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照...

    2019独角兽企业重金招聘Python工程师标准>>> Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考 ...

  3. springmvc中数据绑定,controler开发细节,以及与struts2对比

    springmvc和struts2的本质区别(以下为我抄的): struts2:通过在action类中设置成员变量接收参数,所以struts2必须使用多例. springmvc:请求数据,通过参数绑定 ...

  4. struts1,struts2,springMVC对比

    struts1,struts2,springMVC对比 [参考原文:http://blog.csdn.net/xiaokui008/article/details/8980429] Struts1官方 ...

  5. Struts1、Struts2及SpringMVC对比

    Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...

  6. Struts2和SpringMVC简单配置以及区别总结

    Struts2: struts 2 是一个基于MVC(mode-view-con)设计模式的Web应用框架,是由Struts1和WebWork两个经典框架发展而来的. 工作流程: 1客户端浏览器发出H ...

  7. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    2019独角兽企业重金招聘Python工程师标准>>> 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制 ...

  8. 框架:SpringMVC中Interceptor拦截器的两种实现

    Spring中使用Interceptor拦截器 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证, ...

  9. SpringMVC中使用Interceptor拦截器

    2019独角兽企业重金招聘Python工程师标准>>> SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理. ...

最新文章

  1. mybaits十九:bind绑定
  2. 逻辑回归的向量化实现样例
  3. 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!
  4. java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...
  5. java 静态缓存_JAVA缓存的实现
  6. VS2005的类设计器(Class Designer)中,如果显示让类继承接口,而不是实现接口?
  7. linux 查找并删除
  8. PSPNet :语义分割
  9. 北斗卫星导航系统的研究及应用
  10. Rockchip BT.656 TX 和 BT.1120 TX 开发指南
  11. 智慧城市,定位“需求”
  12. java打开jnlp_如何打开jnlp
  13. opencv 图片上画一条线
  14. 解决cesium widgets.css is not exported from package
  15. 浏览器主页被2345劫持捆绑解决方案---极其简单!
  16. 神武可以同时登陆服务器账号吗,解读新系统神武账号仓库 同号共用仓库
  17. Grafana 仪表盘
  18. Less is more——如何修复setup violation?
  19. java跳出循环的几种方式
  20. 海康威视录像机如何添加大华摄像头

热门文章

  1. English trip -- VC(情景课)4 A Health
  2. C#WinForm 窗体单例模式 反射单例
  3. Java集合 -- HashSet 和 HashMap
  4. getParameter
  5. 龙芯笔记本可能以闹剧收场
  6. python 惰性属性_在Python中处理惰性JSON-“期望属性名称”
  7. spark基础之checkpoint机制
  8. linux ip不设置网关,linux下ip与网关不在同一段配置
  9. (20)FPGA数据接口同步化
  10. 如何测量代码运行时间