JFinal 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
JFinal 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
JFinal 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织
地区 国产
投 递 者 JFinal
适用人群 未知
收录时间 2012-03-18

软件简介

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

JFinal有如下主要特点:

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

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

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

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

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

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

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

  • Plugin 体系结构,扩展性强

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

  • 强大的 Validator 后端校验功能

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

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

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

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

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

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

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

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 指数为
超过 的项目

评论

点击加入讨论🔥(566) 发布并加入讨论🔥
发表了资讯
2022/05/05 02:30

JFinal 5.0.0 发布,开源十周年

这一年多以年来工作繁忙,上一次发版还是去年一月份的事了,这次趁着五一长假,发布 5.0.0 版,纪念一下 jfinal 开源十周年。 5.0.0 版本中较为重要的功能来源于公司库存管理的现实需求,该项目采用前后分离开发模式,前后端 json 交互产生了 json 注入 action 方法参数的需求。 开启 json 解析配置可自动解析 json 数据并注入 action 形参: me.setResolveJsonRequest(true); 假定请求 json 格式如下: { "name": "信息...

61
18
发表了资讯
2021/01/08 15:51

JFinal 4.9.06 发布,Hello 2021

过去一年极不平凡,黑天鹅频频出现。 很多人在 2020 年并不容易,作为开源人时间上也更不够用了。即便如此,jfinal 仍发布了 6 个版本。 这 6 个版本共有 86 项增强与改进,有些是针对你的反馈与需求,有些是源于作者主动的极致打磨。 经过多年的迭代与打磨,jfinal 已经成熟、稳定、可靠应用于千千万万、各行各业的项目之中,我也收获了足够多的成就感,但责任感也更重了。 过去一年的更新绝大部分是细微打磨与改进,这些努力可...

15
1
发表了资讯
2020/11/10 11:05

JFinal 4.9.03 发布,添加路由扫描功能

JFinal 4.9.03 主要新增了路由扫描功能,开发更快更方便。 以往未添加路由扫描功能主要有如下原因: 一是未找到支持 routes 级别拦截器以及 baseViewPath 配置的设计方案。 二是未找到支持拆分路由的方案。 三是性能损失降低开发体验,热加载启动速度慢。 四是有一定的安全隐患。 本次 jfinal 4.9.03 所使用的方案解决了上述所有问题,找到了最优解。 新功能在周末开发完成,已经推送至 maven 中心库,现在就可以使用了。 jfin...

23
9
发表了资讯
2020/10/13 17:05

JFinal 4.9.02 发布,App&Coffee 重磅上线

每年国庆长假 jfinal 都会升级一个新版本,今年也不例外。前几天有事被耽误,今天正式推送新版本通知。 这次国庆同时升级的项目有 jfinal、jfinal-undertow、jfinal-weixin、enjoy、activerecord。 在国庆假期已全部推送到了 maven 中心库,可以直接升级使用。 本次升级清扫了积累了很长的待开发列表,大多来自同学们的需求与反馈。新版本以细致打磨为主,但也不乏一些有意思的功能。 1、enjoy 新增对中文表达式、变量名、函数名...

35
8
发表了资讯
2020/05/29 17:04

JFinal 4.9 发布,持续精雕细琢

JFinal 是一个 Web MVC + ORM + AOP + Template Engine 四合一的极简、极轻量级应用开发框架,至今已迭代发展进入第 10 年。 JFinal 坚持极简设计,迭代近 10 年,却只有 3 万行代码,比传统的同等功能组合类框架要少几十倍的代码量,这使得开发者可以完全掌控其源代码,也成为学习 java 框架设计的绝佳资源。 经过这么多年的迭代,JFinal 已经非常完善、成熟。JFinal 4.9 主要打磨了近半年来开发者的需求与反馈,较大的雕琢有下...

92
25
发表了资讯
2019/12/18 10:31

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

从 2010 年 12 月 18 日第一个初始版本,到 2012 年 3 月 18 日在 oschina 开源,到今天 2019 年 12 月 18 日,JFinal 已迭代 9 年。 任何系统都有向复杂、混乱方向演化的倾向,本质是由于简洁、有序的结构只拥有极小的概率分布,而复杂、混乱则拥有极大的概率空间。 但是:jfinal 迭代 9 年依然极简、极速。 jfinal 不忘初心,对极简的追求,9 年从未改变。 一、极简这 9 年 1、 极简设计 jfinal 迭代 9 年时间,顶层架构从未变...

201
53
发表了资讯
2019/06/06 17:33

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

JFinal 此前唯一的第三方依赖在添加业务层 AOP 时被引入,本次 4.2 版本就是要干掉这唯一的第三方依赖,从此一个 jar 包走天涯 JFinal 4.2 新增的 proxy 模块仅用 628 行代码就干掉了 19505 代码量的 cglib-nodep。被干掉的 cglib 代码量是 JFinal proxy 的 31 倍。cglib-node 的代码量: JFinal proxy 代码量: 至此,一个无第三方依赖的 MVC + ORM + AOP + Proxy + Template Engine,各模块都极度轻量级的应用开发框架由此诞生...

168
103
发表了资讯
2019/02/01 17:58

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

春节前处理完年前用户反馈的需求与改进,来年只需专注面向未来。 jfinal 3.6 有近 40 项增强与改进,部分功能与改进十分有价值,值得你拥有。 一、第一弹 JFinal 3.6 1、Controller 添加 set 方法 由于 setAttr 方法使用频率极高,为了进一步减少代码量、提升开发效率,新增了 set 方法,其使用方式与 setAttr 完全一样: // 常见用法 set("user", user); // 链式用法 set("user", user).set("article", article).re...

25
34
发表了资讯
2018/10/08 15:03

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

jfinal 新功能经过 6 个月的酝酿、开发,在大幅度的创新来临之前,jfinal 3.5 这一版先稳一稳,趁着国庆长假,将能上的菜先上了。 jfinal 3.5 这一版针对这 6 个月以来用户反馈最强烈、最频繁的需求进行了开发,同时对原有代码进行了极其精致的优化与打磨。 jfinal 3.5 诸多内部优化值得升级使用,诸多基础性调整为下一步进化做好准备。 1、Controller 依赖注入 jfinal 3.5 添加了 Controller 依赖注入功能,使用前需要配置启用...

99
29
发表了资讯
2018/04/28 15:16

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

jfinal 的终极目标是全面实现软件开发整个过程的极速开发,极大提升开发效率,极大降低学习成本,极大提升开发体验 jfinal 诞生头五年,已实现 WEB + ORM + AOP 层面的极速开发,赢得了大量开发者的喜爱,经常会得到 jfinal 节省大量时间的类似反馈: 有不少小伙伴用上 jfinal 后,成功转型为自由职业者: 上面这位小伙伴,辞掉没完没了加班的工作,在网上承接来自北京、广州的项目,回到东北跟老婆在老家过着自由富足的生活。 ...

136
72
发表了资讯
2017/11/22 16:19

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

多年前看过周星驰的电影《功夫》,里头的大 Boss 火云邪神有一句经典台词:天下武功,无坚不破,唯快不破。 周星驰最后通过变得比火云邪神更快,轻松击败火云邪神 在当时我对这句 “天下武功,无坚不破,唯快不破” 并不以为然,直到 2016 年,jfinal 社区有位小伙伴用 jfinal 做了一个电影网站《憨憨电影》,传送门 。看了里面的《闪电侠》这部美国科幻剧,传送门 ,才意识到唯快不破的深刻内涵,闪电侠本质就一个核心能力:“...

152
66
发表了资讯
2017/08/08 17:33

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

JFinal第一版于2011年3月诞生于公司内部,应用于公司项目后大受欢迎,一年后于2012年3月18日选择在OSChina社区开源。 历经6年工匠精神的打磨,现已进化成生机勃勃的生态系统,星星之火已成燎原之势。 1:jfinal.com极速开发社区注册用户达66036人 JFinal 极速开发社区于2016年6月正式上线,一年两个月零两天的时间注册用户已达66036人,作为一个没有公司支持,也没有任何外部资源支持的个人开源项目,仅凭一已之力干到这个程度,...

161
82
发表了资讯
2017/05/04 17:56

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

JFinal 3.1 针对 3.0 版推出的魔板引擎进行了深度打磨,例如魔板 parse 异常提示更加友好明确,消除指令嵌套时多出来的一个换行符,对于模板 isModified() 逻辑进行了重构,消除冗余代码,可读性更好。 除了对魔板引擎深度打磨之外,也不乏推出了一些极简实用的功能,匠心打磨的 JFinal 3.1 在这一个月的俱乐部内测时间里,小伙伴们的一致感言是:妙不可言! 1、sql 模板分页:没有 Handler、没有 Mapper、没有各种 Tag,只有妙...

181
84
发表了资讯
2017/01/22 11:01

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

本次回归码坛为小伙伴们带来的是重新定义过的 Template Engine 将极速开发继续贯彻到 View 层。 Java 模板引擎界已被 Freemarker、Velocity 统治多年,但其在这些年的发展可谓乏善可陈,究其根本原因是因为这个领域严重依赖于第三方工具去做词法、语法分析以及 AST 的构建,并未真正在语言层面进行过深入的追问。 例如 Freemarker、Velocity 是基于 javacc 做的二次开发,其他 java 模板引擎多数也是基于 ANTLR、jflex、javacc ...

167
80
发表了资讯
2016/03/24 00:00

JFinalbbs V2.2 发布

JFinalbbs V2.2 发布了。此次更新内容: 后台增加shiro权限控制(使用了jfinal-ext) 后台标签可以增加/编辑 前台登录另起一个页面 编辑器升级,可以直接拷贝word文档粘贴 controller, table 增加了自动扫描注入(使用了jfinal-ext) 删除baseUrl从后台设置, 改用me.add(new ContextPathHandler("baseUrl"));方式 数据库更新 增加表: jfbbs_role, jfbbs_user_role, jfbbs_permission, jfbbs_role_permission, jfbbs_admin_log 修...

13
33
发表了资讯
2016/01/19 00:00

JFinal 2.2 发布,用 JFinal 开发,就这么定了!

JFinal 2.2 主要针对于 2.1 版本中反馈集中的几个问题进行改进,另外也让jfinal 2.1非最终版用户升为统一的版本。 1:改进paginate 在2.1 版中使用了正则对paginate方法匹配 select 与 group by 元素,为了性能采用粗放的正则时,则无法实现复杂sql的精确匹配,而为了精确匹配使用细致冗长的正则时,则性能急剧下降,简单sql相对于复杂sql甚至有上千倍的性能差距,权衡之下2.2 版弃用对select、group by的正则匹配,拆分sql为s...

91
24
发表了资讯
2016/01/11 00:00

JFinal 2.1 最终版发布,用JFinal开发,就这么定了!

由于 jfinal 2.1 在不完全统计的情况下有超过60项的升级与改进,所以自发布这几天以来,立即收到了大量的使用反馈,为了使开发者尽可能快地用上反馈后的新版本,本次jfinal 2.1延迟了推送到maven中心库的时间,为的就是今天再发布一个能让大家满意的最终版,最终版已上传至jfinal官网,并推送到了maven中心库可以立即使用。 最终版主要改进: 1:改进BaseModelGenerator,引入JavaKeywork,支持表字段名为java语言关键词的情况 ...

62
27
发表了资讯
2015/12/29 00:00

JFinal 2.1 发布,用 JFinal 开发,就这么定了!

JFinal 2.1 将带给大家超过60项增强与改进,此次升级核心目的,一是全面解救传统SSH开发者,强力推动这些早已累成狗的工程师转投 JFinal 怀抱,二是与老用户建立更深的情感,答谢你们长久以来对JFinal的支持! 作为传统SSH开发者全面转投JFinal怀抱的版本,JFinal 2.1必须带给SSH用户全新的足够消除他们顾忌的极速化功能,传统JavaBean的回归 必不可少,但不能是简单的回归,必须还要完全拥有 JFinal 所有优势,并且还要彻底消除...

354
222
发表了资讯
2015/06/18 00:00

JFinal 2.0 发布,JAVA 极速 WEB+ORM 框架

JFinal 是本星球第一个提出极速开发理念,也是唯一个极速开发框架。自开源以来迅速获得广大开发者的喜爱,极速开发的优势逐步深入人心。由于极速开发威力巨大,所以有了以下在 OSChina 的惊人数据: 1:问答数2600个,在OSChina 在收录的37153个项目中总排名第五位,排前四位的项目分别是:java、android、php、mysql,前四个项目在 OSChina 的收录时间比 JFinal 要早一到四年,问答数量充分表明JFinal是OSChina最活跃的项目 相...

405
226
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
566 评论
3K 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部