play 1.2.4的action执行前后的加载逻辑
——杂言:最近在整理这一年的笔记,打算慢慢温故一遍,然后搬到博客里头来。这篇是2013.06.18时候整理的关于action执行前后的一些载入先后顺序逻辑。我的理解可能有偏差,如果有错误的,请读者们及时提醒我矫正,谢谢。共勉。
调用大致流程如下:
play.mvc.ActionInvoker:Invoke an action after an HTTP request.
ActionInvoker中的方法触发时间是在:服务器接受到HTTP request之后,调用Controller中的action之前。它具体做的事情有:
1)初始化行同中的request,scope,session,flash对象。对了,他还为HTTPrequest定义了一个标记变量resolved。
2)加载cache中的那些方法的变量
3)重载Enchancer中的classPool(ThreadLocal里的),这个和热编译有关,重载之后的enhancer可以动态只检测japidviews里的html声称的java的class文件的变化情况;还有跟play处理html对应的java中throw的Exception有关。部分注解的原话是这样子的:“Enhance global catch to avoid potential unwanted catching of play.mvc.results.Result”
(关于Enchancer这个之后有时间要研究下)
4)接下里就是各种Method,Class,Exception,pluginCollection等的处理
注意,上面的4个小点里做的处理都是发生在action真正被调用之前!!下面才开始真正处理业务逻辑里的action。
1)检查@Before
2)检查cache(注意:仅限以下这种request:
(request.method.equals("GET") || request.method.equals("HEAD")) && actionMethod.isAnnotationPresent(CacheFor.class))
cacheAction和action的diff:先检查cache中action,如果有,则运行,然后传出actionResult;处理完cacheAction之后检查actionResult是否为空,如果为空,则开始执行我们在接受到的request中的action。action的处理结果最后是保存到cache里哦,这个很神奇
3)执行@After
大致就这样了吧
转载于:https://www.cnblogs.com/timelyxyz/p/3430803.html
play 1.2.4的action执行前后的加载逻辑相关推荐
- 解决微信小程序 app onLaunch异步请求,在没有请求执行完就加载首页了的问题
今天在调试小程序的过程中,进了一个坑,程序加载需要先获取用户信息,然后保存到Storage中,然后首页去 Storage取信息,根据用户信息去查本地服务器数据列表,可是发现第一次进入的时候,数据总是加 ...
- flink 任务执行类的加载
执行具体任务的TaskManager在要执行向相应的具体的任务之前,都是通过submitTask()方法得到具体所要执行的任务的. 在submitTask()中,部署的任务信息并不包含具体所要执行的目 ...
- 执行DLL模块加载失败
分享下解决执行动态库DLL模块报错加载失败的过程 查了CSDN里很多文章,判断此报错为缺少该动态库所依赖的动态库 第一次解决:用工具depends22_x86,缺少许多,查找所缺少的动态库并补上.补完 ...
- html5页面加载执行动作,页面加载完成后执行JS的5种方式
在js和jquery使用中,常用到页面加载完成后执行某一方法.经过整理,大概是五种方式.javascript 1.jQuery的$( function(){} );html 2.jQuery的$(do ...
- js 延迟几秒执行ifarme_延时加载JavaScript代码提高速度_javascript技巧 -
...值: none 0 e1. 利用animation属性实现循环间的延时执行实例教程简介:先来介绍一下animation定义和用法,animation 属性是一个简写属性,用于设置六个动画属性:2 ...
- C语言实现shellcode通用框架二:文件下载执行或内存加载
简介: 承接接上篇.上篇(C语言实现shellcode通用框架一:解密执行)我们的第二层shellcode核心代码都是事先加密好嵌套在第一层shellcode中,核心代码更新起来不方便.所以联网更新显 ...
- python 执行shellcode_Python内存加载shellcode
生成 首先生成一个测试的msf shellcode msfvenom -p windows/x64/exec CMD=calc.exe -f python 把其中的shellcode复制出来留待待会使 ...
- 怎么会执行sql 懒加载 没用_太神奇的 SQL 查询经历,group by 慢查询优化!
作者:dijia478 来源:https://www.cnblogs.com/dijia478/p/11550902.html 一.问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在3 ...
- 浏览器中Javascript的加载和执行
在刚学习Javascript时曾对该问题在小组内做个一次StudyReport,发现其中的基础还是值得分析的. 从标题分析,可以加个Javascript的加载和执行分为两个阶段:加载.执行.而加载即浏 ...
最新文章
- SQL与NoSQL区别-查询方式
- 通过Nginx,Tomcat访问日志(access log)记录请求耗时
- a = 3 中3在栈还是堆_56.堆、栈、方法区(3.0)
- 【联邦学习】FATE 集群部署 step2
- 欧盟出台首个网络与信息安全指导性法律
- asp.net网站中CrystalReport的简单应用
- python3调用adb命令_如何使用Python执行adb命令?
- asp.net core 编译mvc,routing,security源代码进行本地调试
- 【Brain】脑智前沿科普|用数学解释大脑学习的过程
- Java DataOutputStream writeInt()方法及示例
- modbustcp封装使用获取设备数据示例
- 芒果超媒2021年净利润21亿元 芒果TV会员数达5040万
- 【报告分享】快手创作者商业价值报告.pdf
- [Ubuntu] 0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::17)]
- jsp上传文件到数据库和从数据库下载文件
- python安卓手机编程入门自学_编程入门学习路线(附教程推荐)
- Cocos2dx 3.2移植到Android 完全可行的方法
- perl中tr的用法
- 添加小度在家显示无法连接服务器,小度在家突然连不上网了
- 从钉钉后台获取考勤数据(其他数据获取类似)
热门文章
- mpls工作原理通俗解释_马自达3 压燃上市的关头,解释X发动机的工作原理
- OpenCV-Python实战(16)——人脸追踪详解
- 解决OpenCV4出现“/usr/bin/ld:cannot find -lcudart_static.../usr/bin/ld: cannot find -lx86_64-linux-gnu“问题
- python 字符串 变量_Python检查变量是字符串
- CoreMotion 框架
- 4. Linux 系统目录
- 小博老师精选Java十大CMS ——建站神器
- node中字节流接收问题【转】
- UIView 移除子视图
- struts2标签库的使用