当前位置: 首页 > news >正文

JFinal快速入门-核心概念-002

引言

JFinal 是一个基于 Java 的轻量级 Web 框架,其设计哲学强调简洁、高效和约定优于配置(COC)。本文档深入阐述 JFinal 的核心架构与设计原则,详细解析从框架初始化到请求处理的完整流程。

框架启动流程

JFinal 框架的启动始于 JFinalConfig 配置类,通过单例模式实现全局唯一实例管理。整个启动过程遵循严格的初始化顺序,确保各组件正确加载和配置。

JFinalConfig

JFinal

JFinalFilter

应用程序

JFinalConfig

JFinal

JFinalFilter

应用程序

框架初始化完成,开始接受请求

init(FilterConfig)

init(JFinalConfig, ServletContext)

configConstant(Constants)

configRoute(Routes)

configPlugin(Plugins)

configEngine(Engine)

configInterceptor(Interceptors)

configHandler(Handlers)

initActionMapping()

initHandler()

initRender()

onStart()

getHandler()

核心配置机制

JFinal 采用 Constants 全局配置对象统一管理所有运行时参数,实现了零 XML 配置的设计目标。开发者通过继承 JFinalConfig 抽象类,在 configConstant 方法中设置这些常量值。

常用配置项

配置项 描述 默认值

devMode 开发模式开关,影响日志输出和模板更新策略 false

encoding 请求与响应的字符编码 UTF-8

maxPostSize HTTP POST 请求最大尺寸 无限制

viewType 默认视图类型(如 FreeMarker、JSP) JFINAL_TEMPLATE

baseUploadPath 文件上传基础路径 webapp/upload

"配置"

Constants

+boolean devMode

+String encoding

+long maxPostSize

+ViewType viewType

+String baseUploadPath

+setDevMode(boolean)

+getDevMode() : boolean

+setEncoding(String)

+getEncoding() : String

+setMaxPostSize(long)

+getMaxPostSize() : long

+setViewType(ViewType)

+getViewType() : ViewType

+setBaseUploadPath(String)

+getBaseUploadPath() : String

JFinalConfig

+configConstant(Constants)

+configRoute(Routes)

+configPlugin(Plugins)

+configEngine(Engine)

+configInterceptor(Interceptors)

+configHandler(Handlers)

+onStart()

+onStop()

Section sources

Constants.java

JFinalConfig.java

URL请求映射

ActionMapping 组件负责将 HTTP 请求 URL 映射到具体的 Controller 和 Action 方法。该过程在框架启动时完成,通过扫描路由配置和控制器类的方法注解建立映射关系。

映射规则

默认映射:当方法名为 index 时,使用控制器路径作为 actionKey

命名约定:普通方法名直接作为 actionKey 的一部分

注解覆盖:使用 @ActionKey 注解可自定义 actionKey

路径参数:支持 /controller/method/para 形式的 URL 参数传递

开始

扫描所有Controller类

查找公共方法

是否有@ActionKey注解?

使用注解指定的actionKey

方法名是否为index?

使用控制器路径

构建默认actionKey

controllerPath/methodName

验证actionKey有效性

注册到mapping映射表

结束

Section sources

ActionMapping.java

请求处理生命周期

JFinalFilter 作为 Servlet 过滤器集成到容器中,拦截所有请求并交由内部处理器链进行处理。这是 JFinal 与 Servlet 容器交互的核心组件。

Servlet

ActionMapping

Controller

Action

ActionHandler

JFinalFilter

客户端

Servlet

ActionMapping

Controller

Action

ActionHandler

JFinalFilter

客户端

alt

[请求未被处理]

发送HTTP请求

设置字符编码

截取上下文路径

调用handle方法

获取Action对象

返回Action

创建Controller实例

初始化请求上下文

执行业务逻辑

返回Render对象

渲染视图

处理完成

返回响应

检查是否为JSP访问

拒绝直接访问JSP

继续过滤器链

**Section sources **

JFinalFilter.java

ActionHandler.java

自动热加载机制

JFinal-Undertow在开发模式下支持类文件的自动热加载,极大提升了开发效率。

https://jfinal.com/doc/1-5

此机制要求 IDE 配置自动编译功能。

http://www.cnnetsun.cn/news/115464.html

相关文章:

  • 基于增量动力分析方法IDA求解易损性曲线的Matlab代码探秘
  • mysql面试题整理
  • 瞄准科技特长生!3 大核心编程考级赛事(CTL/YCL/GESP)深度对比
  • day38打卡
  • JavaEE进阶——SpringBoot日志从入门到精通
  • 结构体简单题
  • 时间序列回归预测:LSTM、CNN - LSTM、PSO - CNN - LSTM、GAPSO - CNN - LSTM大比拼
  • 飞轮储能系统的建模与 MATLAB 仿真:永磁同步电机作为飞轮驱动电机
  • 车间进度总卡壳?生产小工单的3个必备功能,90%企业都用错了
  • 如何用 ShedLock 让 Spring Boot 的定时任务在多实例环境下只执行一次
  • 基于MPC的永磁同步电机非线性终端滑模控制仿真研究
  • ISSA - CNN - BiLSTM多输入单输出回归的Python实现与改进
  • Q学习(Q-learning)路径规划算法实战
  • ANSYS/LS - dyna防爆涂层砂浆砖框架结构爆破荷载损伤响应案例探索
  • 基于TOA/FOA的无源定位方法MATLAB仿真探索
  • 基于一致性算法改进的自适应虚拟阻抗控制:解决双机并联功率分布不均
  • springboot框架对接物联网,配置TCP协议依赖,与设备通信,让TCP变的如此简单
  • 微软和布朗大学最新发现:让AI助手拥有18000多种技能的革命性突破
  • MATLAB仿真:二维TOA传感器网络定位与时钟偏差拟合,最小二乘求解
  • 【参数辨识】基于卡尔曼滤波(KF)估计离散线性系统对垂直起降(VTOL)飞行器的鲁棒辨识附matlab代码
  • 桥梁与隧道安全守护者 抗冰冻型风速监测方案
  • 05-FreeRTOS的内存管理
  • 基于改进蛇优化算法(GOSO/ISO)优化随机森林数据回归预测模型(含初始化种群混沌映射、减法...
  • 基于大数据的人脸识别系统设计与实现开题报告
  • 车载 Android 系统稳定性问题全解析:从性能到黑屏的排查指南
  • 气象在线监测系统助力智慧环境管理,金叶仪器专业气象监测解决方案
  • 【TVM 教程】交叉编译与 RPC
  • 腾讯云国际站代理商的QAPM服务能提供哪些专属服务?
  • 网安副业怎么选?漏洞挖掘、技术博客、竞赛奖金实战,哪个更适配你?
  • 量子计算验证方法:软件测试从业者的转型指南