JFinal 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
JFinal 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: Apache
开发语言: Java 查看源码 »
操作系统: 跨平台
收录时间: 2012-03-18
提 交 者: JFinal

    JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)

JFinal有如下主要特点:

  • MVC 架构,设计精巧,使用简单

  • 遵循 COC 原则,支持零配置,无 XML

  • 独创 Db + Record 模式,灵活便利

  • ActiveRecord 支持,使数据库开发极致快速

  • 极简、高性能 Template Engine,十分钟内掌握基本用法

  • 自动加载修改后的 Java 文件,开发过程中无需重启服务

  • AOP 支持,拦截器配置灵活,功能强大

  • Plugin 体系结构,扩展性强

  • 多视图支持,支持 EnjoyFreeMarkerVelocity、JSP

  • 强大的 Validator 后端校验功能

  • 功能齐全,拥有传统 SSH 框架绝大部分核心功能

  • 体积小仅 777 KB,且无第三方依赖

以下是JFinal实现Blog管理的示例:

1:控制器(支持FreeMarker、JSP、Velocity、JSON等等以及自定义视图渲染)

@Before(BlogInterceptor.class)
public class BlogController extends Controller {
    
    @Inject
    BlogService service;

    public void index() {
        set("blogPage", service.paginate(getParaToInt(0, 1), 10));
    }

    public void add() {
    }
	
    @Before(BlogValidator.class)
    public void save() {
        getModel(Blog.class).save();
    }
	
    public void edit() {
        set("blog", service.findById(getParaToInt()));
    }
	
    @Before(BlogValidator.class)
    public void update() {
        getModel(Blog.class).update();
    }
	
    public void delete() {
        service.deleteById(getParaToInt());
    }
}

2:BlogService所有业务与sql全部放在Service层

public class BlogService {

    private Blog dao = new Blog().dao();
    
    public Page paginate(int pageNumber, int pageSize) {
        return dao.paginate(pageNumber, pageSize, "select *", "from blog order by id asc");
    }
    
    public Blog findById(int id) {
        return dao.findById(id);
    }
    
    public void deleteById(int id) {
        dao.deleteById(id);
    }
}

3:Model(无xml、无annotation、无attribute)

public class Blog extends Model {
   
}

    实际开发中,建议使用 jfinal 内置的生成器为 Blog 生成 BaseBlog,在拥有动态性好处的同时,再拥有 setter、getter 方法。生成器的实例代码可以下载 jfinal 官网的 jfinal_demo_for_maven.zip 获取。

4:Validator(API引导式校验,比xml校验方便N倍,有代码检查不易出错)

public class BlogValidator extends Validator {
    protected void validate(Controller controller) {
        validateRequiredString("blog.title", "titleMsg", "请输入Blog标题!");
        validateRequiredString("blog.content", "contentMsg", "请输入Blog内容!");
    }
	
    protected void handleError(Controller controller) {
        controller.keepModel(Blog.class);
    }
}

 5:拦截器(在此demo中仅为示例,本demo不需要此拦截器)

public class BlogInterceptor implements Interceptor {
    public void intercept(Invocation inv) {
        System.out.println("Before invoking " + inv.getActionKey());
        inv.invoke();
        System.out.println("After invoking " + inv.getActionKey());
    }
}

5:最新文档与最新下载

JFinal官方微信欢迎您的加入:  

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

JFinal 的相关博客

JFinal之JFinal学习日记

记录JFinal学习过程中遇到的问题、心得

jfinal(1)—jfinal-undertow 下开发 jfinal项目

1、创建标准的 maven web项目 没装maven和没创建maven web项目的可以看这三篇! maven安装 Eclipse和maven工具的集成 Eclips...

JFinal源码走读_1_jfinal初始化

jfinal的入口 步进分析 jfinal核心初始化方法jfinalinit分析 ConfigconfigJFinaljfinalConfig分析 ConfigconfigJFinaljfinal...

也聊聊JFinal

技术小站: http://www.kiratechblog.com/ 最近给项目选型的时候,选了JFinal这套框架,开始的时候有些小伙伴会不理解,在Jav...

jfinal收集

jfinal demo修改 http://www.oschina.net/question/260040_45773 jfinal 输出json http://www.oschina.net/question/812908_7...

JFinal 给力

在OSC社区 偶然机会接触到了JFinal,感觉零配置、路由模式、快速调试、轻量级代码等优点实在给力,主人的更新DEMO版本更是全面...

JFinal教程

自学JFinal总结 前言:每次搭建ssm框架时,就像搬家一样,非常繁杂,并且还容易出错。正好了解到JFinal极简,无需配置即可使用...

jfinal-scheduler 极简JFinal任务插件

基于cron4j以及ScheduledThreadPoolExecutor实现的简单的任务调度插件。

评论 (561)

加载中
说jfinal想要吊打spring想太多,spring的生态和体系太庞大了,
10/24 18:11
回复
举报
打分: 力荐
666
10/23 11:01
回复
举报
一点都不意外,国庆之后咨询页又被 #JFinal# 霸屏了。作为最受欢迎的国产框架之一,祝 JFinal 越来越好。
10/13 18:23
回复
举报
围观围观
05/30 17:20
回复
举报
决定一个项目开发周期的根本不是写代码的速度,而且永远在改变的需求,所以。。
01/17 14:11
回复
举报
JFinal软件作者
jfinal 提升的当然不仅仅是写代码的速度,而是全方位含义上的开发速度,此外还有学习成本,jfinal 完整实现了 MVC + ORM + AOP + Template Engine , 但只有两万多行代码,所以你可以完全掌控 要实际用上才能体会,谁用谁爽翻
05/28 16:51
回复
举报
以官网访问之慢,很难相信框架所表述的快速和轻便
2019/12/18 13:17
回复
举报
JFinal软件作者
今天发新版本,访问的人数多,所以官网慢了, 平常访问很快的 jfinal 官网用的最低配的阿里云只额外增加了 1M 带宽,平时访问是相当快的
2019/12/18 17:32
回复
举报
今天就快多了
2019/12/20 19:45
回复
举报
JFinal软件作者
jfinal 官网的配置很低,人多的时候访问很慢,还请见谅
2019/12/21 15:15
回复
举报
@JFinal ,波总,发现个问题,JFinalFilter#createJFinalConfig是protected,但jfinalConfig却是私有的。
2019/12/03 18:35
回复
举报
JFinal软件作者
jfinal 4.8 已改进了这里,已发布到了 maven 中心库,赶紧升级,超爽的
2019/12/10 20:03
回复
举报
类似Hibernate的面向对象方式,操作数据库是不是更简单些? API尽量简单, 用户使用时,是不用关心实现的. 就是Hibernate 的联接太复杂了,还要配置一大堆信息, 复杂查询也不好用. Bee比Hiberante更简单易用。 相互学习下. https://www.oschina.net/news/111659/bee-1-6-0-released
2019/11/30 23:02
回复
举报
@JFinal ,波总,有机会对aop进一步增强吗?比如注入完回调,比如类似Guice的强大的bindInterceptor功能;建议波总在官网给广大jfinal爱好者一个roadmap,阐述一下jfinal未来的版本走向,我们非常非常非常地关注。
2019/11/28 10:21
回复
举报
JFinal软件作者
jfinal 接下来会先专注社区建设,然后才是 jfinal 自身的迭代进化。 jfinal 经过八年多的迭代、打磨,已经是十分成熟的 Web MVC + ORM + AOP + Template engine 框架。2019 年的改进主要都是细节的打磨。对于 jfinal 来说,当务之急是建立一个完善的生态体系,否则项目再好,也难以发挥其价值
2019/11/28 11:52
回复
举报
了解,社区建设确实很重要,希望JFinal越来越好。
2019/11/28 12:52
回复
举报
JFinal软件作者
社区建设刻不容缓了,谢谢你支持
2019/11/28 14:31
回复
举报
吊打 spring 这种臃肿的玩意
2019/11/27 09:37
回复
举报
感觉像是5mao钱?
01/17 14:08
回复
举报
不是 我一直在给JFINAL充钱 只期望它能发展的更好
01/20 18:32
回复
举报
更多评论
561 评论
2.8K 收藏
分享
返回顶部
顶部