freemarker学习#1
在工作的过程中遇到了.ftl文件。打开发现里面是一些类似于html的代码,非常好奇这是一种什么样的文件,于是去网上搜了一下,了解到.ftl是Freemarker模板的文件后缀名。将问题转移到了Freemarker模板是一个什么东西。没办法。继续到网上寻找相关资料。下面内容来源于网络,感谢!
!
1、Freemarker是什么?
百度百科说:Freemarker是一款模板引擎。我是小白,非常遗憾,我也不知道模板引擎是个什么东西。不怕,继续百度模板引擎,百度百科继续说,模板引擎(特指用于web开发的模板引擎)是为了使用户界面与业务数据分离而产生的,能够生成特定格式的文档,用于站点的模板引擎就会生成一个标准的Html文档。个人理解就是:Freemarker是一个生成标准HTML文档的模板。
结合大牛的博客:”Freemarker事实上是一种比較简单的网页展示技术,说白了就是网页模板和数据模型的结合体。“工作方式是:“网页模板里面嵌入了数据模型中的数据、Freemarker自己定义流程控制语言、Freemarker自己定义的操作函数等等,在装载网页的时候,Freemarker模板自己主动从数据模型中提取数据,并解释整个网页为我们熟知的HTML页面。
”好的。基本和我们理解的差点儿相同。
知道了Freemarker是什么,以下就能够简单了解一下Freemarker了,并学习学习。
2、Freemarker基本知识
首先,Freemarker不是Web开发的应用程序框架,它是一个适用于Web应用程序框架中的组件,并且。它并不知道HTTP协议或Java
servlet的存在。只用来生成文本内容。它作为MVC框架视图层的组件。是为了给诸如Struts这种Model2应用框架提供解决方式。
Freemarker的形式是 模板 + 数据模型 = 输出 即Freemarker在html文件里插入一些自己的指令元素,能够使静态的HTML页面有一些动态效果。源码例如以下
HTML页面:
<html>
<head>
<title>Welcom!</title>
</head>
<body>
<h1>Welcome Big Joe!</h1>
<p>Our latest product:
<a href="products/greenmouse.html">green mouse</a>!
</body>
</html>
Freemarker改动后的代码:
<html>
<head>
<title>Welcom!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
这个模板存放在Webserver上,当訪问这个页面时, Freemarker将介入运行,然后动态转换模板,用最新的数据内容替换模板中${...}的部分。
能够发现的是。文件里并未指明怎样取到诸如${...}的值,这就是Freemarker的特点。由于作为MVC框架视图层的组件,它的重要思想就是表现逻辑和业务逻辑相分离。
它不关心怎么取到数据,它默认数据已经取到了,这些取数据的操作将由程序猿编写,将由程序语言诸如Java来实现。 Freemarker模板所用的数据被包装成data-model
数据模型。所以说,(HTML)模板 + 数据模型 = (Freemarker)输出
另外:数据模型的基本结构是树状的,在 Freemarker手冊中将这样的形式比喻为:计算机文件系统。我个人理解的是:就像一个类。它有属性一样,比方:latestProduct具有url和name两个属性。
比方訪问price,写成:animals.mouse.price
这样的叫做sequences序列
假设要获得第一个动物的名字,代码为:animals[0].name
interpolations插值 前面介绍过了
tags标签 : 和HTML标签类似。可是Freemarker的指令不会输出出来的东西。这些标签的使用一般以符号#开头(用户自己定义的FTL标签 使用@符号来取代#)
: Freemarker的凝视和HTML的凝视相似,可是用<#--和-->
: FTL标签(关系类似于HTML标签table标签<table>和</table>与table元素的关系)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Joe将跳过<#if condition>和</#if>标签间的内容
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
sequence as loopVariable>repeatThis</#list>
能够创建一个文件单独包括版权声明copyright_footer.html,在须要的地方插入。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
和默认值,比方:
freemarker学习#1的更多相关文章
- FreeMarker 学习
一.FreeMarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是 ...
- Freemarker学习中遇到的问题
在网上找到了尚学堂的视频,同时有书和源码等资料.但是在跟着练习的过程中,代码运行报了错: 2015-7-20 22:26:40 freemarker.log.JDK14LoggerFactory$JD ...
- FreeMarker学习(宏<#macro>的使用)
原文链接:https://my.oschina.net/weiweiblog/blog/506301?p=1 用户定义指令-使用@符合来调用 有两种不同的类型:Macro(宏)和transform( ...
- freemarker学习
链接: http://swiftlet.net/archives/category/freemarker
- FreeMarker学习教程
copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...
- freemarker学习 (servlet + freemarker -> Struts2+freemarker -> springMVC+freemarker)
什么是freemarker? freemarker类似于jsp,但不是jsp!怎么说呢?freemarker文件后缀是.ftl,它不像jsp本质是servlet,它将构建模板.解析模板.使用模板分离开 ...
- freemarker学习笔记
在模板中定义的变量有三种类型: 引用 1:plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换. 2:局部变量:在宏定义体中有效,使用loca ...
- Rhythmk 一步一步学 JAVA (10): Freemarker 学习 1 - 入门
FreeMarker 笔记: 1. 注释: <#-- 注释内容 -#> 2.<#if condition> content1 <#else> content2 ...
- FreeMarker学习系列之一
一. 基本概念 ${...}: FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式插值 FTL 标签 (FreeMarker模板的语言标签): FTL标签和HTML标签有一些相似 ...
随机推荐
- 【Hadoop】HA 场景下访问 HDFS JAVA API Client
客户端需要指定ns名称,节点配置,ConfiguredFailoverProxyProvider等信息. 代码示例: package cn.itacst.hadoop.hdfs; import jav ...
- [device]/proc/devices and /dev/
1. /proc/devices和/dev cat /proc/devices 列出在当前运行的内核中已经注册的设备名称以及设备的Major主设备号.其中的设备信息是驱动程序在加载时生成的,也可以说是 ...
- Scala类中的get与set
在scala类中get和set使用有以下几种: 1. var foo: Scala自动合成一个getter和一个setter 2. val foo: Scala自动合成一个getter scala中v ...
- linux 安装开启SNMP协议,最下面是yum安装
Linux SNMP 以下的示例采用SUSE10 Linux环境,但它同样适用于其它Linux发行版. 编译和安装 首先我们需要下载Net-SNMP的源代码,选择一个版本,比如5.7.1,地址如下: ...
- Golang HTTP文件上传
2018年02月08日 10:07:13 冷月醉雪 阅读数:346 标签: golangHTTP文件上传更多 个人分类: Go 版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...
- Spring MVC学习之三:处理方法返回值的可选类型
http://flyer2010.iteye.com/blog/1294400 ———————————————————————————————————————————————————————————— ...
- Ubuntu libpng png++安装
http://blog.csdn.net/xiaozhun07/article/details/49865785 png使用过程问题小结: (1) libpng “png_set_longjmp_fn ...
- GUI的广泛应用是当今计算机发展的重大成就之一
GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用.人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口.菜单.按键等方式来方便地进行操作.而嵌入式GUI具有下面几 ...
- java.util下有一个Comparator(比较器)
java.util下有一个Comparator(比较器) 它拥有compare(),用来比较两个方法. 要生成比较器,则用Sort中Sort(List,List(Compate)) 第二种方法更灵活, ...
- android 开发之hello world!
http://blog.sina.com.cn/s/blog_4e08922b0100nh6e.html http://blog.csdn.net/poechant/article/details/7 ...