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

    大致就这样了吧

  • 相关阅读:
    对scrapy经典框架爬虫原理的理解
    js的处理技巧
    网站登陆的两种方法
    scrapy批量下载图片
    [转]解决scrapy下载图片时相对路径转绝对路径的问题
    scrapy爬取西刺网站ip
    logging的使用方法
    scrapy中的response
    scrapy中的request
    scrapy.Spider的属性和方法
  • 原文地址:https://www.cnblogs.com/timelyxyz/p/3430803.html
Copyright © 2011-2022 走看看