一、JFinal是什么?
如果把Java Web开发比作开餐馆:
Spring全家桶:豪华大厨房,设备齐全但装修复杂
JFinal:高效外卖车,点火就上路,三分钟出餐!
本质:一个基于Java的极简Web框架,专注快速开发+代码精简,号称“配置少到哭,效率高到飞”!
二、核心部件拆解
1. Controller:接单员小姐姐
public class HelloController extends Controller {
public void index() {
renderText("您的外卖订单已接单!");
}
}
功能:接收用户请求(订单),处理完返回响应(送餐)
比喻:餐厅前台,顾客说“要份黄焖鸡”,她立刻通知厨房
2. Model:魔法厨房
// 自动对应数据库user表
public class User extends Model<User> {
public static final User dao = new User().dao();
}
// 查询用户
User.dao.findById(1); // 自动生成SQL:SELECT * FROM user WHERE id=1
黑科技:ActiveRecord模式,自动生成SQL
优势:不用手写SQL,就像告诉厨房“做份黄焖鸡”,具体怎么杀鸡你不用管
3. Interceptor:保安大叔
public class LogInterceptor implements Interceptor {
public void intercept(Invocation inv) {
System.out.println("【保安日志】有人访问:" + inv.getActionKey());
inv.invoke(); // 放行
System.out.println("【保安日志】处理完毕!");
}
}
功能:在请求前后执行逻辑(如权限检查、日志记录)
场景:像进商场前测体温,离开时“欢迎下次光临”
三、极速开店指南(快速上手)
步骤1:装修图纸(配置类)
public class DemoConfig extends JFinalConfig {
public void configRoute(Routes me) {
me.add("/hello", HelloController.class); // 路径映射
}
}
解读:告诉JFinal,/hello地址由HelloController接单
步骤2:启动外卖车
public class StartApp {
public static void main(String[] args) {
JFinal.start("src/main/webapp", 8080, "/", 5);
}
}
效果:访问http://localhost:8080/hello,秒见“订单已接单”!
步骤3:连接数据库(加装后厨)
public class DemoConfig extends JFinalConfig {
public void configPlugin(Plugins me) {
DruidPlugin dp = new DruidPlugin("jdbc:mysql://localhost/db", "user", "password");
me.add(dp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
arp.addMapping("user", User.class);
me.add(arp);
}
}
黑科技:自动关联数据库表与Java类,厨房秒变智能
四、特色功能尝鲜
1. 模板引擎:自动打包机
<!-- 模板文件:order.html -->
您好,#(userName),您点的#(foodName)马上送出!
// Controller中渲染
setAttr("userName", "张三");
setAttr("foodName", "黄焖鸡");
render("order.html");
效果:自动替换变量,生成动态页面
2. Validator:质检员
public class OrderValidator extends Validator {
protected void validate(Controller c) {
validateRequired("address", "msg", "请填写送餐地址!");
}
}
// 在Controller中使用
@Before(OrderValidator.class)
public void submit() {
// 验证通过才执行
}
作用:自动检查参数是否合法,像接单前确认地址是否在配送范围
五、为什么选择JFinal?
适用场景:
快速原型开发 🚴♂️
中小型项目 🏪
微服务中的单个模块 📦
六、避坑指南
表名与类名要对齐
数据库表user → Java类User
否则ActiveRecord魔法失效!
路由配置别手抖
me.add("/order", OrderController.class); // 对 me.add("order", OrderController.class); // 错(少了斜杠)
插件按需加载
需要Redis?装jfinal-redis插件
需要MQ?装jfinal-qmsg插件
就像外卖车加装奶茶机、烤肠机
七、总结
JFinal三字经:
配的少,跑的快;
代码简,效率嗨;
中小项目它最帅!
下次开新项目时,不妨试试这辆“极速外卖车”,保证让你的开发体验快到飞起! 🚗💨