JFinal简述

目录

  1. 基本概念
  2. 发展概况
  3. 系统架构
  4. 简要对比
  5. 开发框架简介
  6. 实际案例
  7. IDE支持

基本概念

JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。

 

发展概况

JFinal 项目开发始于2011年初,作者詹波(James Zhan)曾任搜格信息技术有限公司Java架构师,北京信息管理科学研究所CTO,现任微格网际(北京)科技有限公司联合创始人、网校网CTO。项目开源于2012年3月18日,采用对商业应用友好的Apache Licence 2.0协议。开源以来深受广大开发者欢迎,目前采用JFinal框架开发的用户群迅速壮大,同时不乏一些已经上线的商业化互联网项目。JFinal在中国最大的开源社区备受瞩目,自开源以来一直是热门项目。

JFinal将一直坚持以下设计目标:开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在坚持以上设计目标的同时,基于微内核+全方位扩展型架构,打造功能极度全面WEB+ORM开发框架。彻底解放开发者的生产力,彻底改善开发者的开发体验,让软件开发成为一件轻松愉快的事情。

JFinal通过实践逐步形成了一套极速开发方法,此法将在即将打造的JFinal极速开发社区展示出来。

 

系统架构

JFinal 采用微内核全方位扩展架构,全方位是指其扩展方式在空间上的表现形式。JFinal由HandlerInterceptorControllerRenderPlugin五大部分组成。

JFinal架构十分简单,顶层是一个责任链模式变种,ActionHandler 内部结构也十分简单,是一个Command模式变种。JFinal 架构图如下:

 

遵循COC原则,零配置,无xml

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

自动加载修改后的java文件,开发过程中无需重启web server

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

Plugin体系结构,扩展性强

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

强大的Validator后端校验功能

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

体积小仅218K,且无第三方依赖

 

简要对比

JFinal WEB MVC和Struts简要对比

JFinal遵循COC原则,零配置,无xml,而struts需要配置来支持action、result、interceptor配置与使用。

JFinal开发效率非常之高,相对Struts开发效率能提升五到十倍。

JFinal代码量非常省,相对Struts开发能省50%到70%代码量。

JFinal遵循Restful规范,而struts自身未提供Restful支持。Struts可以通过插件来支持restful,但支持不彻底使用不方便。

JFinal提供数据库支持,属于一站式解决方案,而struts仅为WEB MVC框架并未提供数据库支持。

JFinal学习成本极低,只需两个小时学习即可上手开发,而Struts学习成本相对较高。

JFinal相对Struts来说更加轻量级,JFinal打包jar文件仅173KB,而struts则为1.8MB。

 

JFinal ORM和Hibernate简要对比

JFinal采用ActiveRecord实现数据库操作支持,较Hibernate开发效率提升六到十倍。

JFinal ActiveRecord较Hibernate学习成本低,一小时内能上手开发。

JFinal零配置,对数据库支持五个无特点:无xml、无annotation、无getter、无setter、无attribute,极大降低了代码量,统计证实代码量节省70%到95%。

JFinal数据库操作完全采用原生sql,相对Hibernate采用的HQL学习成本低,功能更强大,性能更高,稳定性好。

 

开发框架简介

JFinal 中的Controller

Controller是JFinal核心类之一,该类作为MVC模式中的控制器。基于JFinal的Web应用的控制器需要继承该类。Controller是定义Action方法的地点,是组织Action的一种方式,一个Controller可以包含多个Action。以下是代码示例:

public class HelloController extends Controller {

public void index() {

renderText("此方法是一个action");

}

public void test() {

renderText("此方法是一个action");

}

}

JFinal 中的Model

Model是ActiveRecord中最重要的组件之一,它充当MVC模式中的Model部分。以下是Model定义示例代码:

public class User extends Model<User> {

public static final User daonew User();

}

以上代码中的User通过继承Model,便立即拥有的众多方便的操作数据库的方法。在User中声明的dao静态对象是为了方便查询操作而定义的,该对象并不是必须的。基于ActiveRecord的Model无需定义属性,无需定义getter、setter方法,无需XML配置,无需Annotation配置,极大降低了代码量。

以下为Model的一些常见用法:

// 创建name属性为James,age属性为25的User对象并添加到数据库

new User().set("name", "James").set("age", 25).save();

// 删除id值为25的User

User.dao.deleteById(25);

// 查询id值为25的User将其name属性改为James并更新到数据库

User.dao.findById(25).set("name", "James").update();

// 查询id值为25的user, 且仅仅取name与age两个字段的值

User user = User.dao.findById(25, "name, age");

// 获取user的name属性

String userName = user.getStr("name");

// 获取user的age属性

Integer userAge = user.getInt("age");

// 查询所有年龄大于18岁的user

List<User> users = User.dao.find("select * from user where age>18");

// 分页查询年龄大于18的user,当前页号为1,每页10个user

Page<User> userPage = User.dao.paginate(1, 10, "select *", "from user where age > ?", 18);

 

实际案例

JFinal开发的案例有哪些?

目前学习和使用JFinal极速web开发框架的个人开发者或者公司团队已经非常多了,项目类型范围涵盖也比较多,常见的后台管理系统,电商网站,金融系统,校务管理,进销存系统,ERP系统,游戏后台维护支撑系统,微信小程序社区俱乐部等,都已经有人在实践中成功使用了JFinal框架开发,而且反馈都是积极正面的,很大程度上促进了JFinal框架的发展。

 

IDE支持

目前,JFinal项目开发主流使用的IDE是Eclipse和Idea。

Eclipse中开发JFinal项目有专门的辅助插件-JBolt插件,提供了模板指令代码提示功能和一键创建开发环境、代码生成能力。

 

本文摘自百度百科:https://baike.baidu.com/item/JFinal/9383157?fr=aladdin

 

作者:Roger_CoderLife

链接:https://blog.csdn.net/Roger_CoderLife/article/details/97108994

本文为Roger_CoderLife的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值