• [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/


  • 相关阅读:
    19.1.25 [LeetCode8]String to Integer (atoi)
    19.1.23 CJK Round 1A 2015
    19.1.22 CJK Qualification Round 2015
    【转载】超级弹丸论破2再见绝望学园攻略
    19.1.20 [LeetCode 7]Reverse Integer
    19.1.20 [LeetCode 6]ZigZag Conversion
    19.1.20 [LeetCode 5]Longest Palindromic Substring
    python socket-select io多路复用
    web框架 源码
    python socket
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010353.html
Copyright © 2020-2023  润新知