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文件,开发过程中无需重启web server

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

  • Plugin体系结构,扩展性强

  • 多视图支持,支持FreeMarker、JSP、Velocity

  • 强大的Validator后端校验功能

  • 功能齐全,拥有struts2的绝大部分功能

  • 体积小仅538K

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

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

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

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

    public void add() {
    }
	
    @Before(BlogValidator.class)
    public void save() {
        getModel(Blog.class).save();
    }
	
    public void edit() {
        setAttr("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 static final 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 {
   
}

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官方微信欢迎您的加入:  

加载中

评论(509)

铂金便便
铂金便便
期待轻量级微服务全家桶,要不是spring cloud,我还是会用jfinal写应用的
Javen-IJPay
Javen-IJPay
#JFinal# 会出自己的微服务,一切极简化,不走 spring 的路, spring 太庞杂了
xiaoshiyue
xiaoshiyue

引用来自“Java许”的评论

使用框架2年了,开发确实够快
不错
xiaoshiyue
xiaoshiyue

引用来自“Role”的评论

由于JFinal框架本身设计特点,在中小型项目,可选用Db+Record模式,直接以php、ruby等开发语言的特点,从而达到小项目快速开发要求;在大型项目中可选用业界标准的MVP设计模式,多人团队协同开发,框架是非常灵活多变的。
LQ哥
LQ哥
JFinal 轻量、简单、易学习。好像已经有基于JFinal开发的后台管理系统快速开发平台了。 👉 http://www.gps07.com/?zhaodaociren👌
s
shej123
加油
z
zhangbo324
zhangbo
红薯
红薯
#JFinal# 每次发新版,都给我发大红包,好的开源项目应该学习一下这种行为
lgm_szsl
lgm_szsl
还有没有用,正在实习的过程中,接下来写的项目会用到,所以现阶段正在接触

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

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

10/08 15:03

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

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

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

JFinalbbs V2.2 发布

JFinalbbs V2.2 发布了。此次更新内容: 后台增加shiro权限控制(使用了jfinal-ext) 后台标签可以增加/编辑 前台登录另起一个页面 编辑器升级,可以直接拷贝word文档粘贴 controller, table ...

2016/03/24 18:58

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

JFinal 2.2 主要针对于 2.1 版本中反馈集中的几个问题进行改进,另外也让jfinal 2.1非最终版用户升为统一的版本。 1:改进paginate 在2.1 版中使用了正则对paginate方法匹配 select 与 grou...

2016/01/19 10:16

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

由于 jfinal 2.1 在不完全统计的情况下有超过60项的升级与改进,所以自发布这几天以来,立即收到了大量的使用反馈,为了使开发者尽可能快地用上反馈后的新版本,本次jfinal 2.1延迟了推送到m...

2016/01/11 13:09

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

JFinal 2.1 将带给大家超过60项增强与改进,此次升级核心目的,一是全面解救传统SSH开发者,强力推动这些早已累成狗的工程师转投 JFinal 怀抱,二是与老用户建立更深的情感,答谢你们长久以来...

2015/12/29 14:58

没有更多内容

加载失败,请刷新页面

1
回答
jfinal2.2 的项目使用Jfinal undertow的问题

@JFinal 你好,想跟你请教个问题: 一个jfinal2.2 的项目,尝试使用jfinal undertow, 发现一个奇怪的问题。我的配置类继承关系...

昨天 10:12
82
回答
谈谈 jfinal 的优缺点

jfinal是国产优秀的web框架.jfinal短小精悍强大,易于使用.不过万事有度,省的太狠也不太好. 1.框架应该尽量兼容各种场景,因为你不知道以后的...

2013/09/05 12:09
5
回答
JFinal的AOP问题

看介绍里写的JFinal支持AOP,我看代码里实现的并不是真正意义上的AOP吧。

2013/08/14 14:18
2
回答
JFinal实现Restful的Delete方法和Put方法

@JFinal ,你好,在OSCchina上也看了不少关于JFinal实现Restful风格的帖子,JFinal自带的Restful拦截器是太生硬了,而且...

2015/04/21 16:18
9
回答
求jfinal视频教程
天蓬小猪 的回答 2015/11/10 10:19
最佳答案
http://my.oschina.net/u/257950/blog/477532 拿去 不谢
5
回答
求beetl的视频教程
闲大赋 的回答 2015/11/18 17:14
最佳答案
据我所知,beetl没有人录制视频,如果想体验,用 http://ibeetl.com:8080/beetlonline/ 就可以了。
2
回答
JFINAL注解如何清除多个缓存

jfinal注解清除缓存,如何清除多个,@CacheName("order_cache","order_cache")这种写法报错, 也无法多个@Cach...

11/11 21:27
1
回答
你好,我Jfinal里出现了APPARENT DEADLOCK!!! 请问一下怎么解决啊 找了一上午的百度 还没能解决

@JFinal 你好,想跟你请教个问题:我现在找了一上午都没能解决,在本地上是好好的,用户名密码也没错,上传到服务器上就报这种错

11/07 13:55
1
回答
设置了compilerArgument无效
君子之耀 的回答 11/01 16:24
最佳答案
经过仔细排查,偶然灵机一闪,发现是因为依赖造成的!!! 主工程依赖了一个api组件以及kit组件,主工程虽然指定了compilerArgument参数,但是api组件以及kit组件在打包的时候并未指定compilerArgument参数。

没有更多内容

加载失败,请刷新页面

jfinal-lesscss使用java实现lesscss的动态编译

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

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

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

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

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

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

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

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

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

2014/09/12 13:26
1K
2
jfinal-slf4j 让jfinal使用slf4j的log api

jfinal-slf4j 让jfinal使用slf4j的log api

2014/09/12 14:14
463
1
JFinal常见问题汇总

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

2013/03/31 14:58
2.8K
14
jfinal-flyway 数据脚本升级插件,伴随应用的升级自动升级或回滚数据库

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

2014/09/12 12:54
333
2
JFinal之学习资源

JFinal官网: http://www.jfinal.com/ JFinal官方文档:http://www.jfinal.com/doc JFinal在线API: http://tool.oschina.net/apidocs/apidoc?api=jfinal JFinal在OSChina上的技术讨论专题:...

2015/05/16 00:34
272
0
使用flyway-maven-plugin,执行数据库初始化sql文件,和sql数据库升级

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

2014/11/18 13:36
479
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部