JAVA 极速WEB+ORM框架 JFinal(主流javaweb框架)
ccwgpt 2024-10-25 10:37 39 浏览 0 评论
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有 ruby、python 等动态语言的开发效率!为您节约更多时间,减少996。
本文力争做出史上最全的JFinal学习笔记。
JFinal有如下主要特点
- MVC 架构,设计精巧,使用简单
- 遵循 COC 原则,支持零配置,无 XML
- 独创 Db + Record 模式,灵活便利
- ActiveRecord 支持,使数据库开发极致快速
- 极简、强大、高性能模板引擎 Enjoy,十分钟内掌握 90% 用法
- 自动加载修改后的 Java 文件,开发过程中无需重启服务
- AOP支持,拦截器配置灵活,功能强大
- Plugin 体系结构,扩展性强
- 多视图支持,支持 Enjoy、FreeMarker、JSP、Velocity
- 强大的 Validator 后端校验功能
- 功能齐全,拥有传统 SSH 框架的绝大部分核心功能
- 体积小仅 777 KB,并且无第三方依赖
JFinal 官网: http://www.jfinal.com
Maven 坐标
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>4.9.09</version></dependency>
加2个例子。
DEMO 1:jFinal+Redis统计接口访问次数
- RequestStatisticsInterceptor Interceptor{
- intercept(Invocation inv) {
- String className = inv.getController().getClass().getName();
- String methodName = inv.getMethodName();
- Jedis jedis = Redis.().getJedis();
- (jedis != ){
- jedis.hincrBy(,className++methodName,);
- jedis.close();
- }
- inv.invoke();
- }
- }
DEMO 2:JFinal实现Blog管理:
1. 控制器(支持 Enjoy、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));
render("blog.html");
} public void add() {
} @Before(BlogValidator.class) public void save() {
getModel(Blog.class).save();
redirect("/blog");
} public void edit() {
set("blog", service.findById(getParaToInt()));
} @Before(BlogValidator.class) public void update() {
getModel(Blog.class).update();
redirect("/blog");
} public void delete() {
service.deleteById(getParaToInt());
redirect("/blog");
}
}
2.Service所有业务与sql全部放在Service层
public class BlogService { private Blog dao = new Blog().dao();
public Page<Blog> 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、无annotaion、无attribute)
public class Blog extends Model<Blog> {
}
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());
}
}
资深用户怎么看?
作者:缪斯的情人
链接:https://www.zhihu.com/question/27708074/answer/37842302
来源:知乎
一直在实际项目中使用,一点个人心得,用之前明确几点:
1.解决问题的场景是什么?jfinal明确说明是一个微内核的快速开发框架,和spring比毫无意义,本身解决问题的场景就是不一样的,spring更注重于企业级的整套解决方案,jfinal倾向于满足快速出产品,这个其实和拿ROR与sinatra对比差不多,意义不大。
2.要有基本的servlet基础,这个对于使用jfinal人来说必不可少,基础不牢固,文档再多也用,jfinal其实是对于servlet以及jdbc的薄层封装。很多人抱怨文档不详细,其实,文档只是个索引,更多的内容还是看下源码,源码非常简单。
3.项目大了怎么办?项目大了,扩展多了担心会乱?如果按照jfinal组件的扩展方式去做第三方插件的扩展,代码组织起来也不会乱,目前第三方扩展也很多包括quartz,shiro,redis等等,与大而全不同的是你可以选择性的使用所需的组件,比如你可能感觉spring security不好用,那你可以使用shiro。而且jfinal本身支持spring plugin,这些插件的插拔方式都是非侵入式的,对你整体的项目架构不会产生影响。
4.性能。大量的map映射和反射部分可能会对性能以及内存占用上有一定的影响,但这块目前对我影响不大,如果对事务的类型要求不高的话(目前jfinal也支持嵌套事务、事务传播等基本特性)同等比起来jdbc的薄层封装毕竟还是比hibernate要快的,而且jfinal各个部分可以单独使用,比如你可以单独使用它的Db plugin。
为什么会成为非常热门的开源项目?很简单因为它解决了大多数开发者的实际遇到的问题,再多的理念,再多的设计模式不能用于实际问题的解决也只是花架子。对于国产软件的挑剔性也让很多人产生疑问:这简单的东西能行吗?不试试怎么知道呢!
参考链接:
https://jfinal.com
https://github.com/jfinal/jfinal
https://gitee.com/jfinal/jfinal
https://mvnrepository.com/artifact/com.jfinal/jfinal
https://www.zhihu.com/question/27708074
用户手册:
https://www.w3cschool.cn/jfinal/ JFinal教程手册
https://search.maven.org/artifact/com.jfinal/jfinal-weixin jfinal weixin SDK
https://appdoc.app/artifact/com.jfinal/jfinal/1.4/index.html?com/jfinal/render/package-tree.html JFinal API文档(英文版)
相关推荐
- 腾讯开源框架TarsCpp-rpc设计分析-server(二)
-
2Tars协议2.1是什么借用官方说法:TARS编码协议是一种数据编解码规则,它将整形、枚举值、字符串、序列、字典、自定义结构体等数据类型按照一定的规则编码到二进制数据流中。对端接收到二进制数据流...
- 微服务调用为什么用RPC框架,http不更简单吗?
-
简单点,HTTP是协议,RPC是概念!实现RPC可以基于HTTP协议(Feign),TCP协议(Netty),RMI协议(Soap),WebService(XML—RPC)框架。传输过程中,也因为序列...
- go-zero:开箱即用的微服务框架(gin框架微服务)
-
go-zero是一个集成了各种工程实践的Web和rpc框架,它的弹性设计保障了大并发服务端的稳定性,并且已经经过了充分的实战检验。go-zero在设计时遵循了“工具大于约定和文档”的理...
- SOFARPC :高性能、高扩展性、生产级的 Java RPC 框架
-
#暑期创作大赛#SOFARPC是一个高性能、高扩展性、生产级的JavaRPC框架。在蚂蚁金服,SOFARPC已经使用了十多年,已经发展了五代。SOFARPC致力于简化应用程序之间的RPC...
- 自研分布式高性能RPC框架及服务注册中心ApiRegistry实践笔记
-
痛点1.bsf底层依赖springcloud,影响bsf更新springboot新版本和整体最新技术版本升级。2.eureka已经闭源,且框架设计较重,同时引入eureka会自行引入较多sprin...
- Rust语言从入门到精通系列 - Tonic RPC框架入门实战
-
Rust语言是一种系统级语言,被誉为“没有丧失性能的安全语言”。Rust语言的优势在于其内存安全机制,在编译时就能保证程序的内存安全。Tonic模块是Rust语言的一个RPC(RemoteProce...
- 腾讯开源框架TarsCpp-rpc设计分析-client(一)
-
前言Tars是腾讯开源的微服务平台,包含了一个高性能的rpc框架和服务治理平台,TarsCpp是其C++版本。对于以C++为主要开发语言,同时还想深入了解rpc和微服务框架具体实现的同学来说,Tars...
- 设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架
-
为啥要开发RPC框架事情是这样的,在开发这个RPC框架之前,我花费了不少时间算是对Dubbo框架彻底研究透彻了。冰河在撸透了Dubbo2.x和Dubbo3.x的源码之后,本来想给大家写一个Dubbo源...
- rpc框架使用教程,超级稳定好用,大厂都在使用
-
rpc是什么远程调用协议如何使用导入依赖<dependency><groupId>org.apache.dubbo</groupId><art...
- Layui 框架实战:动态加载 Select 与二级联动全解析
-
在现代Web开发中,下拉选择框(Select)是用户输入数据时不可或缺的组件。很多时候,我们需要的选项并非静态写死在HTML中,而是需要根据业务逻辑从后端动态获取。更有甚者,我们可能需要实现“...
- 15个能为你节省数百小时的前端设计神器,从UI库到文档生成
-
无论你是刚开始开发之旅的新手,还是疲于应付生产期限的资深程序员,有一个真理始终不变:正确的工具能彻底改变你的工作流程。多年来,我测试了数百个开发工具——有些实用,大多数平庸。但有一批免费网站经受住了时...
- Layui与WinForm通用权限管理系统全解析
-
嘿,小伙伴们,今天咱们来聊聊Layui和WinForm这两个框架在通用权限管理系统中的应用。别担心,我会尽量用简单易懂的语言来讲解,保证让大家都能跟上节奏!首先说说Layui。Layui是一个前端UI...
- 纯Python构建精美UI!MonsterUI让前端开发效率飙升
-
“无需CSS知识,告别类名记忆,11行代码实现专业级卡片组件”在传统Web开发中,构建美观界面需要同时掌握HTML、CSS、JavaScript三剑客,开发者不得不在多种语言间频繁切换。即使使用Boo...
- WebTUI:将终端用户界面(TUI)之美带到浏览器的CSS库
-
在当今Web技术飞速发展的时代,界面设计愈发复杂多样。然而,随着现代化工具的广泛使用,一些开发者开始回归极简风格,追求一种简洁而富有韵味的设计。WebTUI正是这样一款CSS库,它将经典的终...
- 人教版二年级下册生字描红汇总(拼音+笔顺+描红),可打印!
-
可定制内容,评论区留言。本次整理的为人教版二年级下册所有生字,共计300个;写字是小学阶段一项重要的基本功训练,把汉字写得正确、工整、美观,可以提高运用汉字这一交际工具的准确性和效率。对小学生进行写字...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 腾讯开源框架TarsCpp-rpc设计分析-server(二)
- 微服务调用为什么用RPC框架,http不更简单吗?
- go-zero:开箱即用的微服务框架(gin框架微服务)
- SOFARPC :高性能、高扩展性、生产级的 Java RPC 框架
- 自研分布式高性能RPC框架及服务注册中心ApiRegistry实践笔记
- Rust语言从入门到精通系列 - Tonic RPC框架入门实战
- 腾讯开源框架TarsCpp-rpc设计分析-client(一)
- 设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架
- rpc框架使用教程,超级稳定好用,大厂都在使用
- Layui 框架实战:动态加载 Select 与二级联动全解析
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)