——杂言:最近在整理这一年的笔记,打算慢慢温故一遍,然后搬到博客里头来。这篇是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执行前后的加载逻辑相关推荐

  1. 解决微信小程序 app onLaunch异步请求,在没有请求执行完就加载首页了的问题

    今天在调试小程序的过程中,进了一个坑,程序加载需要先获取用户信息,然后保存到Storage中,然后首页去 Storage取信息,根据用户信息去查本地服务器数据列表,可是发现第一次进入的时候,数据总是加 ...

  2. flink 任务执行类的加载

    执行具体任务的TaskManager在要执行向相应的具体的任务之前,都是通过submitTask()方法得到具体所要执行的任务的. 在submitTask()中,部署的任务信息并不包含具体所要执行的目 ...

  3. 执行DLL模块加载失败

    分享下解决执行动态库DLL模块报错加载失败的过程 查了CSDN里很多文章,判断此报错为缺少该动态库所依赖的动态库 第一次解决:用工具depends22_x86,缺少许多,查找所缺少的动态库并补上.补完 ...

  4. html5页面加载执行动作,页面加载完成后执行JS的5种方式

    在js和jquery使用中,常用到页面加载完成后执行某一方法.经过整理,大概是五种方式.javascript 1.jQuery的$( function(){} );html 2.jQuery的$(do ...

  5. js 延迟几秒执行ifarme_延时加载JavaScript代码提高速度_javascript技巧 -

    ...值: none 0 e1. 利用animation属性实现循环间的延时执行实例教程简介:先来介绍一下animation定义和用法,animation 属性是一个简写属性,用于设置六个动画属性:2 ...

  6. C语言实现shellcode通用框架二:文件下载执行或内存加载

    简介: 承接接上篇.上篇(C语言实现shellcode通用框架一:解密执行)我们的第二层shellcode核心代码都是事先加密好嵌套在第一层shellcode中,核心代码更新起来不方便.所以联网更新显 ...

  7. python 执行shellcode_Python内存加载shellcode

    生成 首先生成一个测试的msf shellcode msfvenom -p windows/x64/exec CMD=calc.exe -f python 把其中的shellcode复制出来留待待会使 ...

  8. 怎么会执行sql 懒加载 没用_太神奇的 SQL 查询经历,group by 慢查询优化!

    作者:dijia478 来源:https://www.cnblogs.com/dijia478/p/11550902.html 一.问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在3 ...

  9. 浏览器中Javascript的加载和执行

    在刚学习Javascript时曾对该问题在小组内做个一次StudyReport,发现其中的基础还是值得分析的. 从标题分析,可以加个Javascript的加载和执行分为两个阶段:加载.执行.而加载即浏 ...

最新文章

  1. SQL与NoSQL区别-查询方式
  2. 通过Nginx,Tomcat访问日志(access log)记录请求耗时
  3. a = 3 中3在栈还是堆_56.堆、栈、方法区(3.0)
  4. 【联邦学习】FATE 集群部署 step2
  5. 欧盟出台首个网络与信息安全指导性法律
  6. asp.net网站中CrystalReport的简单应用
  7. python3调用adb命令_如何使用Python执行adb命令?
  8. asp.net core 编译mvc,routing,security源代码进行本地调试
  9. 【Brain】脑智前沿科普|用数学解释大脑学习的过程
  10. Java DataOutputStream writeInt()方法及示例
  11. modbustcp封装使用获取设备数据示例
  12. 芒果超媒2021年净利润21亿元 芒果TV会员数达5040万
  13. 【报告分享】快手创作者商业价值报告.pdf
  14. [Ubuntu] 0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::17)]
  15. jsp上传文件到数据库和从数据库下载文件
  16. python安卓手机编程入门自学_编程入门学习路线(附教程推荐)
  17. Cocos2dx 3.2移植到Android 完全可行的方法
  18. perl中tr的用法
  19. 添加小度在家显示无法连接服务器,小度在家突然连不上网了
  20. 从钉钉后台获取考勤数据(其他数据获取类似)

热门文章

  1. mpls工作原理通俗解释_马自达3 压燃上市的关头,解释X发动机的工作原理
  2. OpenCV-Python实战(16)——人脸追踪详解
  3. 解决OpenCV4出现“/usr/bin/ld:cannot find -lcudart_static.../usr/bin/ld: cannot find -lx86_64-linux-gnu“问题
  4. python 字符串 变量_Python检查变量是字符串
  5. CoreMotion 框架
  6. 4. Linux 系统目录
  7. 小博老师精选Java十大CMS ——建站神器
  8. node中字节流接收问题【转】
  9. UIView 移除子视图
  10. struts2标签库的使用