springboot9:视图解析

一.视图解析thymeleaf的使用

1.配置

  • 引入thymeleaf的依赖
  • springboot自动配置好了thymeleaf(模板引擎,视图解析器放到容器中了)
  • 直接开发页面即可
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

2.thymeleaf的配置默认路径

  • prefix=“spring.thyleaf”
  • =“classpath:/templates/”
  • =“.html”

3.thymeleaf开发

  • 引入模板空间 xmls:th=“http://www.thymeleaf.org”

二.视图解析原理

1.重定向

  • 从dodispatch解析
  • 执行完handler方法后会有一个返回值(例如返回值为redirect:/main.html)
  • 选择返回值处理器来处理返回值
    • ModelAndView…
    • ViewNameMethodReturnValueHnadler 成功条件,判断是否为字符串
  • 所有的返回值最终都会被放在ModelAndViewContainer容器里面,包括数据和视图地址(model内的放入的值,view为返回的结果)
    • 将字符串放入容器的viewName属性中
    • 判断当前视图是否为重定向视图(判断视图名是不是 startwith"redirect:")
  • 将model和viewname封装为一个modelandview(无论任何handler方法都会返回,里面有数据和地址)
  • 跳转视图在 processDispacherResult方法中,处理派发结果,决定页面如何响应
    • 里面有render(mv,request,response)方法,来具体渲染页面
      • 从mv中拿到视图名(redirect:/main.html)
      • 根据方法的String返回值,得到view对象(定义了页面的渲染逻辑)
      • 如何得到的view对象利用内容协商(里面有所有的视图解析器)(选择合适的viewResolvers视图解析器来解析卷根据当前返回值得到view对象)
        • thymeleafviewResolver…判断里面是否以redirect:开头,是,然后直接new了一个RedirectView返回
        • 即根据返回值(redirect:/main.html)确定了一个view为RedirectView
      • 得到视图对象RedirectView后视图对象会调用render方法来进行页面渲染(如何渲染)(重定向到一个页面)
        • 获取目标url地址/main.html
        • 调用servlet原生方法response.sendRedirect(/main.html)

2.直接返回字符串

  • 例如返回“table/dynamic_table”
  • hymeleafviewResolver…
    • 判断里面是否以redirect开始,会new一个RedirectView的对象(底层render逻辑为重定向)
    • 判断里面是否以forward开始,会new一个internalResourceView的对象(底层render逻辑为request.getRequestDispacher()最终调用forward)
    • 返回值时普通字符串,直接new一个ThymeleafView()声明渲染逻辑,调用其render方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值