导读:在这次和大家一起开发的今日开讲后台管理系统中,我们用的是JFinal框架。开始的时候,说是用SSH,心里一阵窃喜,刚刚做了网上商城的项目,对于这个框架还算是接触过了。JFinal却是个新货,心里一阵嘀咕。不顾,接触了之后,再去看,其实都差不多了。本篇博客,就主要介绍一下JFinal这个东西。

一、JFinal简介

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。 在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!



JFinal有如下主要特点:

MVC架构,设计精巧,使用简单

遵循COC原则,零配置,无xml

独创Db + Record模式,灵活便利

ActiveRecord支持,使数据库开发极致快速

自动加载修改后的java文件,开发过程中无需重启web server

AOP支持,拦截器配置灵活,功能强大

Plugin体系结构,扩展性强

多视图支持,支持FreeMarker、JSP、Velocity

强大的Validator后端校验功能

功能齐全,拥有struts2的绝大部分功能

体积小仅248K,且无第三方依赖

二、环境说明

整体概说,从三层的经验来看,如果一个程序要想跑起来,那么就得涉及到:数据持久化操作,业务逻辑处理,页面赋值,页面效果等等。所以,我也将以三层的思路来介绍JFinal的环境搭建。事实上,也算不上是环境搭建,只是对着手册,结合三层的学习,加深一下自己的理解和熟悉度。

首先看一个搭建好的结构图:

说明:DemoConfig是启动文件,a_little_config配置的是数据库连接,log4j是日志信息,jetty-server,这个东西简单说算一个容器吧,嗯,也可以理解为一种服务吧。目前对这个东西的理解不是很深刻,不过,在打包发布的时候,有特别提到这两个文件,正在深入学习中。freemarker,这是一个让我们可以在HTML页中使用freemarker表达式的一个包,类似于.net mvc的模型绑定。

2.1,model类:

定义用户实体,代码非常简单



package model;

import com.jfinal.plugin.activerecord.Model;

public class User extends Model<User>{

}

继承Model就行了,无需 getter、setter 方法,无需Annotation,无需xml

2.2,Dao类

<span style="font-family:KaiTi_GB2312;font-size:18px;">@SuppressWarnings("serial")
public class TjIndustry extends BaseTjIndustry<TjIndustry> {
public static final TjIndustry dao = new TjIndustry(); /**
* 分页查询所有的行业
* @param 页面号
* @param 页面大小
* @return 查询到的记录
* @author Angel
* @throws Exception
*/
public Page<TjIndustry> PageIndustryInfo(int pageNumber,int pageSize) throws Exception{
Page<TjIndustry> pgList=null;
try {
pgList= paginate(pageNumber, pageSize,"select industryName,ranking,id,versionStartTime ","from tj_industry where isDelete=0 ORDER BY ranking DESC");
} catch (Exception e) {
throw e;
}
return pgList;
}</span>

2.3,service(Bll)类

<span style="font-family:KaiTi_GB2312;font-size:18px;">	@Before(Tx.class)
public Page<TjIndustry> getPageList(Integer pageNumber, int pageSize) throws Exception {
Page<TjIndustry> pgTjIndustry = null;
try {
pgTjIndustry=TjIndustry.<span style="color:#ff0000;">dao</span>.PageIndustryInfo(pageNumber, pageSize);
} catch (Exception e) {
throw e;
}
return pgTjIndustry;
}
</span>

2.4,controller

<span style="font-family:KaiTi_GB2312;font-size:18px;">	/**
* 行业管理主页面
*/
@Before(LoginInterceptor.class)
public void list() { <span style="color:#ff0000;">render(</span>"list.html");
} </span>

总结:结合之前学过的知识来看,真的是没什么新东西。都一样,不一样的地方非常少,所以说,这是一个快速开发的一个框架。

三、总结

个人感觉,这套框架比Ssh真的要简单很多。而且配置要少很多,如果配置少的话,那也就意味着代码量少一点,然后学习成本低一点。对于一个想要快速开发的人来说,或者降低成本(学习、时间)的角度来说,感觉这是个不错的选择。

而且,JFinal有成型的demo,还有手册及产品说明。这对于初学者来说,学习成本几乎没有。目前只是刚接触这个框架,具体深入的东西,还在进一步的学习中。

更多内容,请参考:http://www.jfinal.com/

[JFinal 2] JFinal 开发框架的更多相关文章

  1. [JFinal 1] JFinal和SSH中使用拦截器的对比

    导读:先前在做.NET项目时,拦截的功能主要是依靠缓存session来实现.当需要跳转到某个页面,使用某个功能查询一些数据时,会根据session中的用户值来判断是否已经正常登录,如果没有,则重定向到 ...

  2. JFinal极速开发框架使用笔记

    记录第一次使用JFinal,从简单的框架搭建到增删改查,从自带的方法到正常框架习惯的使用方式. JFinal官网:http://www.jfinal.com/ JFinal 是基于 Java 语言的极 ...

  3. JFinal极速开发框架使用笔记(四) _JFinalDemoGenerator实体类生成及映射自动化

    运行_JFinalDemoGenerator生成实体类和映射之前的项目结构: 运行之后: 生成和改变的文件: 实体类: package com.wazn.model; import com.wazn. ...

  4. jfinal框架教程-学习笔记(一)

    JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java 语言所有优势 ...

  5. jfinal框架教程-学习笔记

    jfinal框架教程-学习笔记 JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restfu ...

  6. JFinal开发环境搭建,JFinal开发案例

     JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java 语言所 ...

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

    Jfinal框架是什么框架?适用于什么项目呢? jfinal 基于spring MVC研发的框架,操作简单.节省代码,适用于所有web项目.适合中小型项目开发.10分钟写出一个页面的增删改查.目前所在 ...

  8. JFinal概述

    JFinal概述 JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再 ...

  9. Hello JFinal World

    JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java 语言所有优势 ...

随机推荐

  1. Altiium Designer 09 解决局域网冲突的办法(转载)

    Altiium Designer 09 解决局域网冲突的办法(转载) 一 通过防护墙禁止进程访问网络: 1.1打开DXP.EXE,然后在360的流量防护墙或WINDOWS防护墙禁止该进程访问网络.注意 ...

  2. URI

    1, URI (标识.定位任何资源的字符串) 在电脑术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串. 该种标识允许用 ...

  3. 使用系统UITabbarItem自定义图片显示原本颜色和自定义文字颜色

    ...... ThirdViewController *thirdVC = [[ThirdViewControlleralloc]initWithTitle:@"搜索信息"]; / ...

  4. C++学习40 抛出自己的异常

    throw 是C++中的关键字,用来抛出异常.如果不使用 throw 关键字,try 就什么也捕获不到:上节提到的 at() 函数在内部也使用了 throw 关键字来抛出异常. throw 既可以用在 ...

  5. data-icon=""图片还可以是自定义的?

    自定义的图片怎么写啊? data-icon = "地址" 不对啊????? 不是写地址,而是设置css 比如 data-icon="mm" 那么在css中肯定有 ...

  6. 官网下载jdk

    http://www.oracle.com/technetwork/java/javase/downloads/index.html 第一步: 第二步:默认是显示最新版本的,如果需要其他版本的,拖到最 ...

  7. javascript自执行匿名函数

    1)自执行匿名函数: 常见格式:(function() { /* code */ })(); 2)作用:       function中的code代码在解释时就已经在运行了.因此可以用它创建命名空间, ...

  8. MSSQL中的随机函数

    随机函数:rand()在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会 ...

  9. nyoj 61 传纸条

    点击打开链接 传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做 ...

  10. Centos安装软件小结-20160325

    三种安装包 bin包 rpm包 源码包 1.bin包 1.先赋予权限: chmod 777 *.bin 2.开始安装: ./.bin 2.rpm包(以jdk为例)\ yum search jdk\ y ...