Java中静态模板文件freemaker使用

使用背景

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
面对大文本数据展示时,每次查询数据库费时费力,基于这种读多写少的需求,考虑使用freemarker生成静态文件,存入文件系统中,查询时直接展示文件,不必在查询数据库。

使用流程

1. 引入依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-freemarker</artifactId>
 </dependency>

2. 配置

spring:
 freemarker:
    cache: false  #关闭模板缓存,方便测试
    settings:
      template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
    # 设置模板文件后缀
    suffix: .ftl   

3. 创建模板文件

在resources目录下创建templates,在其中创建post.ftl模板文件
在这里插入图片描述
post.ftl文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>post</title>
</head>
<body>

<div class="article-content">
    <#if content??>
        <#list content as item>
            <#if item.type='text'>
                <p span="24" class="article-text">${item.value}</p>
            <#else>
                <div span="24" class="article-image">
                    <img width="100%" src="${item.value}"></img>
                </div>
            </#if>
        </#list>
    </#if>
</div>
</body>
</html>

json数据源(这里为了方便手动建立JSON数据源,实际开发中可从数据库中查询)
r.json

[
  {
    "type": "text",
    "value": "在选择IT培训机构时,你应该有注意到,很多机构都将“项目课程”作为培训中的重点。那么,为什么要学习项目课程?为什么项目课程才是IT培训课程的核心?\n\n  1\n\n  在这个靠“技术经验说话”的IT行业里,假如你是一个计算机或IT相关专业毕业生,在没有实际项目开发经验的情况下,“找到第一份全职工作”可能是你职业生涯中遇到的最大挑战。\n\n  为什么说找第一份工作很难?\n\n  主要在于:实际企业中用到的软件开发知识和在学校所学的知识是完全不同的。假设你已经在学校和同学做过周期长达2-3个月的项目,但真正工作中的团队协作与你在学校中经历的协作也有很多不同。"
  },
  {
    "type": "image",
    "value": "http://localhost:9000/leadnews/2023/07/21/b2459eb50de3441b999252a9981bb744.jpg"
  },
  {
    "type": "text",
    "value": "在实际团队中,每一位成员彼此团结一致,为项目的交付而努力,这也意味着你必须要理解好在项目中负责的那部分任务,在规定时间交付还需确保你负责的功能,在所有环境中都能很好地发挥作用,而不仅仅是你的本地机器。\n\n  这需要你对项目中的每一行代码严谨要求。学校练习的项目中,对bug的容忍度很大,而在实际工作中是绝对不能容忍的。项目中的任何一个环节都涉及公司利益,任何一个bug都可能影响公司的收入及形象。"
  }
]

4. 运行代码

仅提供在本地生成html文件代码

 StringWriter out = new StringWriter();
        Template template = configuration.getTemplate("post.ftl");

        JSON json = JSONUtil.readJSON(new File("D:\\JavaHome\\postgraduateforum\\src\\main\\resources\\templates\\r.json"), StandardCharsets.UTF_8);

        Map<String, Object> params = new HashMap<>();
        params.put("content", JSONUtil.parseArray(json));

        template.process(params, out);
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\01.html");

        PrintStream out1 = new PrintStream(fileOutputStream);
        out1.println(out);
        out1.close();
        out.close();

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot生成静态页面使用Freemarker模板引擎可以按照以下步骤进行操作: 1. 首先,在pom.xml文件添加Freemarker的依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> ``` 2. 创建一个Controller类,用于处理请求并生成静态页面。例如,创建一个名为`StaticPageController`的类: ```java @Controller public class StaticPageController { @Autowired private Configuration freemarkerConfig; @GetMapping("/generate") public void generateStaticPage(HttpServletResponse response) throws IOException, TemplateException { Map<String, Object> data = new HashMap<>(); // 将需要的数据放入data,供Freemarker模板使用 Template template = freemarkerConfig.getTemplate("static-page-template.ftl"); String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, data); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(html); } } ``` 3. 创建一个Freemarker模板文件,例如,创建一个名为`static-page-template.ftl`的文件,并在该文件编写静态页面的HTML代码。可以在模板使用Freemarker的语法和表达式来动态生成页面内容。 4. 运行Spring Boot应用程序,并访问`/generate`路径,即可生成静态页面。 请注意,上述代码只是一个简单示例,你可以根据实际需求进行修改和优化。另外,还可以使用Freemarker的一些高级特性,如布局模板、片段等来提高开发效率和代码复用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值