JFinal+maven+freemarker 入门教程

写在前面的话

前两天听说了JFinal,简介甚是牛擦,号称java框架终结者,也是醉了,言归正传,我们就不研究他的宣传语了。不过他这个框架确实有他所说的一些特性,一起看看。


官网

http://www.jfinal.com/


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+maven部署

  1. 首先创建一个maven本地web工程,至于怎么创建在此就不再赘述,利用eclipse或者直接mvn命令创建
  2. pom.xml添加相关依赖

    
        junit
        junit
        3.8.1
        test
    
    
        com.jfinal
        jetty-server
        8.1.8
        provided
        
            
            jetty-server
            org.eclipse.jetty
            
        
    
    
        com.jfinal
        jfinal
        1.9
    
    
        c3p0
        c3p0
        0.9.1.2
    
    
        org.freemarker
        freemarker
        2.3.20
    
    
        log4j
        log4j
        1.2.16
    
    
        mysql
        mysql-connector-java
        5.1.20
    
    
        com.jfinal
        cos
        26Dec2008
    

3.  web.xml添加如下代码


      jfinal
      com.jfinal.core.JFinalFilter
      
           configClass
           com.demo.jfinal.config.DemoConfig
      
     
     
          jfinal
          /*
     

4. 创建一个JFinal入口配置文件DemoConfig,需要继承JFinal的JFinalConfig类

package com.demo.jfinal.config;

import java.util.Properties;

import com.demo.jfinal.controller.BlogController;
import com.demo.jfinal.controller.HelloController;
import com.demo.jfinal.model.Blog;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.ext.handler.ContextPathHandler;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.render.FreeMarkerRender;
import com.jfinal.render.ViewType;

/**
 * @author jack.song
 * @time 2014年12月26日
 */
public class DemoConfig extends JFinalConfig{

	@Override
	public void configConstant(Constants arg0) {
		arg0.setDevMode(true);//开发模式设置
		arg0.setBaseViewPath("template");//页面模板根路径
		arg0.setFreeMarkerViewExtension(".ftl");//freemarker 模板后缀名
	}

	@Override
	public void configHandler(Handlers arg0) {
		arg0.add(new ContextPathHandler("base"));//添加项目contextPath,以便在页面直接获取该值 ${base?if_exists}
	}

	@Override
	public void configInterceptor(Interceptors arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void configPlugin(Plugins me) {
		loadPropertyFile("common_config.txt");//添加相关插件,读取配置文件
		C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"),
		getProperty("user"), getProperty("password"));
		me.add(c3p0Plugin);
		ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
		me.add(arp);
		arp.addMapping("blog", Blog.class);//添加相关model配置
	}

	@Override
	public void configRoute(Routes arg0) {
		arg0.add("/", HelloController.class);//添加项目路由,类似于struts的action 配置文件,此处配置controller名,action名称对应方法名
		arg0.add("/blog", BlogController.class);
	}
	
	public void afterJFinalStart() {
	  Properties p = loadPropertyFile("freemarker.properties");//由于我们用到freemarker,所以在此进行freemarker配置文件的装载
	  FreeMarkerRender.setProperties(p);
	}
	/**
	 * 建议使用 JFinal 手册推荐的方式启动项目
	 * 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
	 */
	public static void main(String[] args) {
		JFinal.start("src/main/webapp", 80, "/", 5);//启动配置项
	}
}

5.  上一步中为JFinal的主要入口类,我们必须创建它,并进行相应的配置改动,其中的common_config.txt,freemarker.properties附下

##common_config.txt
jdbcUrl = jdbc:mysql://127.0.0.1/jfinal_demo?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
user = root
password = password

#freemarker.properties
default_encoding=utf-8
#for production environment
template_exception_handler=ignore

#for testing
#template_exception_handler=DEBUG

template_update_delay=5
auto_import=/macros/demo.ftl as demo
			

locale=no_NO
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
number_format=#.##


6.  创建第一个controller,需要继承JFinal的controller 类

package com.demo.jfinal.controller;

import com.jfinal.core.Controller;

/**
 * @author jack.song
 * @time 2014年12月26日
 */
public class HelloController extends Controller {

	public void index(){
		render("/index.ftl");
	}
}

7.  创建index.ftl

<@demo.layout>

JFinal Demo 项目首页

欢迎来到 JFinal极速开发世界!




本Demo采用FreeMarker 作为视图文件,您还可以使用Jsp、Velocity或自定义类型视图。 点击此处开始试用Demo。























8. 上一步中的layout是freemarker的宏定义,代码如下

<#assign staticCssPath="${base}/static/css/"/>
<#assign staticImgPath="${base}/static/img/"/>
<#macro layout>







	




<#macro paginate currentPage totalPage actionUrl urlParas="">
	<#if (totalPage <= 0) || (currentPage > totalPage)><#return>
	<#local startPage = currentPage - 4>
	<#if (startPage < 1)><#local startPage = 1>
	
	<#local endPage = currentPage + 4>
	<#if (endPage > totalPage)><#local endPage = totalPage>
	
	


9.  启动

eclipse用run as 配置Main class为com.jfinal.core.JFinal

或者直接jetty配置启动如下图JFinal+maven+freemarker 入门教程_第1张图片


上述就是一些简单的部署启动步骤,由于是入门级,所以比较简单,一些代码也为直接放出,但是在此给出整个demo的代码,大家可以下载直接浏览

demo实例下载地址:TestJFinal.rar

总结:初步感觉JFinal确实比较快速,易学,以及一站化(前端+ORM),但是有比较大的侵入性,比如必须继承之类的

转载请注明出处http://blog.csdn.net/abudexiatian/article/details/42234617

你可能感兴趣的:(个人笔记)