1、功能描述:使用java代码,根据指定的ftl模板文件,生成html静态页面文件
freemarker模板是直接可以与SSM这种java web项目、或springboot 整合的,不做前后分离。跟jsp差不多。
先描述两种使用方式:
1、java代码中直接运行main方法,根据ftl模板文件,生成html文件
2、java web配置freemarker,像jsp一样,做一个单体项目。
先来第一种:1、java代码中直接运行main方法,根据ftl模板文件,生成html文件
1.1、导入freemarker的maven依赖:我用的是springboot,4.0以上版本,如果项目是spring 4.0版本以下,用freemarker 2.3以上可能会报错,改低版本用freemarker 2.2便行
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency>
1.2、在D:/test001目录下,放一个hello.ftl模板,内容如下:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>Hello World222!</title> </head> <body> <p> welcome </p> <p> ${hello} </p> <p>性别: <#if sex==0> 女 <#elseif sex==1> 男 <#else> 保密 </#if> </p> <h4>我的好友:</h4> <#list friends as item> 姓名:${item.name} , 年龄${item.age} <br> </#list> </body> </html>
1.3、建一个FreemarkerUtil.java工具类直接进行测试看看
package com.jzproject.common.util.freeMarker; import freemarker.template.Configuration; import freemarker.template.Template; import java.io.File; import java.io.FileWriter; import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FreeMarkerDemo2 { public static Map getDataModel(){ Map resultMap = new HashMap(); resultMap.put("hello", "第一个显示数据:hello!"); resultMap.put("sex", 1); //性别 // list列表数据 List<Map<String, Object>> friends = new ArrayList<Map<String, Object>>(); Map<String, Object> friend = new HashMap<String, Object>(); friend.put("name", "xbq"); friend.put("age", 22); friends.add(friend); friend = new HashMap<String, Object>(); friend.put("name", "July"); friend.put("age", 18); friends.add(friend); resultMap.put("friends", friends); return resultMap; } public static void main(String[] args) { try{ // 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。 Configuration configuration = new Configuration(Configuration.getVersion()); // 第二步:设置模板文件所在的路径,一般都在web项目WEB-INF下的ftl文件夹中 // configuration.setDirectoryForTemplateLoading(new File("D:/web/src/main/webapp/WEB-INF/ftl")); configuration.setDirectoryForTemplateLoading(new File("D:/test001")); // 第三步:设置模板文件使用的字符集。一般就是utf-8. configuration.setDefaultEncoding("utf-8"); // =================================================第四步:加载一个模板,创建一个模板对象。 Template template = configuration.getTemplate("hello.ftl"); // =======================================第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。 // Map dataModel = new HashMap<>(); // //向数据集中添加数据 // dataModel.put("hello", "this is my first freemarker test."); Map dataModel = getDataModel();//获取页面要展示的数据map对象 // =======================================第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名,一般生成的文件都统一放在一个文件夹中,方便查找 Writer out = new FileWriter(new File("D:/test001/hello.html")); // 第七步:调用模板对象的process方法输出文件。 template.process(dataModel, out); // 第八步:关闭流。 out.close(); }catch (Exception e){ e.printStackTrace(); } } }
生成hello.html文件成功,浏览器打开如下:
============================================第二种:把freemarker做springboot的页面展示
2.1、导入freemarker与springboot的插件包
<!--springboot应用freemarker,像jsp一样直接跳转到.ftl或.html模板页面,并传数据显示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
2.2、然后直接在项目的resources/templates/freemarker目录下建一个freemarker.html文件,内容如下:
freemarker.html文件内容:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>Hello World!</title> </head> <body> <center> <p> welcome ${name} to freemarker! 333html </p> <p>性别: <#if sex==0> 女 <#elseif sex==1> 男 <#else> 保密 </#if> </p> <h4>我的好友:</h4> <#list friends as item> 姓名:${item.name} , 年龄${item.age} <br> </#list> </center> </body> </html>
2.3、直接用controller类直接跳到此freemarker.html页面,如:
2.4、打开此项目路径访问:localhost:8080/project/freemarkerTest1
。
标签:插件,java,freemarker,html,import,new,模板 From: https://www.cnblogs.com/spll/p/16881265.html