博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JFinal 源码解析-MVC部分
阅读量:4577 次
发布时间:2019-06-08

本文共 577 字,大约阅读时间需要 1 分钟。

首先从请求入口看起,应用初始化时加载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

你可能感兴趣的文章
rem.js
查看>>
Unslider.js Tiny Sample
查看>>
面向对象内存分析
查看>>
Dijkstra BZOJ2763 [JLOI2011]飞行路线
查看>>
前端快捷键
查看>>
重新认识成功、失败、错误、平凡、笨拙
查看>>
【模板】Hash
查看>>
洛谷 1485 火枪打怪
查看>>
Fortran编译器
查看>>
初识go
查看>>
java安装Jboss插件
查看>>
宝塔apache配置
查看>>
shell脚本中使用nohup执行命令不生效
查看>>
PHP 文件上传七牛云
查看>>
ZT:Unity与C++之间进行socket通信
查看>>
Ural 1517. Freedom of Choice 后缀数组
查看>>
【转载】Maven入门实践
查看>>
1-4-03:奇偶数判断
查看>>
【SQL Server备份恢复】提高SQL Server备份速度
查看>>
命令行简介(附加参考资料)
查看>>