zoukankan      html  css  js  c++  java
  • Spring Boot 整合模板引擎 Freemaker、thymeleaf

    1.常用的 Spring Boot 2.x 模板引擎和官方推荐案例

    1)JSP(后端渲染,消耗性能)

    Java Server Pages 动态网页技术,由应用服务器中的 JSP 引擎来编译和执行,再将生成的整个页面返回给客户端。优点是:可以写java代码、支持表达式语言(el、jstl)、内建函数。

    但 JSP 本质上是 Servlet,它非常占用 JVM 内存。Java Web 官方推荐,但 Spring Boot 不推荐 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-jsp-limitations

    2)Freemarker

    FreeMarker Template Language(FTL) 文件一般保存为 xxx.ftl。严格依赖 MVC 模式,不依赖 Servlet 容器(不占用JVM内存),支持内建函数

    3)Thymeleaf (主推)

    轻量级的模板引擎(负责逻辑业务的不推荐,解析 DOM 或者 XML 会占用多的内存)。可以直接在浏览器中打开且正确显示模板页面。直接是 html 结尾,可以直接编辑。

    2.Spring Boot 整合模板引擎 freemarker

    步骤1:引入 Freemarker 相关 maven 依赖

    <!-- 引入freemarker模板引擎的依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

    步骤2:Freemarker 基础配置

    # 是否开启thymeleaf缓存,本地为false,生产建议为true
    spring.freemarker.cache=false
    
    spring.freemarker.charset=UTF-8
    spring.freemarker.allow-request-override=false
    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.suffix=.ftl
    #路径
    spring.freemarker.template-loader-path=classpath:/templates/

    步骤3:新建 .ftl 文件

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
      </head>
      <body>
        <h1> ${setting.name} </h1>
        <h1> ${setting.domain} </h1>
      </body>
    </html>

    步骤4:简单测试代码编写和访问

    @Controller
    @RequestMapping("/freemaker")
    public class FreemakerController {
        @Autowired
        private ServerSettings setting;
        
        @GetMapping("hello")
        public String index(ModelMap modelMap){
            
            modelMap.addAttribute("setting", setting);
            
            return "fm/index";  //不用加后缀,在配置文件里面已经指定了后缀
        }
    }

    3.Spring Boot 整合模板引擎 thymeleaf

    官网地址:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

    步骤1:引入 thymeleaf 相关 maven 依赖

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

    步骤2:thymeleaf 基础配置

    #开发时关闭缓存,不然没法看到实时页面
    spring.thymeleaf.cache=false
    spring.thymeleaf.mode=HTML5
    #前缀
    spring.thymeleaf.prefix=classpath:/templates/
    #编码
    spring.thymeleaf.encoding=UTF-8
    #类型
    spring.thymeleaf.content-type=text/html
    #名称的后缀
    spring.thymeleaf.suffix=.html

    步骤3:新建 .html 文件

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
      </head>
      <body>
        模板引擎整合thymeleaf  admin/info.html
        <h1 >测试内容,未加th表达式</h1>
        <h1 th:text="${setting.name}">测试内容</h1>
      </body>
    </html>

    步骤4:简单测试代码编写和访问

    @Controller
    @RequestMapping("/tyhmeleaf")
    public class ThymeleafController {
        @Autowired
        private ServerSettings setting;
    
        @GetMapping("hello")
        public String index(){
            return "index";  //不用加后缀,在配置文件里面已经指定了后缀
        }
        
        @GetMapping("info")
        public String admin(ModelMap modelMap){
            modelMap.addAttribute("setting", setting); 
            return "admin/info";  //不用加后缀,在配置文件里面已经指定了后缀
        }
    }

    注意:$表达式只能写在th标签内部

    快速入门:https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html

  • 相关阅读:
    sql笔记
    虚函数和抽象类笔记
    构造函数和静态构造函数 笔记
    在与sql server 建立连接时出现与网络相关的或特定于实例的错误
    类型转换 笔记
    test
    document.body和document.documentElement比较
    sql2005 存储过程实现分页
    新闻发布用到的存储过程和触发器
    SQL数据查询实例1
  • 原文地址:https://www.cnblogs.com/jwen1994/p/11241453.html
Copyright © 2011-2022 走看看