龙空技术网

SpringBoot集成Freemarker

互联网高级架构师 173

前言:

今天姐妹们对“freemarker生成html”大概比较看重,小伙伴们都想要分析一些“freemarker生成html”的相关知识。那么小编也在网上网罗了一些对于“freemarker生成html””的相关资讯,希望各位老铁们能喜欢,大家一起来了解一下吧!

主要特征:静态页面,无接口交互数据实时性不高且体量小的网站可采用生成静态html的形式数据提前渲染至html内,若发生数据更新,则重新渲染数据CDN加速让网站不再龟速1、引入Maven依赖

<dependency>    <groupId>org.freemarker</groupId>    <artifactId>freemarker</artifactId>    <version>2.3.28</version></dependency>
2、创建ftl

官网语法参考:freemarker.foofun.cn/

<html>    <head>        <title>啦啦啦啦啦</title>    </head>    <body>        <h1>侠客行</h1>        <p>${author!}</P>        <#if (poem?size)!=0>            <#list poem as item>                <p>${item.first!}${item.second!}</p></br>            </#list>        </#if>    </body></html>
3、创建freeMarker工具类
@Slf4j@Componentpublic class FreeMarkerUtil {    private static Configuration config;    private static String serverPath;    @Value("${spring.servlet.multipart.location:D:/static/}")    public void setServerPath(String serverPath) {        FreeMarkerUtil.serverPath = serverPath;    }/*** 通过freemarker生成静态HTML页面* @param templateName 模版名称* @param targetFileName 生成后的文件名* @param ftlPath模板路径* @param htmlPathhtml路径* @param mapfreemarker生成的数据都存储在MAP中,*/public static void createHtml(String templateName, String targetFileName, String ftlPath, String htmlPath, Map<String, Object> map) {    try{            //创建fm的配置        config = new Configuration();        //指定默认编码格式        config.setDefaultEncoding("UTF-8");        //设置模版文件的路径        config.setDirectoryForTemplateLoading(new File(serverPath+ftlPath));        //获得模版包        Template template = config.getTemplate(templateName);        //从参数文件中获取指定输出路径        String path = serverPath+htmlPath;        //生成的静态页存放路径如果不存在就创建        File file = null;        file=new File(path);        if (!file.exists()){            file.mkdirs();        }        //定义输出流,注意必须指定编码        Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path+"/"+targetFileName)), UTF_8));        //生成模版        template.process(map, writer);    }catch (Exception e){        log.error("生成异常:{}",e);    }}
4、编写Java的代码

构造实体类,通过freemarker将实体类的信息渲染至html

@GetMapping("test")public Object test() {    Map<String,Object> map = new HashMap<>(16);    List<Poem> list = new ArrayList<>();    list.add(new Poem("赵客缦胡缨,", "吴钩霜雪明。"));    list.add(new Poem("银鞍照白马,", "飒沓如流星。"));    list.add(new Poem("十步杀一人,", "千里不留行。"));    list.add(new Poem("事了拂衣去,", "深藏身与名。"));    map.put("author","李白");    map.put("poem",list);    FreeMarkerUtil.createHtml("poem.ftl","poem.html","侠客行/","侠客行/",map);    return BackMessage.ok(map);}

实体类

@Datapublic class Poem {    private String first;    private String second;    public Poem(String first, String second) {        this.first = first;        this.second = second;    }}
5、Html输出
<html><head>    <title>啦啦啦啦啦</title></head><body>    <h1>侠客行</h1>    <p>李白</P>    <p>赵客缦胡缨,吴钩霜雪明。</p></br>    <p>银鞍照白马,飒沓如流星。</p></br>    <p>十步杀一人,千里不留行。</p></br>    <p>事了拂衣去,深藏身与名。</p></br></body></html>

作者:七号im

链接:

来源:稀土掘金

标签: #freemarker生成html