zoukankan      html  css  js  c++  java
  • 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

    大致就这样了吧

  • 相关阅读:
    HDU 4868 Information Extraction(2014 多校联合第一场 H)
    Transformations 方块转换
    catalan 数——卡特兰数(转)
    算法分析与设计——矩阵连乘问题
    算法设计与分析——多边形游戏(DP)
    蓝桥杯算法训练 最大最小公倍数
    codeforces 518B. Tanya and Postcard
    并查集
    高精度的进制转换
    线段树(转)
  • 原文地址:https://www.cnblogs.com/timelyxyz/p/3430803.html
Copyright © 2011-2022 走看看