• springboot9:视图解析


    一.视图解析thymeleaf的使用

    1.配置

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

    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方法
  • 相关阅读:
    Cadence学习篇(12) Cadence中使用Pspice进行电路仿真
    Java时间处理---Java8中时区相关类库介绍
    Spring Cloud Gateway集成Sentinel流控
    明明加了唯一索引,为什么还是产生了重复数据?
    Java面向对象编程
    基于 Flask-Admin 与 AdminLTE 构建通用后台管理系统
    C/C++数据结构——字典序最小的中序遍历
    Unexpected WSL error错误处理备忘
    Service Weaver:以单体形式编码,以微服务形式部署
    InnoDB引擎之flush脏页
  • 原文地址:https://blog.csdn.net/qq_44724899/article/details/127878496