SpringBoot入门(七)视图解析/Thymeleaf/拦截器/文件上传

目录

第七章 Web开发

7.5 视图解析

7.5.1 视图解析原理流程

7.6 模板引擎-Thymeleaf

7.6.1 简介

7.6.2 基本语法

        7.6.2.1 表达式

        7.6.2.2 字面量

        7.6.2.3 文本操作

        7.6.2.4 数学运算

        7.6.2.5 布尔运算

        7.6.2.6 比较运算

        7.6.2.7 条件运算

        7.6.2.8 特殊操作

7.6.3 设置属性值-th:attr

7.6.4 迭代

7.6.5 条件运算

7.6.6 属性优先值

7.6.7 Thymeleaf使用实例

        7.6.7.1 引入starter

        7.6.7.2 SpringBoot自动配置好thymeleaf

        7.6.7.3 引入thymeleaf提示

        7.6.7.4 控制器controller开发

        7.6.7.5 页面开发

7.6.8 给请求加前置路径

7.7 拦截器

7.7.1 HandlerInterceptor 接口

7.7.2 配置拦截器

7.7.3 拦截器原理

7.8 文件上传

7.8.1 页面表单

7.8.2 文件上传代码

7.8.3 自动配置原理


第七章 Web开发

7.5 视图解析

   SpringBoot默认不支持JSP,需要引入第三方模板引擎技术实现页面渲染。

7.5.1 视图解析原理流程

  • 目标方法处理的过程中,所有数据都会被放在ModelAndViewContainer里面,包括数据和视图地址
  • 如果处理器目标方法的参数是一个自定义类型对象,则对象的属性值从请求参数中确定,也会把这个对象重新放在ModelAndViewContainer中(之前学习过)
  • 任何目标方法执行完成以后都会返回ModelAndView(数据和视图地址),Model就是跳转后需要的数据,View就是要跳转到的页面地址。即使自己定义目标方法时没有写视图地址,底层也会有一个默认的视图地址规则。
  • processDispatchResult处理派发结果,决定页面改如何响应

    • render(mv, request, response); 进行页面渲染逻辑

      • 根据方法的String返回值得到View对象【定义了页面的渲染逻辑】

        • 所有的视图解析器尝试是否能根据当前返回值得到View对象

        • 比如重定向操作,得到了redirect:/main.html --> ThymeleafViewResolver视图解析器new了一个RedirectView视图对象

        • ContentNegotiationViewResolver里面包含了所有的视图解析器,内部还是利用这些视图解析器得到视图对象。(视图解析器的作用就是得到这个View对象)

        • 视图对象调用render方法进行页面渲染工作view.render(mv.getModelInternal(), request, response);

          • RedirectView如何渲染【重定向到一个页面】
            • 获取目标url地址

            • response.sendRedirect(encodedURL);(还是Servlet中的重定向方式)

视图解析:

  • 返回值以forward:开始:new InternalResourceView(forwardUrl); --> 转发request.getRequestDispatcher(path).forward(request, response);(还是Servlet中的请求转发方式)
  • 返回值以redirect:开始: new RedirectView() --> render就是重定向逻辑response.sendRedirect(encodedURL);

  • 返回值是普通字符串: new ThymeleafView() 

  • 视图解析器:

7.6 模板引擎-Thymeleaf

7.6.1 简介

   Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎,类似JSP、Velocity、FreeMaker等,可以完全替代JSP,也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。

   Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。

7.6.2 基本语法

7.6.2.1 表达式

表达式名字 语法
变量取值 ${...}
选择变量 *{...}
消息 #{...}
链接 @{...}
片段表达式 ~{...}

7.6.2.2 字面量

  • 文本值:'one text'   'Another one'
  • 数字:0   34   3.0   12.3
  • 布尔值:true   false
  • 空值:null
  • 变量:one   two   变量不能有空格

7.6.2.3 文本操作

  • 字符串拼接:+
  • 变量替换:|The name is ${name}|

7.6.2.4 数学运算

  • 运算符:+   -   *   /   %

7.6.2.5 布尔运算

  • 运算符:and or
  • 一元运算:!   not

7.6.2.6 比较运算

  • 比较:>/gt   </lt   >=/ge   <=/le   ==/eq   !=/ne

7.6.2.7 条件运算

  • if-then:(if) ? (then)
  • if-then-else:(if) : (then) : (else)
  • Default:(value) ?: (defaultvalue)

7.6.2.8 特殊操作

  • 无操作:_

7.6.3 设置属性值-th:attr

  • 设置单个值
<form action="subscribe.html" th:attr="action=@{/subscribe}">
  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值