servlet、spring mvc、struts2 、play的http请求处理
来源:互联网 发布:淘宝显示全球购的标志 编辑:程序博客网 时间:2024/06/18 12:54
servlet: serlvet是单例多线程的,里面有一个线程池,针对每次请求会分配一个线程去处理请求。
spring mvc:默认是用一个Controller处理所有请求,优点是不用每次创建一个Controller,减少了对象创建和垃圾收集的时间。如果Controller中定义了实例变量,就会存在并发线程的安全性问题,所以我们最好避免在controller中定义实例变量。如果非要controller中定义实例变量的话,可以在spring的配置文件中将作用域scope从singleton改成prototype,这样在每次请求的时候都会创建一个新的controller。或者直接使用ThreadLocal变量,ThreadLocal能保证变量在各个线程间是独立存在的,不会相互干扰,内部存储是一个k/v,将当前线程作为key,存储对象作为value存储。保证每个线程操作自己独立的变量。避免发生窜数据的问题。
structs2 :每次请求都会创建一个Action对象,所以相比struts1只在第一次请求时创建Action实例,以后每次相同的请求将直接从内存中读取,同servlet一样是struts1是单例、线程不安全的,structs2是线程安全的。
play : play是最近接触的一个框架,play框架处理多个请求时会复用一个线程(dev模式下只有一个线程处理所以请求,线上的线程个数一般和cpu核数相等)。所以在ation中使用同步锁时,不仅会锁住添加同步锁的action,同个controller下的action也会被阻塞,但是play有提供await方法,我们可以将需要锁住处理的部分另开一个线程处理,使用await将本次请求先挂起一定的时间,保持连接,本次请求的执行会暂时移出线程池,到时间再恢复现场,继续执行。如此线程不会被阻塞,这样就能继续处理其他请求。如果感兴趣的话推荐可以到这看看:play框架http异步处理。
- servlet、spring mvc、struts2 、play的http请求处理
- Spring MVC 的http请求处理过程
- Spring Web MVC 处理Http请求的大致过程
- Spring Web MVC 处理Http请求
- spring mvc 实现http异步请求处理
- (推荐)Spring MVC 处理Http请求过程
- Servlet处理HTTP请求
- servlet处理http请求
- servlet处理http请求
- Spring mvc 请求处理
- Spring MVC的处理请求流程问题
- Spring MVC 处理请求的整体过程
- spring mvc对异步请求的处理
- spring mvc对异步请求的处理
- Spring Web MVC的请求处理流程
- Spring Web MVC处理请求的流程
- spring mvc对异步请求的处理
- spring mvc对异步请求的处理
- Elasticsearch5.3.1 IK分词,同义词/联想搜索设置
- CentOS7搭建NAS,包括NFS、ISCSI
- 记录一篇生动形象的傅里叶变换
- Codeforces Round #441 div2 C. Classroom Watch
- ftp服务器的搭建
- servlet、spring mvc、struts2 、play的http请求处理
- Windows下TensorFlow安装
- 添加 搜索 HTML
- js的replace如何全部替换目标字符串
- windows下Superset开发环境的搭建
- python3.5版本中的zip函数
- 高并发的核心技术中如何实现幂等性问题的研究
- Eclipse中java文件编码格式修改
- Kali Linux工具集——信息搜集