国内优秀MVC开源框架jfinal简介
JFinal简介
JFinal 项目开发始于2011年初,作者詹波(James Zhan)曾任搜格信息技术有限公司Java架构师,北京信息管理科学研究所CTO,现任微格网际(北京)科技有限公司联合创始人、网校网CTO。项目开源于2012年3月18日,采用对商业应用友好的Apache Licence 2.0协议。基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率。
特点:
1) MVC架构,设计精巧,使用简单
2) 遵循COC原则,零配置,无xml
3) 独创Db + Record模式,灵活便利
4) ActiveRecord支持,使数据库开发极致快速
5) 自动加载修改后的java文件,开发过程中无需重启web server
6) AOP支持,拦截器配置灵活,功能强大
7) Plugin体系结构,扩展性强
8) 多视图支持,支持FreeMarker、JSP、Velocity
9) 强大的Validator后端校验功能
10) 功能齐全,拥有struts2的绝大部分功能
11) 体积小仅632K,且无第三方依赖
基于MVC的设计:
控制器(支持FreeMarker、JSP、Velocity、JSON等以及自定义视图渲染)
@Before(BlogInterceptor.class) 1. public class BlogController extends Controller { 2. public void index() { 3. setAttr("blogList", Blog.dao.find("select * from blog")); 4. } 5. 6. public void add() { 7. } 8. 9. @Before(BlogValidator.class) public void save() { 10. getModel(Blog.class).save(); 11. } 12. 13. public void edit() { 14. setAttr("blog", Blog.dao.findById(getParaToInt())); 15. } 16. @Before(BlogValidator.class) public void update() { getModel(Blog.class).update(); } 17. 18. public void delete() { 19. Blog.dao.deleteById(getParaToInt()); 20. } 21. } |
Model(无xml、无annotation、无attribute、无getter、无setter)
1. public class Blog extends Model<Blog> { 2. } |
Validator(API引导式校验,比xml校验方便N倍,有代码检查不易出错)
1. public class BlogValidator extends Validator { 2. protected void validate(Controller controller) { 3. validateRequiredString("blog.title", "titleMsg", "请输入Blog标题!"); 4. validateRequiredString("blog.content", "contentMsg", "请输入Blog内容!"); 5. } 6. 7. protected void handleError(Controller controller) { 8. controller.keepModel(Blog.class); 9. } 10. } |
拦截器:
1. public class BlogInterceptor implements Interceptor { 2. public void intercept(Invocation inv) { 3. System.out.println("Before invoking " + inv.getActionKey()); 4. inv.invoke(); 5. System.out.println("After invoking " + inv.getActionKey()); 6. } 7. } |
国内优秀MVC开源框架jfinal简介的更多相关文章
- springboot脚手架,逐渐成长成一个优秀的开源框架
目录 项目介绍 环境搭建 开发工具 开发环境 工具安装 系统架构 启动项目 springboot基于spring和mvc做了很多默认的封装.这样做的好处极大的方便了开发者的效率.尽管与此我们每个人还是 ...
- Android 优秀的开源框架整理
第一部分:系统架构 thinkAndroid https://github.com/white-cat/ThinkAndroid ThinkAndroid是一个免费的开源的.简易的.遵循Apache2 ...
- 开源框架DNN简介以及安装
donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dnn这个框架,考虑到又可以学习 ...
- Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
SSH和SSM定义 SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. SSM 则指的是 SpringMVC 做控制 ...
- 【.Net】优秀的开源框架
AutoMapper 官网:http://automapper.org/ github:https://github.com/AutoMapper/AutoMapper 文档:http://autom ...
- 比较强大 优秀的开源框架 :Android图片加载与缓存:Android Glide 的用法
使用Android Glide,需要先下载Android Glide的库,Android Glide在github上的项目主页: https://github.com/bumptech/glide . ...
- DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP
DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP 程序员搞任何语言的程序开发上升到一定的层次,要想进步,必须要接触和学习使用优秀的开源框架. MORMOT封装了WINDOWS最新的H ...
- spring (由Rod Johnson创建的一个开源框架)
你可能正在想“Spring不过是另外一个的framework”.当已经有许多开放源代码(和专有)J2EEframework时,我们为什么还需要Spring Framework? Spring是独特的, ...
- 介绍一个非常好用的跨平台C++开源框架:openFrameworks
介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...
随机推荐
- 【常见错误】Quartz常见错误
1.集群之后把其中一个Quartz服务停了,其他的也不接手工作 问题描述 集群之后,A节点执行了大多数任务,B节点大部分时间处于空闲,停掉A节点,B节点也不会接手工作. 解决方式 修改Quartz的配 ...
- Codeforces Round #495 (Div. 2) C. Sonya and Robots
http://codeforces.com/contest/1004/problem/C 题意: 在一行上有n个数字,现在在最左边和最右边各放置一个机器人,左右机器人各有一个数字p和q.现在这两个机器 ...
- 6th-Python基础——集合、函数
1.集合 主要作用: (1)去重 (2)关系测试,交集.差集difference().并集union().反向差集symmetric_difference().子集issubset().父集issup ...
- Git 与 GitHub 入门级
今天我们来搞一下Git 这东西虽然没啥搞头儿,但是开发当中还必须得会用,谁让你我都是苦逼的开发呢~~~~ 一.下载与安装 这玩意简单,给你赋个图片,自己研究一下~~~~ 1.官网:https://gi ...
- SR-IOV虚拟机的MTU与物理网卡的MTU
在进行SR-IOV虚拟机MTU方面的测试时,出现如下情况: 1)物理网卡PF的MTU值是4000: root@compute-1:~# ip l|more1: lo: <LOOPBACK,UP, ...
- Flask之项目配置,目录构建,闪现
综合案例:学生成绩管理 新建项目目录students,并创建虚拟环境 mkvirtualenv students 安装开发中使用的依赖模块 pip install flask==0.12.4pip i ...
- css3-盒模型display:-webkit-box;的使用
提到移动布局不得不提到盒模型display:-webkit-box;这个属性,在移动布局中浮动已经不在重要,相反自适应成为主要的需求,所以display:-webkit-box;变得尤为重要. box ...
- 海量日志采集Flume(HA)
海量日志采集Flume(HA) 1.介绍: Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据 ...
- Vue-- 监听路由变化,数据无法更新?
之前写的Vue项目,有个问题困扰了好久.新闻板块有推荐.精华.最新等几个Tab,设想通过切换Tab,改变路由参数(get/news/:tab)去获取对应数据,然后渲染到页面(用的是同一套组件),问题来 ...
- Win10下安装zio
0x00 报错:capstone.dll缺失,就算用pip安装也不行. 推荐:kali下安装pwn,pwntools,zio