FreeMarket模板引擎快速入门【面试+工作】

FreeMarket模板引擎快速入门【面试+工作】

FreeMarker 快速入门

FreeMarker是一个很值得去学习的模版引擎。它是基于模板文件生成其他文本的通用工具。本章内容通过如何使用FreeMarker生成Html web 页面 和 代码自动生成工具来快速了解FreeMarker。

1 简介

FreeMarker是一款用java语言编写的模版引擎,它虽然不是web应用框架,但它很合适作为web应用框架的一个组件。

特点:

  • 轻量级模版引擎,不需要Servlet环境就可以很轻松的嵌入到应用程序中
  • 能生成各种文本,如html,xml,java,等
  • 入门简单,它是用java编写的,很多语法和java相似

工作原理:

2 FreeMarker 程序

这里通过模拟简单的代码自动生产工具来感受第一个FreeMarker程序。

项目目录结构

项目创建流程

第一步:创建一个maven项目导入 FreeMarker jar 包

第二步:创建目录templates,并创建一个 FreeMarker模版文件 hello.ftl

第三步:创建一个运行FreeMarker模版引擎的 FreeMarkerDemo.java 文件

第四步:运行main方法后刷新项目

pom.xml 文件 ,maven 项目核心文件,管理 jar 包。

hello.ftl FreeMarker基本语法: ${xxx} xxx 相当于占位符,java后台给xxx赋值后,再通过${}输出

FreeMarkerDemo.java 核心方法,使用 FreeMarker 模版引擎。

运行程序后刷新项目,会发现多了一个AutoCodeDemo.java类。不仅仅是java类,xml也是可以。笔者就是通过FreeMarker做了一个简易的工具类,公司的一个标准管理页面及其增删改查等功能,以及相关的配置文件(十三个文件),一个回车就全部自动生成(偷懒ing)。

3 FreeMarker 语法

语法和java很类似,其中宏的概念可能比较陌生,先上代码

stringFreeMarker.ftl FreeMarker主要核心知识点

otherFreeMarker.ftl 为了测试命名空间 和 include 指令的FreeMarker文件

FreeMarkerDemo.java 核心方法

User.java 为了测试 FreeMarker的集合对象

最后的打印结果

语法详解

数据类型 和java不同,FreeMarker不需要定义变量的类型,直接赋值即可。 字符串: value = "xxxx" 。如果有特殊字符 string = r"xxxx" 。单引号和双引号是一样的。 数值:value = 1.2。数值可以直接等于,但是不能用科学计数法。 布尔值:true or false。 List集合:list = [1,2,3] ; list=[1..100] 表示 1 到 100 的集合,反之亦然。 Map集合:map = {"key" : "value" , "key2" : "value2"},key 必须是字符串哦! 实体类:和EL表达式差不多,直接点出来。

字符串操作 字符串连接:可以直接嵌套${"hello , ${name}"} ; 也可以用加号${"hello , " + name}

字符串截取:string[index]。index 可以是一个值,也可以是形如 0..2 表示下标从0开始,到下标为2结束。一共是三个数。

比较运算符 == (等于),!= (不等于),gt(大于),gte(大于或者等于),lt(小于),lte(小于或者等于)。不建议用 >,< 可能会报错! 一般和 if 配合使用

内建函数 FreeMarker 提供了一些内建函数来转换输出,其结构:变量?内建函数,这样就可以通过内建函数来转换输出变量。 html: 对字符串进行HTML编码; cap_first: 使字符串第一个字母大写; lower_case: 将字符串转成小写; upper_case: 将字符串转成大写; size: 获得集合中元素的个数; int: 取得数字的整数部分。

变量空判断 !   指定缺失变量的默认值;一般配置变量输出使用 ??  判断变量是否存在。一般配合if使用 <#if value??></#if>

宏指令 可以理解为java的封装方法,供其他地方使用。宏指令也称为自定义指令,macro指令 语法很简单:<#macro val > 声明macro </#macro>; 使用macro <@val />

命名空间 可以理解为java的import语句,为避免变量重复。一个重要的规则就是:路径不应该包含大写字母,使用下划线_分隔词语,myName --> my_name 语法很简单:<#import "xxx.ftl" as val>

其他没有说明的语法是因为和java一样,没什么特别之处。所以没有列出来。

4 Freemarker Web

这里是和SpringMVC整合的,SpringMVC的配置就不多说了,笔者也写过相关的文章,同时也会提供源码

导入相关的jar pom.xml

springmvc的配置文件:

Controller 层

最后是Freemarker文件

源码地址:https://gitee.com/itdragon/springmvc

5 小结

1 知道了FreeMarker是一块模版引擎,可以生产xml,html,java等文件

2 知道了FreeMarker文件提供占位符,java文件提供数据,通过FreeMarker模版引擎生产有数据的页面,文中是将数据放在Map中。web应用可以用setter/getter 方法

3 知道了FreeMarker语法中字符串的显示特殊字符,截取的操作。以及一些内置方法的使用

4 重点了解FreeMarker的空判断知识点。判断变量是否为空用 "??" ,如果变量为空设置默认值。如果不注意空问题,可能会出现黄色页面的提示哦!

5 FreeMarker的宏概念,命名空间,引入文件,给变量赋值,集合的遍历等。

6 Freemarker 整合SpringMVC。

到这里FreeMarker的入门就结束了,是不是很简单。如果有什么不对的地方,请指正!

原文发布于微信公众号 - Java帮帮(javahelp)

原文发表时间:2018-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文武兼修ing——机器学习与IC设计

JavaScript入门笔记(1)JavaScript概述JavaScript基本语法

JavaScript概述 JavaScript学习目标 目标水平:入门级别(会使用JavaScript,不求精通) 当前水平:Python,C与C++编程基础,...

3039
来自专栏Python

Django视图层之路由配置系统(urls)

视图层之路由配置系统(urls) URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就...

1939
来自专栏walterlv - 吕毅的博客

C#/.NET 中推荐的 Dispose 模式的实现

发布于 2015-02-05 02:10 更新于 2018-06...

451
来自专栏小李刀刀的专栏

Blade 模板中有关 section 的那些事

Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚。比如,使用中...

3579
来自专栏天天

js事件对象相关随记

813
来自专栏程序员宝库

最快的 Python Web 框架入门

环境:python3.5+ python -m pip install sanic

854
来自专栏积累沉淀

JavaScript DOM操作表格及样式

一.操作表格 <table>标签是HTML中结构最为复杂的一个,可以通过DOM来创建生成它(比较麻烦),或者HTML DOM来操作它。 //需要操作的table...

17710
来自专栏jojo的技术小屋

原 荐 自己写JSON编辑器

作者:汪娇娇 时间:2018年1月15日 下一篇:自己写代码对比工具 时间过得好快,一下子就2018年了,想起好久没写博客,不觉有些浪费了时光,今天便来补一篇。...

4997
来自专栏顶级程序员

50 行代码教你爬取猫眼电影 TOP100 榜所有信息

对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼...

1133
来自专栏软件开发

一个小时学会jQuery

前一段时间录了一套关于jQuery的视频分享给大家,可以在下载区下载到,本来想配合文字一起的,后面发现视频+帮助文档也是非常好的学习方法。 一、jQuery简介...

1877

扫码关注云+社区