zoukankan      html  css  js  c++  java
  • 国内优秀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. }

  • 相关阅读:
    使用百度字体编辑器删除不必要字体,减少字体文件体积
    使用npm安装webpack失败时,可能被墙要为cmd命令行设置代理
    让字体图标代替雪碧图,减少请求带宽
    隐藏浏览器原生的滚动条
    台式机安装CentOS7.6 Minimal ISO系统并增加图形化桌面
    像我这样笨拙地生活(廖一梅)--节选
    随心随意亦舒经典语录
    file / from install of XXX conflicts with file from package filesystem-XXX
    nginx代理php项目的websocket
    Redis4配置文件详解
  • 原文地址:https://www.cnblogs.com/qfchen/p/10643817.html
Copyright © 2011-2022 走看看