1、添加依赖
org.springframework.boot
spring-boot-starter-freemarker
2、配置application.properties
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.charset=utf-8
spring.freemarker.cache=false
spring.freemarker.suffix=.ftl
spring.freemarker.request-context-attribute=request
3、创建资源目录
resources 下创建 templates 目录,新增 index.ftl 文件
${name}
4、编写控制器
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping(value = "/test")
public String test(Model model){
model.addAttribute("name", "admin");
return "index";
}
}
5、模板渲染工具类
package com.vim.common.utils;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import java.io.*;
import java.util.Map;
public class FreemarkerUtils {
/**
* 使用模板字符串
* @param templateString
* @param model
*/
public static String renderString(String templateString, Map model) {
try {
StringWriter result = new StringWriter();
Template t = new Template("name", new StringReader(templateString), new Configuration());
t.process(model, result);
return result.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**无锡人流医院哪家好 http://www.wxbhnkyy120.com/
* 配置模板文件位置
* @param directory
* @return
* @throws IOException
*/
public static Configuration buildConfiguration(String directory) throws IOException {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_26);
Resource path = new DefaultResourceLoader().getResource(directory);
cfg.setDirectoryForTemplateLoading(path.getFile());
return cfg;
}
/**
* 使用模板文件
* @param template
* @param model
*/
public static void renderTemplate(Template template, Map model, String saveFile) {
try {
FileWriter out = new FileWriter(new File(saveFile));
template.process(model, out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
6、注意事项
freemarker 文件中的 js 引用一定要加闭合标签,且不能使用/>