FreeMarker自学之路 (一)初识
来源:互联网 发布:网络小项目加盟 编辑:程序博客网 时间:2024/05/22 15:16
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
0 0
- FreeMarker自学之路 (一)初识
- 【Freemarker】之 初识(demo)
- AngularJS自学之路(一)——初识AngularJS和数据绑定
- Unity3d自学之路(一)
- 自学Swift之路(一)
- 游戏程序员自学之路(一)
- Hibernate4自学入门(一)——初识Hibernate
- UML之初识(一)
- AngularJS自学之路——知识点记录(一)
- 前端菜鸟的自学之路(一)
- 初识FreeMarker
- 初识freemarker
- freemarker初识
- 初识freemarker
- 初识FreeMarker
- [Freemarker] 初识FreeMarker
- JAVA自学之路 一:学会选择
- JAVA自学之路 一:学会选择
- 智能手机低谷已到?
- 深入浅出MyBatis-快速入门
- Struts2-core-2.3.1.1.jar包目录结构
- 理解HTTP
- 知识库--GC+CMS(70)
- FreeMarker自学之路 (一)初识
- JDK7的try-with-resource方式的使用
- 关于对象池的一些分析
- USB设备驱动程序-USB Gadget Driver
- Ajax初识 第一篇 简单认识
- 2017年1月1日元旦心情总结
- 关于javaTimeZone的参考案例
- Tomcat运行大致步骤
- 【BZOJ 3732】Network kruskal树