打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用FreeMarker生成静态HTML

1、FreeMarker需要添加的Maven依赖:

1 <dependency>2     <groupId>org.freemarker</groupId>3     <artifactId>freemarker</artifactId>4     <version>2.3.23</version>5 </dependency>

2、使用模板生成HTML代码

2.1 数据模型

 1 public class User { 2  3     private String username; 4  5     private String password; 6  7     private Integer age; 8  9     private String address;10 11     //省略setter和getter方法  12 }

 

2.2 FreeMarker模板

 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>用户信息</title> 6 <!-- 新 Bootstrap 核心 CSS 文件 --> 7 <link rel="stylesheet" 8     href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" /> 9 </head>10 <body style="font-family:'Courier New'">11     <h3 class="text-center">这是用户${username}的信息页!</h3>12     <div class="col-md-6 column">13         <table class="table table-bordered">14             <tr>15                 <th>用户名</th>16                 <th>密码</th>17                 <th>年龄</th>18                 <th>地址</th>19             </tr>20             <tr>21                 <td>${username}</td>22                 <td>${password}</td>23                 <td>${age}</td>24                 <td>${address}</td>25             </tr>26         </table>27     </div>28 </body>29 </html>

2.3 使用FreeMarker生成HTML代码

 1     /** 2      * 使用模板生成HTML代码 3      */ 4     public static void createHtmlFromModel() { 5         FileWriter out = null; 6         try { 7             // 通过FreeMarker的Confuguration读取相应的模板文件 8             Configuration configuration = new Configuration(Configuration.VERSION_2_3_23); 9             // 设置模板路径10             configuration.setClassForTemplateLoading(CreateHtmlByFreemarker.class, "/static/ftl");11             // 设置默认字体12             configuration.setDefaultEncoding("utf-8");13 14             // 获取模板15             Template template = configuration.getTemplate("user.ftl");16             //设置模型17             User user = new User("tom", "hahahah", 28, "上海市");18             19             //设置输出文件20             File file = new File("e:/html/result.html");21             if(!file.exists()) {22                 file.createNewFile();23             }24             //设置输出流25             out = new FileWriter(file);26             //模板输出静态文件27             template.process(user, out);28         } catch (TemplateNotFoundException e) {29             e.printStackTrace();30         } catch (MalformedTemplateNameException e) {31             e.printStackTrace();32         } catch (ParseException e) {33             e.printStackTrace();34         } catch (IOException e) {35             e.printStackTrace();36         } catch (TemplateException e) {37             e.printStackTrace();38         } finally {39             if(null != out) {40                 try {41                     out.close();42                 } catch (IOException e) {43                     e.printStackTrace();44                 }45             }46         }47     }

3、使用String作为FreeMarker模板,生成HTML代码

3.1 数据模型使用2.1模型

3.2 模板使用2.2模板

3.3 使用FreeMarker生成HTML代码

 1 /** 2      * 把模板读入到String中,然后根据String构造FreeMarker模板 3      */ 4     public static void createHtmlFromString() { 5         BufferedInputStream in = null; 6         FileWriter out = null; 7         try { 8             //模板文件 9             File file = new File("D:/EclipseLearnSpace/ResearchSpace/Html2Pdf/src/main/resources/static/html/user.html");10             //构造输入流11             in = new BufferedInputStream(new FileInputStream(file));12             int len;13             byte[] bytes = new byte[1024];14             //模板内容15             StringBuilder content = new StringBuilder();16             while((len = in.read(bytes)) != -1) {17                 content.append(new String(bytes, 0, len, "utf-8"));18             }19             20             //构造Configuration21             Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);22             //构造StringTemplateLoader23             StringTemplateLoader loader = new StringTemplateLoader();24             //添加String模板25             loader.putTemplate("test", content.toString());26             //把StringTemplateLoader添加到Configuration中27             configuration.setTemplateLoader(loader);28             29             //构造Model30             User user = new User("tom", "kkkkk", 29, "北京山东");31             //获取模板32             Template template = configuration.getTemplate("test");33             //构造输出路34             out = new FileWriter("e:/html/result.html");35             //生成HTML36             template.process(user, out);37         } catch (FileNotFoundException e) {38             e.printStackTrace();39         } catch (UnsupportedEncodingException e) {40             e.printStackTrace();41         } catch (IOException e) {42             e.printStackTrace();43         } catch (TemplateException e) {44             e.printStackTrace();45         } finally {46             if(null != in) {47                 try {48                     in.close();49                 } catch (IOException e) {50                     e.printStackTrace();51                 }52             }53             if(null != out) {54                 try {55                     out.close();56                 } catch (IOException e) {57                     e.printStackTrace();58                 }59             }60         }61         62     }

4、使用String模板,模板中使用List

4.1 数据模型

 1 public class Classes { 2  3     private String classId; // 班级ID 4  5     private String className; // 班级名称 6  7     private List<User> users; 8  9     public String getClassId() {10         return classId;11     }12 13     //省略settter和getter方法14 15 }

4.2 FreeMarker模板

 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>班级信息</title> 6 <!-- 新 Bootstrap 核心 CSS 文件 --> 7 <link rel="stylesheet" 8     href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" /> 9 <style type="text/css">10     .table-align{11         margin-left: 25%;12     }13 </style>14 </head>15 <body style="font-family:'Courier New'">16 17     <h3 class="text-center">下面是班级ID【${classId}】,班级名称【${className}】的人员信息</h3>18     <div class="col-md-6 column table-align">19         <table class="table">20             <tr>21                 <th>姓名</th>22                 <th>密码</th>23                 <th>年龄</th>24                 <th>地址</th>25             </tr>26             <!-- FreeMarker使用List循环 -->27             <#list users as user>28                 <tr>29                     <td>${user.username}</td>30                     <td>${user.password}</td>31                     <td>${user.age}</td>32                     <td>${user.address}</td>33                 </tr>34             </#list>35         </table>36     </div>37 </body>38 </html>

4.3 使用FreeMarker生成HTML代码

 1 /** 2      * 根据String模板生成HTML,模板中存在List循环 3      */ 4     public static void createHtmlFromStringList() { 5         BufferedInputStream in = null; 6         FileWriter out = null; 7         try { 8             //模板文件 9             File file = new File("D:/EclipseLearnSpace/ResearchSpace/Html2Pdf/src/main/resources/static/html/class.html");10             //构造输入流11             in = new BufferedInputStream(new FileInputStream(file));12             int len;13             byte[] bytes = new byte[1024];14             //模板内容15             StringBuilder content = new StringBuilder();16             while((len = in.read(bytes)) != -1) {17                 content.append(new String(bytes, 0, len, "utf-8"));18             }19             20             //构造Configuration21             Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);22             //构造StringTemplateLoader23             StringTemplateLoader loader = new StringTemplateLoader();24             //添加String模板25             loader.putTemplate("test", content.toString());26             //把StringTemplateLoader添加到Configuration中27             configuration.setTemplateLoader(loader);28             29             //构造Model30             Classes classes = new Classes();31             classes.setClassId("23");32             classes.setClassName("实验一班");33             List<User> users = new ArrayList<User>();34             User user = new User("tom", "kkkkk", 29, "北京");35             users.add(user);36             User user2 = new User("Jim", "hhhh", 22, "上海");37             users.add(user2);38             User user3 = new User("Jerry", "aaaa", 25, "南京");39             users.add(user3);40             classes.setUsers(users);41             //获取模板42             Template template = configuration.getTemplate("test");43             //构造输出路44             out = new FileWriter("e:/html/result.html");45             //生成HTML46             template.process(classes, out);47         } catch (FileNotFoundException e) {48             e.printStackTrace();49         } catch (UnsupportedEncodingException e) {50             e.printStackTrace();51         } catch (IOException e) {52             e.printStackTrace();53         } catch (TemplateException e) {54             e.printStackTrace();55         } finally {56             if(null != in) {57                 try {58                     in.close();59                 } catch (IOException e) {60                     e.printStackTrace();61                 }  62             }63             if(null != out) {64                 try {65                     out.close();66                 } catch (IOException e) {67                     e.printStackTrace();68                 }69             }70         }71         72     }

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[freemarker篇]01.入门Freemarker示例
Java 用Freemarker完美导出word文档(带图片)
使用FreeMarker导出word文档(支持导出图片)
如何能让Java生成复杂Word文档(1)
java导出生成word
freemarker的一个例子
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服