- 概念
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,简单来讲就是模板加数据模型,然后输出页面。
想学习更多请参考:https://freemarker.apache.org/
1.依赖jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2.配置application.properties
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
spring.freemarker.suffix=.html
spring.freemarker.template-loader-path=classpath:/view/
3.FreeMarker使用
- 后台代码
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import freemarker.template.Configuration;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RequestMapping("marker/")
@Controller
public class FreeMarkerCtrl {
@Autowired
private Configuration configuration;
/**
* 实现方式1
* @param map
* @return
*/
@RequestMapping(value = "/users",method = RequestMethod.GET)
public String freeMarker(Map<String,Object> map){
map.put("users",parseUsers());
map.put("title","用户列表");
return "users";
}
/**
* 实现方式2
* @param response
* @throws IOException
* @throws TemplateException
*/
@RequestMapping(value = "/users1",method = RequestMethod.GET)
public void freeMarker1(HttpServletResponse response) throws IOException, TemplateException {
Map<String,Object> map= new HashMap<>();
map.put("users",parseUsers());
map.put("title","用户列表");
Template t = configuration.getTemplate("users.html");
String content = FreeMarkerTemplateUtils.processTemplateIntoString(t, map);
System.out.println(content);
response.getOutputStream().write(content.getBytes("utf-8"));
}
private List<Map> parseUsers(){
List<Map> list= new ArrayList<>();
for(int i=0;i<10;i++){
Map map= new HashMap();
map.put("name","kevin_"+i);
map.put("age",10+i);
map.put("phone","1860291105"+i);
list.add(map);
}
return list;
}
}
- html
<html lang="zh-CN">
<head>
<meta charset="UTF-8"/>
<title>${title}</title>
<style>
table {
width: 50%;
font-size: .938em;
border-collapse: collapse;/*边框合并*/
}
th {
text-align: left;
padding: .5em .5em;
font-weight: bold;
background: #66677c;color: #fff;
}
td {
padding: .5em .5em;
border-bottom: solid 1px #ccc;
}
table,table tr th, table tr td { border:1px solid #0094ff; }/*设置边框*/
</style>
</head>
<body>
<table>
<tr>
<th>Name</th>
<th>Age</th>
<th>Phone</th>
</tr>
<#list users as user>
<tr>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.phone}</td>
</tr>
</#list>
</table>
</body>
</html>
运行结果:
20180607111214.png
更多语法请参考:https://blog.csdn.net/fhx007/article/details/7902040
网友评论