JAVA 极速WEB+ORM框架 JFinal

JAVA 极速WEB+ORM框架 JFinal

Apache
Java 查看源码»
跨平台
2012-03-18
JFinal

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

JFinal有如下主要特点:

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

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

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

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

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

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

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

  • Plugin 体系结构,扩展性强

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

  • 强大的 Validator 后端校验功能

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

  • 体积小仅 723 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官方微信欢迎您的加入:  

的码云指数为
超过 的项目
加载中

评论(555)

在线笔记
决定一个项目开发周期的根本不是写代码的速度,而且永远在改变的需求,所以。。
每天多一点
每天多一点
以官网访问之慢,很难相信框架所表述的快速和轻便
JFinal
JFinal 软件作者
今天发新版本,访问的人数多,所以官网慢了, 平常访问很快的 jfinal 官网用的最低配的阿里云只额外增加了 1M 带宽,平时访问是相当快的
每天多一点
每天多一点
今天就快多了
JFinal
JFinal 软件作者
jfinal 官网的配置很低,人多的时候访问很慢,还请见谅
idreamblue
idreamblue
@JFinal ,波总,发现个问题,JFinalFilter#createJFinalConfig是protected,但jfinalConfig却是私有的。
JFinal
JFinal 软件作者
jfinal 4.8 已改进了这里,已发布到了 maven 中心库,赶紧升级,超爽的
B
BeeHoney
类似Hibernate的面向对象方式,操作数据库是不是更简单些? API尽量简单, 用户使用时,是不用关心实现的. 就是Hibernate 的联接太复杂了,还要配置一大堆信息, 复杂查询也不好用. Bee比Hiberante更简单易用。 相互学习下. https://www.oschina.net/news/111659/bee-1-6-0-released
idreamblue
idreamblue
@JFinal ,波总,有机会对aop进一步增强吗?比如注入完回调,比如类似Guice的强大的bindInterceptor功能;建议波总在官网给广大jfinal爱好者一个roadmap,阐述一下jfinal未来的版本走向,我们非常非常非常地关注。
JFinal
JFinal 软件作者
jfinal 接下来会先专注社区建设,然后才是 jfinal 自身的迭代进化。 jfinal 经过八年多的迭代、打磨,已经是十分成熟的 Web MVC + ORM + AOP + Template engine 框架。2019 年的改进主要都是细节的打磨。对于 jfinal 来说,当务之急是建立一个完善的生态体系,否则项目再好,也难以发挥其价值
idreamblue
idreamblue
了解,社区建设确实很重要,希望JFinal越来越好。
JFinal
JFinal 软件作者
社区建设刻不容缓了,谢谢你支持
喜欢lcd屏
喜欢lcd屏
吊打 spring 这种臃肿的玩意
在线笔记
感觉像是5mao钱?
喜欢lcd屏
喜欢lcd屏
不是 我一直在给JFINAL充钱 只期望它能发展的更好
杜福忠
杜福忠
感谢 @小仙女啊- 送的书~ 不管怎样,感谢她让我看到这本书!加油!用#JFinal# 创业咯~
丶Lion
丶Lion
他已经走啦
杜福忠
杜福忠
只是发了个动弹。。。原来如果对项目加##就会把动弹调过来啊。。。删也删不了2333 就这样吧! 目前公司业务稳定发展!继续加油!
且无需多言
且无需多言

引用来自“红薯”的评论

#JFinal# 每次发新版,都给我发大红包,好的开源项目应该学习一下这种行为
你这个思想,堪称业界毒瘤😂
巴拉迪维
巴拉迪维
作为一个老 Javaer 不得不说:#JFinal# 是国内最优秀的 Java 开源框架。八年来的发展,给予它无穷的生命力。当你需要 MVC + ORM + AOP + Proxy + Template Engine 框架时,希望你能首先想到 www.jfinal.com
xiaoshiyue
xiaoshiyue
👍
ted123
ted123
更新了啥内容,...change log呢

JFinal 4.8 发布,迭代 9 年依然极简、极速

从 2010 年 12 月 18 日第一个初始版本,到 2012 年 3 月 18 日在 oschina 开源,到今天 2019 年 12 月 18 日,JFinal 已迭代 9 年。 任何系统都有向复杂、混乱方向演化的倾向,本质是由于简...

2019/12/18 10:31

驰骋工作流引擎与 jFinal 集成版本 2.0 发布说明

驰骋工作流引擎与jFinal集成版本2.0 发布说明 关键字: 驰骋工作流程快速开发平台 工作流程管理系统java工作流引擎. 使用协议:GPL. 关于JFinal: https://www.jfinal.com/ 关于JFlow: http:/...

2019/08/26 09:12

JFinal 4.2 发布,一个 jar 包走天涯

JFinal 此前唯一的第三方依赖在添加业务层 AOP 时被引入,本次 4.2 版本就是要干掉这唯一的第三方依赖,从此一个 jar 包走天涯 JFinal 4.2 新增的 proxy 模块仅用 628 行代码就干掉了 19505 ...

2019/06/06 17:33

JFinal 3.6 发布,五弹齐发迎新年

春节前处理完年前用户反馈的需求与改进,来年只需专注面向未来。 jfinal 3.6 有近 40 项增强与改进,部分功能与改进十分有价值,值得你拥有。 一、第一弹 JFinal 3.6 1、Controller 添加 se...

2019/02/01 17:46

JFinal 3.5 发布,将能上的菜先上了

jfinal 新功能经过 6 个月的酝酿、开发,在大幅度的创新来临之前,jfinal 3.5 这一版先稳一稳,趁着国庆长假,将能上的菜先上了。 jfinal 3.5 这一版针对这 6 个月以来用户反馈最强烈、最频繁...

2018/10/08 15:03

JFinal 3.4 发布,将极速贯彻到 UI 层

jfinal 的终极目标是全面实现软件开发整个过程的极速开发,极大提升开发效率,极大降低学习成本,极大提升开发体验 jfinal 诞生头五年,已实现 WEB + ORM + AOP 层面的极速开发,赢得了大量开...

2018/04/28 15:16

JFinal 3.3 发布,天下武功,唯快不破

多年前看过周星驰的电影《功夫》,里头的大 Boss 火云邪神有一句经典台词:天下武功,无坚不破,唯快不破。 周星驰最后通过变得比火云邪神更快,轻松击败火云邪神 在当时我对这句 “天下武功...

2017/11/22 16:19

JFinal 3.2 发布,星星之火已成燎原之势

JFinal第一版于2011年3月诞生于公司内部,应用于公司项目后大受欢迎,一年后于2012年3月18日选择在OSChina社区开源。 历经6年工匠精神的打磨,现已进化成生机勃勃的生态系统,星星之火已成燎...

2017/08/08 17:31

JFinal 3.1 发布,没有繁琐、没有复杂,只有妙不可言

JFinal 3.1 针对 3.0 版推出的魔板引擎进行了深度打磨,例如魔板 parse 异常提示更加友好明确,消除指令嵌套时多出来的一个换行符,对于模板 isModified() 逻辑进行了重构,消除冗余代码,可...

2017/05/04 17:54

JFinal 3.0 发布,重新定义模板引擎

本次回归码坛为小伙伴们带来的是重新定义过的 Template Engine 将极速开发继续贯彻到 View 层。 Java 模板引擎界已被 Freemarker、Velocity 统治多年,但其在这些年的发展可谓乏善可陈,究其...

2017/01/22 11:01

没有更多内容

加载失败,请刷新页面

2
回答
Jfinal 操作数据库报错问题

如果不手动设置主键就会报错 主键不能重复 我表已经将主键设置为自动增长了 是我用的不对吗? DROP TABLE IF EXISTS `info`; CR...

前天 13:10
2
回答
最近才接触Jfinal,想问一下怎么动态添加数据源

Jfinal本身支持多数据源的配置,这个我是知道的,但是多数据源的配置前提是我知道我要配置的数据源有哪些, 但是有没有一种方式可以在程序运行的时候,根据适...

2015/03/25 16:54
4
回答
JFinal 2.0 使用 FreeMarker 中 renderFreeMarker 异常

Config 配置 //配置常量 @Override public void configConstant(Constants co...

01/13 22:40
3
回答
关于Jfinal在普通类中获取正在请求的controller

请教下各位,我在普通类中写了个方法,这里目前的controller是写死的,有什么好的方法可以去获取当前正在请求的controller吗?

01/10 17:50
4
回答
找不到或无法加载主类 com.jfinal.weixin.demo.WeixinConfig

@JFinal 你好,想跟你请教个问题: 新手,刚下载了jfinal-jfinal-weixin-master.zip , 然后解压成文件夹, 用Idea...

2019/04/17 16:18
2
回答
Aop.get(接口 or 抽象类) 在没有对应实现的情况下抛出异常

package test; import com.jfinal.aop.Aop; public class AopTest { ...

2019/12/20 09:57
3
回答
JFinal插入数据为空

这是表的结构。 HTML页面。 请问这样的问题该怎么解决?

2019/12/16 15:39
18
回答
web开发中多线程问题

多线程并发数据一致性问题。是一个一直热议的话题。 我一直有一个疑问,是否是普遍的web项目中都存在这样的并发问题,只是并发不高没有暴露出来。 例:web ...

2019/12/11 10:52
1
回答
Session 过期拦截的问题

项目 后台用的 jfinal 前端用的vue public void intercept(Invocation inv) { Controller ct ...

2019/12/16 16:49

没有更多内容

加载失败,请刷新页面

学JFinal不迷路,JFinal优质资源列表(欢迎反馈更新)

学JFinal不迷路,记录一下JFinal相关的资源、产品、讲师等信息(所有信息排名不分先后)。 一、相关站点: 1、JFinal官网-问答、分享、文档、交流、俱乐部 http://www.jfinal.com 2 、JFina...

2019/05/25 19:25
1.9K
0
jfinal-lesscss使用java实现lesscss的动态编译

jfinal-coffeescript使用java实现coffeescript的动态编译,带有jfinal plugin

2014/09/12 12:21
110
0
jfinal-coffeescript使用java实现coffeescript的动态编译

jfinal-coffeescript使用java实现coffeescript的动态编译,带有jfinal plugin

2014/09/12 12:16
263
0
jfinal-shiro-freemarker实现shiro在freemarker页面的标签过滤

jfinal-shiro-freemarker实现shiro在freemarker页面的标签过滤,用于动态屏蔽页面的部分内容

2014/09/12 11:59
681
1
jfinal-sqlinxml 类似ibatis的sql语句存在xml文件里

jfinal-sqlinxml 类似ibatis的sql语句存在xml文件里

2014/09/12 13:47
277
0
jfinal-quartz 使用jfinal启动quartz执行定时任务

jfinal-quartz 使用jfinal启动quartz执行定时任务,大家尽可能关注(Follow)我的github(https://github.com/Dreampie),好及时得到插件的更新信息...

2014/09/12 13:26
2.1K
2
JFinal常见问题汇总

整理社区回答中jfinal常见的入门和热点问题的帖子,加速新手入门速度,欢迎大家在评论中补充,我会不定期更新这个帖子。 JFinal 为啥不像 Rails 一样提供脚手架 http://www.oschina.net/que...

2013/03/31 14:58
5.9K
15
jfinal-slf4j 让jfinal使用slf4j的log api

jfinal-slf4j 让jfinal使用slf4j的log api

2014/09/12 14:14
1.5K
1
jfinal-flyway 数据脚本升级插件,伴随应用的升级自动升级或回滚数据库

jfinal-flyway 数据脚本升级插件,伴随应用的升级自动升级或回滚数据库

2014/09/12 12:54
569
2
使用flyway-maven-plugin,执行数据库初始化sql文件,和sql数据库升级

使用flyway-maven-plugin,执行数据库初始化sql文件,和sql数据库升级

2014/11/18 13:36
1.6K
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部