spring boot 的模板引擎

spring boot 支持多种视图解析器,常用的就是Thymeleaf。 

Thymeleaf 是一种模板引擎语言,开发相对容易,但是效率相对较低,毕竟要编译一次。所以在开发管理后台的时候等并发要求不高的应用可以使用。

一、Thymeleaf 初体验

变量取值:

表达式名称 语法 用途
变量取值 ${...} 获取请求域、session域等域中相关信息
选择变量 *{...} 获取上下文对象值        
消息         #{...} 获取国际化等值
连接 @{...} 生成连接
片段表达式 ~{...} jsp:include 引用,引入公共页面

html元素赋值:

<input type="submit" value=""  th:attr="value=#{sb.sb}">,使用th:attr="属性=值"或者th:value="值",进行赋值。

使用方式,引入依赖:

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

自动配置好的策略,使用者只要开发页面即可:

  • 所有配置属性都在:ThymeleafProperties
  • 配置好了模板引擎:SpringTemplateEngine
  • 试图解析器:ThymeleafViewResolver

页面规则:

防止表单重复提交,使用请求请求重定向:

 简单的逻辑:

 行内数据取值:

遍历:

 公共内容提取,主要三种方式:

  • replace  
  • include
  • insert

Thymeleaf 整体比较简单,可以参照以前的JSP和EL表达式。使用的时候最好是访问官方文档进行参照。

二、视图解析原理

  • 目标方法处理过程中,所有的字符串数据都会放在ModelViewContainer中,包括数据和试图地址
  • 如果方法的参数是一个自定义类型的对象(从请求参数中确定的),也会放入ModelViewContainer,可以理解为在整个流程中产生的任何对象都会放入容器中。
  • 任何目标方法执行完成之后,都会返回ModelAndView对象
  • 整个试图跳转是由 processDispatchResult 决定的
    • 调用render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response)进行页面渲染
      •  根据方法的返回值,得到view对象 ,view定义了页面的渲染逻辑

      • 得到试图解析器5钟,遍历所有解析器查看哪个能根据当前返回值得到view

      • 可以看到第一个内容协商试图解析器,包含了其他4个 
      •  得到试图对象调用render方法

    • ThymeleafViewResolver试图解析器,会根据前缀判断是重定向or跳转

    • 如果是普通字符串则返回 ThymeleafView,最后调用器render拼接页面,返回给数据流

猜你喜欢

转载自blog.csdn.net/liming0025/article/details/120712182