使用FreeMarker生成静态HTML
2017-02-08 11:45
681 查看
2、使用模板生成HTML代码
2.1 数据模型
public class User {
private String username;
private String password;
private Integer age;
private String address;
//省略setter和getter方法
}
2.2 FreeMarker模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户信息</title>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" />
</head>
<body style="font-family:'Courier New'">
<h3 class="text-center">这是用户${username}的信息页!</h3>
<div class="col-md-6 column">
<table class="table table-bordered">
<tr>
<th>用户名</th>
<th>密码</th>
<th>年龄</th>
<th>地址</th>
</tr>
<tr>
<td>${username}</td>
<td>${password}</td>
<td>${age}</td>
<td>${address}</td>
</tr>
</table>
</div>
</body>
</html>
2.3 使用FreeMarker生成HTML代码
/**
* 使用模板生成HTML代码
*/
public static void createHtmlFromModel() {
FileWriter out = null;
try {
// 通过FreeMarker的Confuguration读取相应的模板文件
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
// 设置模板路径
configuration.setClassForTemplateLoading(CreateHtmlByFreemarker.class, "/static/ftl");
// 设置默认字体
configuration.setDefaultEncoding("utf-8");
// 获取模板
Template template = configuration.getTemplate("user.ftl");
//设置模型
User user = new User("tom", "hahahah", 28, "上海市");
//设置输出文件
File file = new File("e:/html/result.html");
if(!file.exists()) {
file.createNewFile();
}
//设置输出流
out = new FileWriter(file);
//模板输出静态文件
template.process(user, out);
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3、使用String作为FreeMarker模板,生成HTML代码
3.1 数据模型使用2.1模型
3.2 模板使用2.2模板
3.3 使用FreeMarker生成HTML代码
/**
* 把模板读入到String中,然后根据String构造FreeMarker模板
*/
public static void createHtmlFromString() {
BufferedInputStream in = null;
FileWriter out = null;
try {
//模板文件
File file = new File("D:/EclipseLearnSpace/ResearchSpace/Html2Pdf/src/main/resources/static/html/user.html");
//构造输入流
in = new BufferedInputStream(new FileInputStream(file));
int len;
byte[] bytes = new byte[1024];
//模板内容
StringBuilder content = new StringBuilder();
while((len = in.read(bytes)) != -1) {
content.append(new String(bytes, 0, len, "utf-8"));
}
//构造Configuration
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
//构造StringTemplateLoader
StringTemplateLoader loader = new StringTemplateLoader();
//添加String模板
loader.putTemplate("test", content.toString());
//把StringTemplateLoader添加到Configuration中
configuration.setTemplateLoader(loader);
//构造Model
User user = new User("tom", "kkkkk", 29, "北京山东");
//获取模板
Template template = configuration.getTemplate("test");
//构造输出路
out = new FileWriter("e:/html/result.html");
//生成HTML
template.process(user, out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4、使用String模板,模板中使用List
4.1 数据模型
public class Classes {
private String classId; // 班级ID
private String className; // 班级名称
private List<User> users;
public String getClassId() {
return classId;
}
//省略settter和getter方法
}
4.2
FreeMarker模板
<!DOCTYPE
html>
<html>
<head>
<meta charset="UTF-8">
<title>班级信息</title>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" />
<style type="text/css">
.table-align{
margin-left: 25%;
}
</style>
</head>
<body style="font-family:'Courier New'">
<h3 class="text-center">下面是班级ID【${classId}】,班级名称【${className}】的人员信息</h3>
<div class="col-md-6 column table-align">
<table class="table">
<tr>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
<th>地址</th>
</tr>
<!-- FreeMarker使用List循环 -->
<#list users as user>
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.age}</td>
<td>${user.address}</td>
</tr>
</#list>
</table>
</div>
</body>
</html>
4.3 使用FreeMarker生成HTML代码
/**
* 根据String模板生成HTML,模板中存在List循环
*/
public static void createHtmlFromStringList() {
BufferedInputStream in = null;
FileWriter out = null;
try {
//模板文件
File file = new File("D:/EclipseLearnSpace/ResearchSpace/Html2Pdf/src/main/resources/static/html/class.html");
//构造输入流
in = new BufferedInputStream(new FileInputStream(file));
int len;
byte[] bytes = new byte[1024];
//模板内容
StringBuilder content = new StringBuilder();
while((len = in.read(bytes)) != -1) {
content.append(new String(bytes, 0, len, "utf-8"));
}
//构造Configuration
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
//构造StringTemplateLoader
StringTemplateLoader loader = new StringTemplateLoader();
//添加String模板
loader.putTemplate("test", content.toString());
//把StringTemplateLoader添加到Configuration中
configuration.setTemplateLoader(loader);
//构造Model
Classes classes = new Classes();
classes.setClassId("23");
classes.setClassName("实验一班");
List<User> users = new ArrayList<User>();
User user = new User("tom", "kkkkk", 29, "北京");
users.add(user);
User user2 = new User("Jim", "hhhh", 22, "上海");
users.add(user2);
User user3 = new User("Jerry", "aaaa", 25, "南京");
users.add(user3);
classes.setUsers(users);
//获取模板
Template template = configuration.getTemplate("test");
//构造输出路
out = new FileWriter("e:/html/result.html");
//生成HTML
template.process(classes, out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.1 数据模型
public class User {
private String username;
private String password;
private Integer age;
private String address;
//省略setter和getter方法
}
2.2 FreeMarker模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户信息</title>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" />
</head>
<body style="font-family:'Courier New'">
<h3 class="text-center">这是用户${username}的信息页!</h3>
<div class="col-md-6 column">
<table class="table table-bordered">
<tr>
<th>用户名</th>
<th>密码</th>
<th>年龄</th>
<th>地址</th>
</tr>
<tr>
<td>${username}</td>
<td>${password}</td>
<td>${age}</td>
<td>${address}</td>
</tr>
</table>
</div>
</body>
</html>
2.3 使用FreeMarker生成HTML代码
/**
* 使用模板生成HTML代码
*/
public static void createHtmlFromModel() {
FileWriter out = null;
try {
// 通过FreeMarker的Confuguration读取相应的模板文件
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
// 设置模板路径
configuration.setClassForTemplateLoading(CreateHtmlByFreemarker.class, "/static/ftl");
// 设置默认字体
configuration.setDefaultEncoding("utf-8");
// 获取模板
Template template = configuration.getTemplate("user.ftl");
//设置模型
User user = new User("tom", "hahahah", 28, "上海市");
//设置输出文件
File file = new File("e:/html/result.html");
if(!file.exists()) {
file.createNewFile();
}
//设置输出流
out = new FileWriter(file);
//模板输出静态文件
template.process(user, out);
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3、使用String作为FreeMarker模板,生成HTML代码
3.1 数据模型使用2.1模型
3.2 模板使用2.2模板
3.3 使用FreeMarker生成HTML代码
/**
* 把模板读入到String中,然后根据String构造FreeMarker模板
*/
public static void createHtmlFromString() {
BufferedInputStream in = null;
FileWriter out = null;
try {
//模板文件
File file = new File("D:/EclipseLearnSpace/ResearchSpace/Html2Pdf/src/main/resources/static/html/user.html");
//构造输入流
in = new BufferedInputStream(new FileInputStream(file));
int len;
byte[] bytes = new byte[1024];
//模板内容
StringBuilder content = new StringBuilder();
while((len = in.read(bytes)) != -1) {
content.append(new String(bytes, 0, len, "utf-8"));
}
//构造Configuration
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
//构造StringTemplateLoader
StringTemplateLoader loader = new StringTemplateLoader();
//添加String模板
loader.putTemplate("test", content.toString());
//把StringTemplateLoader添加到Configuration中
configuration.setTemplateLoader(loader);
//构造Model
User user = new User("tom", "kkkkk", 29, "北京山东");
//获取模板
Template template = configuration.getTemplate("test");
//构造输出路
out = new FileWriter("e:/html/result.html");
//生成HTML
template.process(user, out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4、使用String模板,模板中使用List
4.1 数据模型
public class Classes {
private String classId; // 班级ID
private String className; // 班级名称
private List<User> users;
public String getClassId() {
return classId;
}
//省略settter和getter方法
}
4.2
FreeMarker模板
<!DOCTYPE
html>
<html>
<head>
<meta charset="UTF-8">
<title>班级信息</title>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" />
<style type="text/css">
.table-align{
margin-left: 25%;
}
</style>
</head>
<body style="font-family:'Courier New'">
<h3 class="text-center">下面是班级ID【${classId}】,班级名称【${className}】的人员信息</h3>
<div class="col-md-6 column table-align">
<table class="table">
<tr>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
<th>地址</th>
</tr>
<!-- FreeMarker使用List循环 -->
<#list users as user>
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.age}</td>
<td>${user.address}</td>
</tr>
</#list>
</table>
</div>
</body>
</html>
4.3 使用FreeMarker生成HTML代码
/**
* 根据String模板生成HTML,模板中存在List循环
*/
public static void createHtmlFromStringList() {
BufferedInputStream in = null;
FileWriter out = null;
try {
//模板文件
File file = new File("D:/EclipseLearnSpace/ResearchSpace/Html2Pdf/src/main/resources/static/html/class.html");
//构造输入流
in = new BufferedInputStream(new FileInputStream(file));
int len;
byte[] bytes = new byte[1024];
//模板内容
StringBuilder content = new StringBuilder();
while((len = in.read(bytes)) != -1) {
content.append(new String(bytes, 0, len, "utf-8"));
}
//构造Configuration
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
//构造StringTemplateLoader
StringTemplateLoader loader = new StringTemplateLoader();
//添加String模板
loader.putTemplate("test", content.toString());
//把StringTemplateLoader添加到Configuration中
configuration.setTemplateLoader(loader);
//构造Model
Classes classes = new Classes();
classes.setClassId("23");
classes.setClassName("实验一班");
List<User> users = new ArrayList<User>();
User user = new User("tom", "kkkkk", 29, "北京");
users.add(user);
User user2 = new User("Jim", "hhhh", 22, "上海");
users.add(user2);
User user3 = new User("Jerry", "aaaa", 25, "南京");
users.add(user3);
classes.setUsers(users);
//获取模板
Template template = configuration.getTemplate("test");
//构造输出路
out = new FileWriter("e:/html/result.html");
//生成HTML
template.process(classes, out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
相关文章推荐
- 使用FreeMarker生成静态HTML
- 使用freemarker 批量生成静态html
- 使用FreeMarker生成Html静态文件(实例)
- 使用FreeMarker生成Html静态文件(实例)
- Spring Boot使用freemarker并且生成静态html页面
- 使用FreeMarker生成Html静态文件(实例)
- 使用FreeMarker生成静态HTML
- 使用FreeMarker生成静态HTML
- 使用FreeMarker生成静态HTML
- java使用freemarker生成静态html页面,基于中文API(简单版)
- 使用ASP.NET模板生成HTML静态页面的五种方案
- JAVA使用Freemarker生成静态文件中文乱码
- 使用asp.net模板生成html静态页面的五种方案
- 配置实现-打印(生成静态html)使用
- 利用freemarker、java生成html静态页面
- 使用ASP.NET模板生成HTML静态页面的五种方案
- 使用php 的缓冲区功能和apache的url重写功能实现静态html生成实例
- 使用xmldom在服务器端生成静态html页面
- [项目过程中所遇到的各种问题记录]编辑器篇——使用FCKeditor生成静态分页HTML
- 使用HTTPCLIENT生成静态HTML页面