导读:在这次和大家一起开发的今日开讲后台管理系统中,我们用的是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. 【SQL Server】系统学习之三:逻辑查询处理阶段-六段式

    一.From阶段 针对连接说明: 1.笛卡尔积 2.on筛选器 插播:unknown=not unknuwn 缺失的值: 筛选器(on where having)把unknown当做FALSE处理,排 ...

  2. $.getJSON 返回值、AJAX异步调用步骤

    //首先要判断用户录入的手机号是不是中国移动的,不是直接给出提示,并终止登录 if($("#cmUsername1").val().isMobile())//手机号码 { jQue ...

  3. ADF_Database Develop系列1_通过UML数据库开发之建Logical UML Class Model

    2013-05-01 Created By BaoXinjian

  4. 触发隐藏链接进行文件下载,click无响应

    function invokeClick(element) { if (element.click) element.click(); //判断是否支持click() 事件 else if (elem ...

  5. viewpage的使用

    http://blog.csdn.net/loongggdroid/article/details/19970523

  6. jquery树形菜单完整代码

    本实例实现了树形的动态菜单,兼容IE8,火狐,Chrome等浏览器.使用了jQuery的toggle() 方法.效果和代码如下: <!DOCTYPE html PUBLIC "-//W ...

  7. 89、Android EditText 悬浮停靠

    package com.willen.topFloatDemo; import android.content.Context; import android.os.Handler; import a ...

  8. android SFC

    本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始Andr ...

  9. EXT layout

    1.Vbox createCenterPanel: function () { var pan = Ext.create('Ext.Panel', { height: '100%', title: ' ...

  10. [SQL]动态sql语句基本语法

    动态sql语句基本语法 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_ex ...