Jfinal 运行流程,以及源代码解读
Jfinal 运行流程,以及源代码解读
丁建祥 发表于10个月前
Jfinal 运行流程,以及源代码解读
  • 发表于 10个月前
  • 阅读 31
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

今天事情不错,抽出一段时间看了看Jfinal 的元代码:

一、项目启动

Jfinal 是在一个叫做JFinalFilter的过滤器中启动的,在这里边做了大量的初始化工作,config里的配置都一一加载进来。过滤器继承自javax.servlet.Filter 拥有三个默认的方法;init  doFilter destroy

项目启动的过程就是执行init的过程:首先根据web.xml传过来的类名实例化一个config对象,然后将配置信息加载进来

        jfinalConfig.configConstant(constants);                initLoggerFactory();
        jfinalConfig.configRoute(routes);
        jfinalConfig.configPlugin(plugins);                    startPlugins();    // very important!!!
        jfinalConfig.configInterceptor(interceptors);
        jfinalConfig.configHandler(handlers);

接着初始化actionMapping handerler render I18n TokenManager 等

初始化handler的时候是把所有的handler按照前后顺序串联起来,执行action 的时候挨个执行。

actionMapping  生成的方法是将actionKey和action对象组成map,action对象包括controllerKey, actionKey, controllerClass, method, methodName, actionInters, viewPath.

生成action对象的过程也同时将interceptor和Controller关联起来,interceptor数组是controller的一个对象,这就就解释了在执行controller 的之前先要执行inteceptor的方法。

二、一个链接到返回页面整个执行过程(servlet部分省略)

首先还是先交给过滤器的doFilter方法,然后交与handler执行,这里的handler要根据配置依次执行,由next对象控制,最后交与actionHandler,由actionHandler 进入具体方法。上边说了,进入具体方法之前先要经由配置的interceptor,具体action执行 完之后如果有渲染页面,需要freemark(也可以其他)。将response的返回数据与模板结合生成html页面

 

 

共有 人打赏支持
粉丝 0
博文 47
码字总数 7878
×
丁建祥
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: