我的FreeMarker入门学习
2013-12-04 16:26
295 查看
1Freemarker 与JSP的区别
1.1标签的使用一般以符号#开头(FTL标签)
标签的使用一般以符号#开头。(用户自定义的FTL标签使用@符号来代替#).如:<#if>、<#list>
1.2${…}(插值)
${…} 输出一个变量值1.3基础指令
HTML一般基础指令比如判断、遍历等等都是用jsp控件.格式一般为:<for>Freemarker具有一些基础指令如判断、遍历等等.格式一般为:<# if>
1.3.1<#if>
<#if user='admin'> admin </#if>//user表示应用的变量:在指令中变量相当于'${}'
1.3.2<#list>
<#list animals as being>//animals为集合,being为集合中某对象.这种类似Java的foreach
1.3.3<#include>
<#include>跟jsp<%@include%>相似1.3.4不存在的变量
●使用"!"+默认值:${user!"Anonymous"} //相当于Java的三元运算.●使用"??":<#if user??></#if> //用"??"询问是否是不存在变量,如果为true就
不显示<#if>里信息.相当于Java的if(user!=null )
1.4Fragment自带内建函数(?形式)
内建函数提供始终可用的内置功能。内建函数以?形式提供变量的不同形式或者其他信息.如:${test?html},${test?upper_case?html}.2自定义指令
2.1模板定义
2.1.1创建和使用宏(相当于创建对象)
创建: <#macro greet>Hello</#marcro>使用: <@ greet/>
2.1.2使用参数(宏名称的后面位置用来定义变量,如果是多个变量用空格分隔)
创建:<#macro greet person>Hello ${person}</#macro>.使用:<@greet person="fred"/>
2.1.3嵌套内容(相当于调用方法)
在创建宏中可以通过<#nested>嵌套内容,也就是把引入宏位置里的内容写到<#nested>位置.如:创建:<#macro greet person><table><#nested></table></#macro>
使用:<@greet person='abs'><tr>123</tr></@greet>
输出:<table><tr>123</tr><table>
2.1.4命名空间
●如何在宏、循环中访问局部变量?将局部变量申明为全局变量<#global x = 1>,在通过${.globals.x}访问
●如果在同一个页面,多次引用(<#include>)同一个模板,该怎么区分?
将<#include>该为<#import>如:<# import "login.flt" as my>,
<#import "login.flt" as other>这样同一个页面多次引入同一个模板.
注意:
a修改变量<#assign username="admin " in my>
b多次引用其实是引用的同一个对象,所以使用my改变 username,那么
other获取的是username新值即admin.
2.1.5申明变量
●简单变量:可以在模板中任何位置访问.用assign或macro指令来创建或替换这些变量.●局部变量:只能在宏定义之内访问.用local指令来创建或替换这些变量(局部变量会隐藏非覆盖简单变量)
●循环变量:在list中自动创建,用assign来创建或替换这些变量(循环变量会隐藏非覆盖简单变量和局部变量).
2.2Java定义
●通过File、Class、Servlet创建Configuration.
●设置Configuration的输入、输出值
●设置Configuration的对象包装
●Configuration通过shared(Configureation层)、Environmnet、Template三层设置值
●创建Template,通过process设置任何对象数据.包括Java对象、XML.
●创建Template模板的时候(getTemplate)同时也缓存了模板.可调用 clearTemplateCache()清除模板缓存(可设置清除策略)、也可设置模板延迟更新时间,默认为5秒.
相关文章推荐
- 读取文件以行为单位逆序输出到另一文件
- 结果非预期,仍然感谢神
- 未来十年国家重点发展行业
- tomcat部署web项目的方法
- ThreadLocal深入研究-spring
- sys通过授予select_catalog_role角色给用户,使用户有权限查询数据字典。
- 关于SQL的Group By
- MYSQL-导出成xls文件
- 英语听力怎么提高
- 疯狂java java实现网页验证码
- android的TextView使用Html(图片显示)格式。。。。。。
- Unity3D学习笔记
- 面对一切,我们要坦然
- JSON语法跟JS语法一致的,JSON转JS很容易
- tomcat get提交乱码
- Java keytool配置https双向认证
- Ubuntu下FTP服务器搭建笔记 - vsftpd
- 子查询解嵌套in改写为exists
- 谷歌Volley网络框架分析。(四)缓存机制
- platform_driver_probe与platform_driver_register的区别