freemarker
freemarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。
引入freemarker依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
freemarker原理
模板 + 数据模型 = 输出
对象的访问
Person p = new Person();
Map root = new HashMap();
root.put(“person”,p);
freemarker.html内容如下:
${person.id}=${person.name}
历遍集合/数组
List<Person> persons = new ArrayList<Person>();
//页面中内容
<#list persons as p>
${p.id}/${p.name}
</#list>
获取当前选代的索引:<br/>
<#list persons as p>
${p_index}
</#list>
if
逻辑运算符(== != || &&)
<html>
<body>
<#list persons as p>
<#if p_index%2 != 0 || p_index==0>
输出一行字
</#if>
index:${p_index}|${p.id}:${p.name}<br>
</#list>
</body>
</html>
else
<html>
<body>
<#list persons as p>
<#if p_index%2 != 0 || p_index==0>
<span style="color:red">
index:${p_index}|${p.id}:${p.name}<br>
</span>
<#else>
<span style="color:blue">
index:${p_index}|${p.id}:${p.name}<br>
</span>
</#if>
</#list>
</body>
格式化日期
默认格式
1:date
${cur_time?date}
2:datetime
${cur_time?datetime}
3:time
${cur_time?time}
自定义格式
${cur_time?string("yyyy-MM-dd HH:mm:ss")}
null处理
root.put(“val”,null);
解决办法
1:null 变 空串
${val!} ${val!"这里是空"}
2:为Null时给默认值
${val!“我是默认值"}
3:
<#if curdate ??>
属性不为空
<#else>
属性为空
<#/if>
引页面
将另一个页面引入本页面时可用以下命令完成
<#include "/include/head.html">
freemaker整合spring
添加依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
在ApplicationContext.xml中添加如下内容:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
代码:
Configuration configuration = freeMarkerConfigurer.getConfiguration();
Template template = configuration.getTemplate("item.ftl");
Map root = new HashMap();
//取商品信息
....
FileWriter out = new FileWriter(new File(HTML_GEN_PATH + id + ".html"));
template.process(root, out);
out.flush();
out.close();
更为详细的网页版学习资料,可在上传的资源中下载