• springboot freeMarker


    发表于  | Spring框架 | SpringBoot

    Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker、Thymeleaf。这篇,我们看下 Spring Boot 如何集成和使用 FreeMarker。

    Spring Boot 中使用 FreeMarker 模板非常简单方便。如果想要使用FreeMarker 模板引擎,首先,修改 POM 文件,添加依赖。

    FreeMaker 代替 JSP 作为页面渲染

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-freemarker</artifactId>
    4. </dependency>

    然后,我们创建模板。值得注意的是,Spring Boot 集成的 FreeMarker 默认的配置文件放在 classpath:/templates/。因此,我们需要在 src/main/resources/templates/ 添加模板文件。

    例如,我们添加一个模板文件,叫做 welcome.ftl。

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <body>
    4. Date: ${time?date}<br>
    5. Message: ${message}
    6. </body>
    7. </html>

    那么,最后一步,我们在控制类中只需要这么配置就可以了。

    1. @Controller("template.freemarkerController")
    2. public class WelcomeController {
    3. @RequestMapping("/template/freemarker/welcome")
    4. public String welcome(Map<String, Object> model) {
    5. model.put("time", new Date());
    6. model.put("message", "梁桂钊");
    7. return "welcome";
    8. }
    9. }

    还记得我们之前的 WebMain 么,我们来回顾下。

    1. @RestController
    2. @EnableAutoConfiguration
    3. @ComponentScan(basePackages = { "com.lianggzone.springboot" })
    4. public class WebMain {
    5. public static void main(String[] args) throws Exception {
    6. SpringApplication.run(WebMain.class, args);
    7. }
    8. }

    直接运行 WebMain 类,或者可以通过“mvn spring-boot:run”在命令行启动该应用。会启动一个内嵌的 Tomcat 服务器运行在 8080 端口。访问 “http://localhost:8080/template/freemarker/welcome” 可以看到页面上显示结果。

    生成静态文件

    上面的场景,是非常典型的 MVC 的使用场景,我们通过 FreeMaker 代替 JSP 作为页面渲染。但是,随着,前后端分离,JSP 渐渐远离我们的视野,服务端更多地处理业务逻辑,通过 RESTful 或者 RPC 对外提供服务。页面的交互,交给前端做渲染。

    这种情况下,是不是 FreeMarker 就没有用武之地了呢?实际上,FreeMarker 作为模板引擎,还有很多使用场景,例如,我们可以把我们可以动静分离,把相对不会变化的内容通过 FreeMarker 渲染生成静态文件上传到内容服务,内容服务通过 CDN 进行资源分发。

    那么,我们对上面的代码进行一个小改造,模拟一个文件生成到本地的场景。

    1. @RestController("template.freemarkerController2")
    2. @EnableAutoConfiguration
    3. public class Welcome2Controller {
    4. @Autowired
    5. private Configuration configuration;
    6. @RequestMapping("/template/freemarker/welcome2")
    7. public String welcome2(Map model) throws Exception {
    8. model.put("time", new Date());
    9. model.put("message", "梁桂钊");
    10. Template template = configuration.getTemplate("welcome.ftl");
    11. String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
    12. FileUtils.writeStringToFile(new File("d:/welcome.html"), content);
    13. return "welcome";
    14. }
    15. }

    直接运行 WebMain 类,访问 “http://localhost:8080/template/freemarker/welcome2” 可以看到页面上显示结果,并查看D盘,是否生成文件了呢?

    扩展阅读

    源代码

    相关示例完整代码: springboot-action
    静态页面生成器: freemarker-utils

    (完)
  • 相关阅读:
    东拼西凑 vim配置-更新
    oh-my-zsh
    switch变种玩法
    每天一个linux命令(5):rm 命令
    每天一个linux命令(4):mkdir命令
    每天一个linux命令(3):pwd命令
    ES6学习之let
    Window.scrollTo()
    如何调整滚动条的样式
    移动端实现滚动的四种方案
  • 原文地址:https://www.cnblogs.com/xmanblue/p/7010349.html
Copyright © 2020-2023  润新知