JFinal+maven+freemarker入门教程

RSS

编程大巴

开发文档

文档推荐

资源下载

在线手册

  • Java前台后台数据传递、中文乱码解决方法
  • 1 向前台传递数据;2 向后台传递数据;3 ajaxpost提... 详细
  • eclipse的jigloo插件可视化开发javaswing/SW
  • 将java中Double类型的科学计数法转换为指定格
  • quartz动态更改执行时间
  • 鉴于CXF框架的webservice学习 传递xml,json
  • 今日排行

  • 周排行

  • 月排行

  • Spring MVC前台属性数据的传递和后台属...
  • Redis缓存系统(一)Java-Jedis操作Red...
  • eclipse的jigloo插件可视化开发javaswi...
  • Java前台后台数据传递、中文乱码解决方法
  • Swing中常用的JFrame和JDialog窗体用法...
  • javaspringmvc+mysql整合写的一个简单的...
  • Json字符串转换为java对象的各种实现方法
  • Java开源报表JasperReport、iReport4.5...
  • Java中JFrame的getContentPane()和setC...
  • springmvc+spring+mybatis+maven项目构建
  • 最新文章

  • hadoop(十)hive安装与自定义函数
  • windows操作系统对于程序运行时堆栈的管...
  • python如何使用virtualenvwrapper切换不...
  • 定时器与系统时间
  • 浅析Redis实现lock互斥访问资源
  • cocos2dx获取网络时间(一)
  • WPF快速入门系列(6)WPF资源和样式
  • 使用myeclipse建带注解的model实体类
  • C语言那点事如何从零学好C语言?
  • MATLAB图像处理 统计最大/最小/平均灰度
  • 编程下载

  • Android UI效果实现 滑动模糊渐变效果实现
  • Android学习自定义Dialog
  • Xamarin.Android通知详解
  • Android动态改变布局
  • android实现emoji输入
  • Android Spinner AutoCompleteTextView
  • Android中Eclipse开发工具的安装和Andr...
  • c构造函数
  • Android开发学习 sharedpreference的使用
  • Android新浪微博客户端(七)ListView中...
  • 热门专题

  • 李华明iOS-Cocos2d游戏开发专题
  • 本教程为 李华明 编著的iOS-Cocos2d游戏开发系列教程:教程涵盖关于i...... 详细
  • Directx11 游戏编程入门教程
  • 专题主要学习DirectX的初级编程入门学习,对Directx11的入门及初学者有...... 详细
  • Javascript 面向对象编程
  • "面向对象的JavaScript"这一说法多少有些冗余,因为JavaScript 语言本...... 详细
  • 首页 > 编程大巴 > 编程语言 > Java > 正文
编程大巴 http://www.it165.net/pro

JFinal+maven+freemarker入门教程

作者:  发布日期:2014-12-29 21:33:32
我来说两句( 0)
Tag标签: 入门教程  
  •  

    写在前面的话

    前两天听说了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部署

      首先创建一个maven本地web工程,至于怎么创建在此就不再赘述,利用eclipse或者直接mvn命令创建pom.xml添加相关依赖
      view source print ?
      01.
      02.
      03. junit
      04. junit
      05. 3.8.1
      06. test
      07.
      08.
      09. com.jfinal
      10. jetty-server
      11. 8.1.8
      12. provided
      13.
      14.
      15. jetty-server
      16. org.eclipse.jetty
      17.
      18.
      19.
      20.
      21. com.jfinal
      22. jfinal
      23. 1.9
      24.
      25.
      26. c3p0
      27. c3p0
      28. 0.9.1.2
      29.
      30.
      31. org.freemarker
      32. freemarker
      33. 2.3.20
      34.
      35.
      36. log4j
      37. log4j
      38. 1.2.16
      39.
      40.
      41. mysql
      42. mysql-connector-java
      43. 5.1.20
      44.
      45.
      46. com.jfinal
      47. cos
      48. 26Dec2008
      49.
      50.

       

      3. web.xml添加如下代码

       

      view source print ?
      01.
      02. jfinal
      03. class>com.jfinal.core.JFinalFilterclass>
      04.
      05. configClass
      06. com.demo.jfinal.config.DemoConfig
      07.
      08.
      09.
      10. jfinal
      11. /*
      12.

       

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

       

       

      view source print ?
      01. package com.demo.jfinal.config;
      02.  
      03. import java.util.Properties;
      04.  
      05. import com.demo.jfinal.controller.BlogController;
      06. import com.demo.jfinal.controller.HelloController;
      07. import com.demo.jfinal.model.Blog;
      08. import com.jfinal.config.Constants;
      09. import com.jfinal.config.Handlers;
      10. import com.jfinal.config.Interceptors;
      11. import com.jfinal.config.JFinalConfig;
      12. import com.jfinal.config.Plugins;
      13. import com.jfinal.config.Routes;
      14. import com.jfinal.core.JFinal;
      15. import com.jfinal.ext.handler.ContextPathHandler;
      16. import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
      17. import com.jfinal.plugin.c3p0.C3p0Plugin;
      18. import com.jfinal.render.FreeMarkerRender;
      19. import com.jfinal.render.ViewType;
      20.  
      21. /**
      22. * @author jack.song
      23. * @time 2014年12月26日
      24. */
      25. public class DemoConfig extends JFinalConfig{
      26.  
      27. @Override
      28. public void configConstant(Constants arg0) {
      29. arg0.setDevMode(true);//开发模式设置
      30. arg0.setBaseViewPath("template");//页面模板根路径
      31. arg0.setFreeMarkerViewExtension(".ftl");//freemarker 模板后缀名
      32. }
      33.  
      34. @Override
      35. public void configHandler(Handlers arg0) {
      36. arg0.add(new ContextPathHandler("base"));//添加项目contextPath,以便在页面直接获取该值 ${base?if_exists}
      37. }
      38.  
      39. @Override
      40. public void configInterceptor(Interceptors arg0) {
      41. // TODO Auto-generated method stub
      42.  
      43. }
      44.  
      45. @Override
      46. public void configPlugin(Plugins me) {
      47. loadPropertyFile("common_config.txt");//添加相关插件,读取配置文件
      48. C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"),
      49. getProperty("user"), getProperty("passhttp://www.it165.net/edu/ebg/" target="_blank" class="keylink">word"));
      50. me.add(c3p0Plugin);
      51. ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
      52. me.add(arp);
      53. arp.addMapping("blog", Blog.class);//添加相关model配置
      54. }
      55.  
      56. @Override
      57. public void configRoute(Routes arg0) {
      58. arg0.add("/", HelloController.class);//添加项目路由,类似于struts的action 配置文件,此处配置controller名,action名称对应方法名
      59. arg0.add("/blog", BlogController.class);
      60. }
      61.  
      62. public void afterJFinalStart() {
      63. Properties p = loadPropertyFile("freemarker.properties");//由于我们用到freemarker,所以在此进行freemarker配置文件的装载
      64. FreeMarkerRender.setProperties(p);
      65. }
      66. /**
      67. * 建议使用 JFinal 手册推荐的方式启动项目
      68. * 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
      69. */
      70. public static void main(String[] args) {
      71. JFinal.start("src/main/webapp", 80, "/", 5);//启动配置项
      72. }
      73. }

       

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

       

      view source print ?
      1. ##common_config.txt
      2. jdbcUrl = jdbc:mysql://127.0.0.1/jfinal_demo?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
      3. user = root

       

       

      view source print ?
      01. #freemarker.properties
      02. default_encoding=utf-8
      03. #for production environment
      04. template_exception_handler=ignore
      05.  
      06. #for testing
      07. #template_exception_handler=DEBUG
      08.  
      09. template_update_delay=5
      10. auto_import=/macros/demo.ftl as demo
      11.  
      12.  
      13. locale=no_NO
      14. datetime_format=yyyy-MM-dd HH:mm:ss
      15. date_format=yyyy-MM-dd
      16. number_format=#.##

       

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

       

      view source print ?
      01. package com.demo.jfinal.controller;
      02.  
      03. import com.jfinal.core.Controller;
      04.  
      05. /**
      06. * @author jack.song
      07. * @time 2014年12月26日
      08. */
      09. public class HelloController extends Controller {
      10.  
      11. public void index(){
      12. render("/index.ftl");
      13. }
      14. }

       

      7. 创建index.ftl

       

      view source print ?
      01. <@demo.layout>
      02.

      JFinal Demo 项目首页

      03.
      class="table_box">
      04.

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

      05.  
      06.


      07.  
      08. 本Demo采用FreeMarker 作为视图文件,您还可以使用Jsp、Velocity或自定义类型视图。
      09. 点击"${base?if_exists}/blog">此处开始试用Demo。
      10.  
      11.











      12.











      13.
      14. @demo.layout>
      8. 上一步中的layout是freemarker的宏定义,代码如下

       

       

      view source print ?
      01. <#assign staticCssPath="${base}/static/css/"/>
      02. <#assign staticImgPath="${base}/static/img/"/>
      03. <#macro layout>
      04. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      05. "zh-CN" xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
      06.
      07. "content-type" content="text/html; charset=UTF-8" />
      08. "${staticCssPath}manage.css" media="screen" rel="stylesheet" type="text/css" />
      09.
      10.
      11.
      class="manage_container">
      12.
      class="manage_head">
      14.
      "nav">
      15.
      16.
    • "${base?if_exists}/">首页
18.
19.
20.
21.
class="main">
22. <#nested>
23.
24.
25.
26.
27.
28.  
29. <#macro paginate currentPage totalPage actionUrl urlParas="">
30. <#if (totalPage <= 0) || (currentPage > totalPage)><#return>if>
31. <#local startPage = currentPage - 4>
32. <#if (startPage < 1)><#local startPage = 1>if>
33.  
34. <#local endPage = currentPage + 4>
35. <#if (endPage > totalPage)><#local endPage = totalPage>if>
36.  
37.
class="pagination">
38. <#if (currentPage <= 8)>
39. <#local startPage = 1>
40. if>
41. <#if ((totalPage - currentPage) < 8)>
42. <#local endPage = totalPage>
43. if>
44.  
45. <#if (currentPage == 1)>
46. 上页
47. <#else>
49. if>
50.  
51. <#if (currentPage > 8)>
54.
55. if>
56.  
57. <#list startPage..endPage as i>
58. <#if currentPage == i>
59. #{i}
60. <#else>
62. if>
63.
64.  
65. <#if ((totalPage - currentPage) >= 8)>
66.
69. if>
70.  
71. <#if (currentPage == totalPage)>
72. 下页
73. <#else>
75. if>
76.
77.

 

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

延伸阅读:

  • 1、SpringMVC入门教程及其原理讲解和实例代码下载
  • 2、RMI入门教程
  • 3、SpringMVC注解配置结合Hibernate的入门教程及其代码实例
  • 4、Mina入门教程(二)Spring4 集成Mina
  • 5、PentahoReportDesigner入门教程(二)
  • 6、TestNG 入门教程
  • 7、GoogleGuava入门教程

返回到首页

返回到编程大巴

  • Win32
  • Win32
  • OpenGL
  • OpenGL
  • ASP.NET MVC
  • ASP.NET MVC
  • cocos2d-x
  • cocos2d-x
  • WCF
  • WCF
  • Linq
  • Linq
  • Android
  • Android
  • QT
  • QT
  • MFC
  • MFC
  • JQuery
  • JQuery
About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规

你可能感兴趣的:(java,入门)