首先在pom.xml中添加依赖
添加依赖
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency>
application配置
在application.properties中添加freemarker的配置参数
##freemarkerspring.freemarker.cache=falsespring.freemarker.charset=UTF-8spring.freemarker.check-template-location=truespring.freemarker.content-type=text/htmlspring.freemarker.enabled=truespring.freemarker.suffix=.ftlspring.freemarker.template-loader-path=classpath:/templates
Controller和ftl模板
下一步我们就建一个根本Controller类和配套的ftl模板
Controller类
package com.hw.myp2c.common.controller;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;import java.io.;import java.net.URISyntaxException;import java.util.HashMap;import java.util.Map;@Controller@RequestMapping(\公众\"大众)public class MainController { @GetMapping public String main(Model model){ String w=\公众Welcome FreeMarker!\公众; Map root = new HashMap(); root.put(\"大众w\"大众,w); model.addAttribute(\"大众w\"大众,\"大众Welcome FreeMarker!\公众); return \"大众test\"大众; }}
可以看到很大略,跟之前的thymelefa和jsp的没有差异。
freemarker模板
<html><head> <title>Welcome!</title> <link rel=\"大众stylesheet\"大众 href=\"大众/bootstrap.min.css\"大众> <script src=\"大众/lib/jquery.min.js\"大众></script></head><body><h1>Hello ${w}!</h1></body></html>
这样之后我们就能完成了根本freemarker的利用,更多的利用拜会freemarker官方网站,这里不做过多的描述。
这里我们已经完成了标准的freemarker集成,下面我们将先容如何利用freemarker天生静态html页面,直接上代码,作为演示我们还是在Controller中完成,在实际运用中我们可以按照自己的实际须要进行封装。
package com.hw.myp2c.common.controller;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;import java.io.;import java.net.URISyntaxException;import java.util.HashMap;import java.util.Map;@Controller@RequestMapping(\公众\公众)public class MainController { @Resource Configuration cfg; @GetMapping public String main(Model model){ String w=\"大众Welcome FreeMarker!\"大众; Map root = new HashMap(); root.put(\"大众w\"大众,w); freeMarkerContent(root); model.addAttribute(\"大众w\"大众,\"大众Welcome FreeMarker!\"大众); return \公众test\公众; } private void freeMarkerContent(Map<String,Object> root){ try { Template temp = cfg.getTemplate(\公众test.ftl\公众); //以classpath下面的static目录作为静态页面的存储目录,同时命名天生的静态html文件名称 String path=this.getClass().getResource(\公众/\公众).toURI().getPath()+\公众static/test.html\"大众; Writer file = new FileWriter(new File(path.substring(path.indexOf(\"大众/\"大众)))); temp.process(root, file); file.flush(); file.close(); } catch (IOException e) { e.printStackTrace(); } catch (TemplateException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } }}
利用freemarker天生静态页面我理解的流程是这样的
1.利用Configuration读取想天生静态页面的模板,这里是test.ftl
2.解析模板文件,并将模板中的${}!包含的参数更换成真实的数据
3.终极将读取了真实数据的模板天生相应的html文件,并写入指定目录
这样我们就完成了spring boot中利用freemarker模板,并且利用freemarker天生静态html文件