[JFinal 2] JFinal 开发框架

导读:在这次和大家一起开发的今日开讲后台管理系统中,我们用的是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/


原文地址:https://www.cnblogs.com/hhx626/p/6010353.html