【Web开发】Spring MVC 中的视图解析机制

视图解析的实现基础

视图解析器(ViewResolver)是 Spring MVC 的重要组成部分,负责将逻辑视图名解析为具体的视图对象。
Spring MVC 提供了很多视图解析类,其中每一项都对应 Java Web 应用中特定的某些视图技术。

viewResolver组件会将viewName解析成view对象,view对象会调用render完成结果的处理。

  • ViewResolver 与 View 接⼝

    • AbstractCachingViewResolver

      • UrlBasedViewResolver

        • FreeMarkerViewResolver
        • InternalResourceViewResolver
      • ContentNegotiatingViewResolver 根据请求文件名或Accept头解析视图。

在这里插入图片描述

一些可参阅的博客:

http://c.biancheng.net/spring_mvc/view-resolver.html

https://blog.youkuaiyun.com/fengyuhan123/article/details/79723310

DispatcherServlet 中的视图解析逻辑

  • initStrategies()

    • initViewResolvers() 初始化了对应 ViewResolver
  • doDispatch()

    • processDispatchResult()
    • 没有返回视图的话,尝试 RequestToViewNameTranslator
    • resolveViewName() 解析 View 对象

一些可参阅的博客:

https://blog.youkuaiyun.com/u013541707/article/details/108511017

使⽤ @ResponseBody 的情况

  • 在 HandlerAdapter.handle() 的中完成了 Response 输出

    • RequestMappingHandlerAdapter.invokeHandlerMethod()

      • HandlerMethodReturnValueHandlerComposite.handleReturnValue()

      • RequestResponseBodyMethodProcessor.handleReturnValue()

转发与重定向

  • redirect: 重定向
  • forward: 转发

Spring MVC 中的常⽤视图

Spring MVC ⽀持的视图

官方文档:https://docs.spring.io/spring-framework/docs/5.1.5.RELEASE/spring-framework-reference/web.html#mvc-view

⽀持的视图列表:

  • Jackson-based JSON / XML
  • Thymeleaf & FreeMarker

配置 HttpMessageConverter

在之前的RequestMapping的Handler也有提到过Converter,在视图的部分也有自己对应的HttpMessageConverter

  • 通过 WebMvcConfigurer 的 configureMessageConverters()
  • Spring Boot ⾃动查找 HttpMessageConverter 进⾏注册

在这里插入图片描述

Spring Boot 对 Jackson 的⽀持

  • JacksonAutoConfiguration

    • Spring Boot 通过 @JsonComponent 注册 JSON 序列化组件
    • Jackson2ObjectMapperBuilderCustomizer
  • JacksonHttpMessageConvertersConfiguration

    • 增加 jackson-dataformat-xml 以⽀持 XML 序列化

Thymeleaf

“Thymeleaf is a modern server-side Java template engine for both web and standalone environments.” – https://www.thymeleaf.org/

  • 添加 Thymeleaf 依赖

    • org.springframework.boot:spring-boot-starter-thymeleaf
  • Spring Boot 的⾃动配置

    • ThymeleafAutoConfiguration
    • ThymeleafViewResolver
  • Thymeleaf 的⼀些默认配置

    • spring.thymeleaf.cache=true
    • spring.thymeleaf.check-template=true
    • spring.thymeleaf.check-template-location=true
    • spring.thymeleaf.enabled=true
    • spring.thymeleaf.encoding=UTF-8
    • spring.thymeleaf.mode=HTML
    • spring.thymeleaf.servlet.content-type=text/html
    • spring.thymeleaf.prefix=classpath:/templates/
    • spring.thymeleaf.suffix=.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值