• 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方法
  • 相关阅读:
    树莓派4B_OpenCv学习笔记5:读取窗口鼠标状态坐标_TrackBar滑动条控件的使用
    InitializingBean afterPropertiesSet
    H5/微信 Video标签移动端播放问题
    用了一个月的Docker,我真的是爱了
    react-router v6使用createHashHistory进行history.push时,url改变页面不渲染
    俄罗斯方块游戏开发教程8:下落处理
    怎么转换音频格式?建议收藏这几个方法
    时序分析基础(6)——input delay时序分析
    indexDB 本地数据库
    Nacos 2.1.1 正式发布
  • 原文地址:https://blog.csdn.net/qq_44724899/article/details/127878496