制作网页---Freemarker小节

1.什么是Freemarker

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。

上个图


模板+数据模型=输出


2.数据类型

请注意,这里讲的是数据类型而上面说的是数据模型+模板=输出

在freemarker中,数据模型特指一个以root为根节点的哈希表,这个表中的所有数据,都是从Java后台传过来的。

而但是在模板中,也是可以定义数据的,这两种来源(Java后台与模板创建)的数据本质上没有区别,我们可以统称其为变量,变量具有以下类型:

(1)标量

①字符串

②数字

③日期

④布尔值

以上的类型分别对应Java里面的

java.lang.String

java.lang.Number

日期暂时无对应

java.lang.Boolean

(2)矢量/容器

容器的作用就是用来存放其他变量

①序列

java.util.List 或Java数组

②散列/哈希

java.util.Map或用户自定义的JavaBean

(3)子程序

①方法

利用Java反射机制传递过来的位于数据模型的变量

②函数

利用指令function创建的变量

③用户自定义指令

利用指令macro创建的变量


注:

①许多有实用功能的内建函数是依附于标量变量来调用的。

假设有标量x,且有内建函数method,调用方式是x?method

②子程序也像函数式编程一样,在程序之中处于第一等地位。

③方法与函数也只是来源不同,调用方式是通过插值,${expression}

而用户自定义指令的调用方式却类似于指令,假如有名为method的自定义指令,调用方式为<@method>xxxxx</@method>


3.模板

(1)文本

即html语言,这个按照原样输出

(2)插值

即${expression}

(3)FTL标签/指令

比如<#list> xxxxxxx <./#list>

或者用户自定义标签<@method> xxxxxxx </@method>

(4)注释

<#-- 这就是注释 -->


4.其他

(1)常用指令

①条件语句

可以说是一目了然,其中#else是可选的

<#if predict> 

语句1 

<.#else> 

语句2 

<./#if>

②循环语句

这里面的循环类似于C++11的范围for

<#list sequences as element>

${element}的语句

</#list>

③包含语句

<#include "xxxx.ftl">

包含另一段ftl代码

(2)不存在变量

这里说的不存在的意思既包括没有定义,也包括变量值为null,假设变量为x,处理方式有

①提供默认值

${x}!"xxx"

即如果x不存在,就提供默认值"xxx"

②提前判断

<#if x??>xxxxxxxx</#if>

即如果x不存在,整个语句都不会起作用。

(3)插值注意事项

①作用范围

A。文本区

比如,<h1> Hello ${name} </h1>

B。字符串表达式

比如,<#include "/footer/${company}.html">

②插入自动转换

我们知道,变量有:数字、字符串、日期、布尔 4种类型

插入到文本区,都是要转换为字符串,可能够自动转换的类型有,数字和字符串。

A。日期的转换,需要借助内建函数date、time、datetime来帮助freemarker转换

B。布尔的转换,需要借助内建函数string,比如${married?string("true","false")}当然也可以这样${married?string("yes","no")}

③转意处理

这个目的是为了防止跨站脚本攻击之类的。

使用escape指令,比如

<#escape x as x?html>
  ...
  <p>Title: ${book.title}</p>
  <p>Description: <#noescape>${book.description}</#noescape></p>
  <h2>Comments:</h2>
  <#list comments as comment>
    <div class="comment">
      ${comment}
    </div>
  </#list>
  ...
</#escape>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值