Freemarker 生成 HTML 静态页面
有时为了减轻了服务器的压力和提高页面的响应速度,需要静态页面。
下面介绍使用 Freemarker 生成 HTML 静态页面的方法。
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
配置 Freemarker
spring.freemarker.enabled=true
spring.freemarker.cache=false
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.settings.template_update_delay=0
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=request
spring.freemarker.suffix=.ftl
调试 HTML 方法
@Controller
public class InfoController {
@RequestMapping(value = "/")
public String main() {
return "redirect:/info";
}
@RequestMapping(value = "/info")
public String info(HttpServletRequest request, HttpServletResponse response, ModelMap m) {
Info info = // 获取注入对象值
m.put("info", info);
return "view/info";
}
}
保存 HTML 方法
public static void saveHtmlFile(File emlFile,String htmlIndex) {
try {
String ftlPath = "src\\main\\resources\\templates\\view";
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(new File(ftlPath));
configuration.setDefaultEncoding("UTF-8");
// 获取或创建一个模版。
Template template = configuration.getTemplate("info.ftl");
//设置文件输入流编码,不然生成的html文件会中文乱码
FileWriterWithEncoding out = new FileWriterWithEncoding(htmlIndex, "UTF-8");
// 将页面中要展示的数据放入一个map中
HashMap<String, Object> dataMap = new HashMap<String, Object>();
Info info = new Info(); // 获取对象值
dataMap.put("info", info);
//将map中的数据输入到个模板文件中并遍历出来,最后再将整个模板的数据写入到html中。
template.process(dataMap, out);
out.close();
} catch (Exception e) {
log.error(e.getMessage()+"--"+emlFile.getAbsolutePath());
}
}
相关文章