JFinal 源码解析-MVC部分

首先从请求入口看起,应用初始化时加载web.xml的JFinalFilter,和configClass
1665932-20190419180137794-1829556000.png

从这段配置可以看出jfinal和spring mvc入口类似,通过一个实现Servlet Filter的过滤器来拦截所有请求。

接下来看看JFinalFilter的源码,可以看出首次请求触发Filter的初始化动作时,通过init方法加载了应用上下文路径、插件、编码、路由配置:
1665932-20190419180150137-1050937381.png

接下来就是请求的处理:
1665932-20190419180200226-103646947.png

handler用了责任链模式,将Global添加的handler放在前面,ActionHandler在最后:

1665932-20190419180206459-853221059.png

1665932-20190419180229292-863700535.png

1665932-20190419180234625-873808238.png

1665932-20190419180239998-1661772882.png

在JFInalFilter的doFilter方法中,对handler.handle的调用会逐步走完这条责任链,ActionHandler最后执行,继续看看ActionHandler的代码:

1665932-20190419180245414-683784225.png

到这里已经按uri拿到了Action进而拿到Controller,执行完url对应的controller方法,根据render结果决定页面跳转还是json渲染,此处render策略靠策略模式实现。

1665932-20190419180253238-1585985252.png

当应用停止时,执行destory方法,通知jvm可以回收handler,停止插件,执行afterStopJfinal方法,生命周期结束了

转载于:https://www.cnblogs.com/powerjiajun/p/10737623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值