Jfinal框架是什么框架?适用于什么项目呢?

Posted 锋齐叶落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jfinal框架是什么框架?适用于什么项目呢?相关的知识,希望对你有一定的参考价值。

Jfinal框架是什么框架?适用于什么项目呢?

jfinal 基于spring MVC研发的框架,操作简单。节省代码,适用于所有web项目。适合中小型项目开发。10分钟写出一个页面的增删改查。目前所在公司就用jfinal开发。app,服务端也可以。是Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。

系统架构

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

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

编辑

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 dao= new 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框架的发展。

参考资料

以上是关于Jfinal框架是什么框架?适用于什么项目呢?的主要内容,如果未能解决你的问题,请参考以下文章

使用Vue+JFinal框架搭建前后端分离系统

软删除是不是适用于流明框架?流明的限制?

Jfinal学习和环境的搭建

什么是Struts框架?

写一个框架的详细步骤

★推荐一款适用于SpringBoot项目的轻量级HTTP客户端框架