FreeMarker自学之路 (一)初识

原创 2017年01月03日 08:42:05

freemarker 是一款模板引擎,之前我并没有接触过。上个月老师拿来一个项目,用的freemarker做的,感觉挺不错的,就想学习一下。
其实吧,学一门新知识我是很迷茫的,不知从哪开始学习,希望各位同行们提宝贵的意见,不胜感激!!!

freemarker (即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。)

工作原理:
假设在一个应用系统中需要一个HTML页面如下:

<html>
    <head>
        <title>Welcome!</title>
    </head>
    <body>
        <h1>Welcome Big Joe!</h1>
        <p>Our latest product:
        <a href="products/greenmouse.html">green mouse</a>!
    </body>
</html>
页面中的用户名(即上面的“Big Joe”)是登录这个网页的访问者的名字, 并且最新产品的数据应该来自于数据库才能随时更新。所以,不能直接在HTML页面中输入“Big Joe”、“greenmouse”及链接, 不能使用静态HTML代码。可以使用要求输出的模板来解决,模板和静态页面是相同的,只是它会包含一些FreeMarker将它们变成动态内容的指令:
<html>
    <head>
        <title>Welcome!</title>
    </head>
    <body>
        <h1>Welcome ${user}!</h1>
        <p>Our latest product:
        <a href="${latestProduct.url}">${latestProduct.name}</a>!
    </body>
</html>
模板文件存放在Web服务器上,当有人来访问这个页面,FreeMarker就会介入执行,然后动态转换模板,用最新的数据内容替换模板中${...}的部分,之后将结果发送到访问者的Web浏览器中。访问者的Web浏览器就会接收到例如第一个HTML示例那样的内容(也就是没有FreeMarker指令的HTML代码),访问者也不会察觉到服务器端使用的FreeMarker。(存储在Web服务器端的模板文件是不会被修改的;替换也仅仅出现在Web服务器的响应中。)
为模板准备的数据整体被称作为数据模型。数据模型是树形结构(就像硬盘上的文件夹和文件),在视觉效果上, 数据模型可以是(这只是一个形象化显示,数据模型不是文本格式,它来自于Java对象)

基本语法:
${…}:FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式被称为interpolation(插值)。
注释:注释和HTML的注释也很相似,但是它们使用<#– and –>来标识。不像HTML注释那样,FTL注释不会出现在输出中(不出现在访问者的页面中),因为FreeMarker会跳过它们。
FTL标签(FreeMarker模板的语言标签):FTL标签和HTML标签有一些相似之处,但是它们是FreeMarker的指令,是不会在输出中打印的。这些标签的名字以#开头。(用户自定义的FTL标签则需要使用@来代替#)

参考来源:FreeMarker

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AngularJS自学之路(一)——初识AngularJS和数据绑定

AngularJS 是什么AngularJS的官方文档是这样介绍它的。完全使用JavaScript编写的客户端技术。同其他历史悠久的Web技术(HTML、CSS和JavaScript)配合使用,使We...

Java重修之路(六)面向对象初识,类与对象,成员变量,局部变量,封装,构造函数,构造代码块,this关键字

今天终于进入正题,Java的面向对象部分,也是Java的核心部分,如果之前只是学过C语言而没有接触其他面向对象的语言的同学,这里要转换思想还是有些难度的,需要多思考,弄清楚什么是面向对象,面向对象与面...

Android系统之路(初识MTK) ------ 默认第一次开机屏幕亮度/日期格式/picture makeer model

Android系统之路(初识MTK) ------ 默认第一次开机屏幕亮度/日期格式/picture makeer model

Android系统之路(初识MTK) ------ 内置三方apk到Rom可移动/可卸载

Android系统之路(初识MTK) ------ 内置三方apk到Rom可移动/可卸载

Python学习之路-0-Python的初识与准备工作

注:文笔不好,不喜勿喷,当个段子看看就好 一、初识Python 第一次听到Python是在2016年大概暑假 时候(即将大三),因为对黑客技术的蜜汁热爱(虽然自己并不会),在玄魂大大的公众微信号中...

微信小程序学习之路01-初识微信小程序

2017年1月9日,这个日子终将会被载入互联网史册,微信小程序在今日正式发布,各大app出现小程序版本,比如现在好用的美团、美团外卖、车来了、小睡眠、猫眼电影、携程等,我个人感觉小程序将会越来越多的代...

Android系统之路(初识MTK) ------ 更改设备盘符名称/型号/名称/品牌/Version/Devices/Product......

Android系统之路(初识MTK) ------ 更改设备盘符名称/型号/名称/品牌/Version/Devices/Product......

我的Linux学习之路——1菜鸟篇——初识Linux

自从开始学习嵌入式和接触Linux,我开始慢慢的了解编程的魅力。严谨的逻辑,神奇的语法,以及强大的解决问题的能力,让我了解到了Linux和嵌入式的美丽。虽然最近的学习一直都比较痛苦,毕竟大学前三年的学...

Android系统之路(初识MTK) ------ 客制化开机LOGO跟开机动画/系统默认壁纸

Android系统之路(初识MTK) ------ 客制化开机LOGO跟开机动画/系统默认壁纸

Zigbee学习之路1(初识Zigbee)

hello,大家好。还记得是在大二上学期学习的Zigbee,现在,由于在学校参加嵌入式比赛需要,又需要用到Zigbee,所以,就又翻阅了一下以前搞过的一些资料,万幸我的笔记还在。打算就在博客上面,一边...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)