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简介的更多相关文章

  1. springboot脚手架,逐渐成长成一个优秀的开源框架

    目录 项目介绍 环境搭建 开发工具 开发环境 工具安装 系统架构 启动项目 springboot基于spring和mvc做了很多默认的封装.这样做的好处极大的方便了开发者的效率.尽管与此我们每个人还是 ...

  2. Android 优秀的开源框架整理

    第一部分:系统架构 thinkAndroid https://github.com/white-cat/ThinkAndroid ThinkAndroid是一个免费的开源的.简易的.遵循Apache2 ...

  3. 开源框架DNN简介以及安装

    donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dnn这个框架,考虑到又可以学习 ...

  4. Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较

    SSH和SSM定义 SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. SSM 则指的是 SpringMVC 做控制 ...

  5. 【.Net】优秀的开源框架

    AutoMapper 官网:http://automapper.org/ github:https://github.com/AutoMapper/AutoMapper 文档:http://autom ...

  6. 比较强大 优秀的开源框架 :Android图片加载与缓存:Android Glide 的用法

    使用Android Glide,需要先下载Android Glide的库,Android Glide在github上的项目主页: https://github.com/bumptech/glide . ...

  7. DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP

    DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP 程序员搞任何语言的程序开发上升到一定的层次,要想进步,必须要接触和学习使用优秀的开源框架. MORMOT封装了WINDOWS最新的H ...

  8. spring (由Rod Johnson创建的一个开源框架)

    你可能正在想“Spring不过是另外一个的framework”.当已经有许多开放源代码(和专有)J2EEframework时,我们为什么还需要Spring Framework? Spring是独特的, ...

  9. 介绍一个非常好用的跨平台C++开源框架:openFrameworks

    介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...

随机推荐

  1. SOAPdenovo组装软件使用记录

    背景: 1.为什么要从头测序组装基因组? 基因组是不同表型的遗传基础:获得参考基因组是深入研究一个生物体全基因组的第一步也是必须的一步:从头测序组装能够对新的测序物种构建参考基因组: 2.为什么要研究 ...

  2. eclipse下的mybatis插件:MyBatipse

    MyBatipse:Eclipse 下的 Mybatis插件 MyBatipse是Eclipse的一个插件,提供了内容提示和Mybatis的配置文件验证功能: 特点 XMLEditor 的增强 代码自 ...

  3. HADOOP HA 踩坑 - 所有 namenode 都是standby

    报错: 无明显报错 状况: 所有namenode都是standby,即ZK服务未生效 尝试一:手动强制转化某个namenode为active 操作:在某台namenode上,执行 hdfs haadm ...

  4. 基于Python——实现两个文件夹中的文件拷贝

    [背景]当复制一个文件夹中的某文件到另一个文件夹中时是一件很容易的事情,可是如果存在很多文件夹中的文件需要一一拷贝,就会变的很繁琐,稍有不慎就会遗漏,今天就用Python来解决这个问题—— [代码实现 ...

  5. Servlet的5种方式实现表单提交

    http://www.cnblogs.com/zhanghaoliang/p/5622900.html

  6. 1022. Sum of Root To Leaf Binary Numbers从根到叶的二进制数之和

    网址:https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers/ 递归调用求和,同时注意%1000000007的位置 /** * ...

  7. [Oracle][RAC]Oracle RAC环境里打OCW上的个别Patch,然后Rollback,发现OCW也被Rollback掉了

    对于Oracle RAC来说,存在着DB层面的Patch,也存在着GI层面的Patch. 本文介绍的是,GI层面,打Patch----> rollback 的动作之后,原来的OCW被Rollba ...

  8. spring+springMvc+struts的SSH框架整合

    1.建立一个web项目 2.导入SSH框架所需jar包 3.配置web.xml文件 <?xml version="1.0" encoding="UTF-8" ...

  9. java 集合之set。

    Set具有与Collection完全一样的接口,因此没有任何额外的功能,不象前面有两个不同的List.实际上Set就是Collection,只是行为不同.(这是继承与多态思想的典型应用:表现不同的行为 ...

  10. Jquery 相关笔记

    //得到所有check var c = $(this).parent().find('input:checkbox'); if (c.is(':checked')) { var role = {}; ...