导读:在这次和大家一起开发的今日开讲后台管理系统中,我们用的是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. NeHe OpenGL教程 第十三课:图像字体

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. Python中split()函数的用法及实际使用示例

    Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...

  3. apache 做http代理

    1.修改 http.conf 文件 ,增加 监听端口 Listen 开启需要的扩展 LoadModule proxy_module modules/mod_proxy.so LoadModule pr ...

  4. Linux Deepin 2014安装Lenovo LJ2600D驱动

    双11老师给实验室抢了个Lenovo LJ2600D的USB接口打印机,并用旧的HP-1080MFP网络打印服务器连接上了.Windows下就不多说了,官方给的驱动就是针对它的,同学们都用得爽爆了,因 ...

  5. JAVA 综合布局应用

    //布局综合应用 import java.awt.*; import javax.swing.*; public class Jiemian4 extends JFrame{ JPanel mb1,m ...

  6. ThinkPHP连接sql server数据库

    亲身经历,在网上找连接sql server数据库的方法,还是不好找的,大多数都是照抄一个人的,而这个人的又写的不全,呵呵,先介绍一下我连接的方法吧.如果你是用THINKPHP连接,那么最重要的就是配置 ...

  7. JadClipse eclipse反编译插件

    A.下载JadClipse,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download,注意选择与eclipse版本一致的版本 ...

  8. python中的生成器

    什么是生成器? 生成器是一个包含了特殊关键字yield的函数.当被调用的时候,生成器函数返回一个生成器.可以使用send,throw,close方法让生成器和外界交互. 生成器也是迭代器,但是它不仅仅 ...

  9. 为FaceBook审核提交模拟器包及自己验证模拟器包

    为FaceBook审核提交模拟器包及自己验证模拟器包折腾了一番,因为我的项目是用cocoapods管理的,所以跟普通直接运行name.xcodeproj项目有所不同. 切入正题 1.先设置 relea ...

  10. 多窗体之间方法调用 z

    C# Code: /// <summary> /// 主窗体接口 /// </summary> public interface IMdiParent{   void Pare ...