spring boot 的模板引擎

本文介绍了SpringBoot中Thymeleaf模板引擎的使用,包括变量取值、选择变量、消息、连接、片段表达式等语法,并展示了如何配置和使用Thymeleaf。同时,文章深入解析了SpringBoot的视图解析原理,从ModelAndView容器到试图解析器的工作流程,解释了页面渲染和防止表单重复提交的方法。

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拼接页面,返回给数据流

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值