文档章节

Jfinal 运行流程,以及源代码解读

 丁建祥
发布于 2016/12/12 16:35
字数 413
阅读 276
收藏 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页面

 

 

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 66
码字总数 28522
作品 0
青岛
私信 提问
JFinal 3.0 发布,重新定义模板引擎

本次回归码坛为小伙伴们带来的是重新定义过的 Template Engine 将极速开发继续贯彻到 View 层。 Java 模板引擎界已被 Freemarker、Velocity 统治多年,但其在这些年的发展可谓乏善可陈,究其...

JFinal
2017/01/22
17.4K
183
JFinal启动过程

@JFinal 你好,想跟你请教个问题:你好,最近有幸用JFinal做项目,想请问一下,JFinal的具体启动流程是如何的?SysConfig继承JFinalConfig,JFinal,JFinalFilter等类的启动过程的流程是如何...

有梦想的小孩
2013/05/14
686
6
用代理给Model增加getter和setter方法行不行?

@JFinal 你好,想跟你请教个问题: 我的项目组中很多人喜欢用带getter和setter方法的model,使用jfinal后突然没了getter、setter,他们感觉 非常的不习惯,我总是劝他们改变一下习惯,但是你也...

V小刚
2014/03/29
339
1
jfinal本地调试方法

使用JFinal一段时间了,偶尔也看看源代码,比较好的方式就是启动项目,进入源代码调试。分享一下使用myeclipse本地调式方法。 新建Java Project或者Web Project都可以,项目名取为jfinal,一路...

ohaozy
2015/08/06
1K
3
现在才明白很多jar包 命名带有dev,src等的作用

以前一直以为要调试只能把源代码加到项目中 但是直接加进去要报错 必须要引用很多其他jar包 所以一直不方便 今天突然想到jfinal分了 JFinal-bin-with-src-1.5.jar 和 JFinal-bin-1.5.jar 会不...

本人纯属虚构
2013/10/16
2.9K
5

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 自定义你的空间

通过对你的空间进行界面的自定义能够让你的空间更加出类拔萃。 如果你具有空间管理员权限,你可以修改你空间的颜色配色,添加你自己的空间标识,选择是否在你空间中显示边栏。或者你可以进入...

honeymose
47分钟前
1
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部