Springboot配置多个视图解析器,关于ViewResolver内容协商原理

近期看了点Spring boot的框架源码,研究了一下WEB Mvc的视图解析器,记录一下,以备以后查阅.如果认知错误,还请小伙伴指教讨论.

  1. 几个核心的类
    DispatherServlet(前端控制器)、ViewResolver(视图解析器)、View(视图类)

  2. 以下使用两个视图解析器作为例子,比较好区别
    其一:ThymeleafViewResolver
    另一:InternalResourceViewResolver(系统默认实现)
    在WebMvcAutoConfiguration 自动注入

视图解析的过程
1.DispatcherServlet在选择视图解析器的时候,以优先级为处理原则,此优先级是根据该ViewResolver实现Ordered接口或者使用@Order注解赋值,数字最小优先级越高为原则.
2.通过判断,返回一个具体的View类,最终通过3、4步骤渲染成HTML或者是XML等视图内容.

ViewResolver视图解析器在DispatcherServlet解析

源码类DispatcherServlet

  1. 关于ViewResovlers排序
    系统通过下图该方法,对于视图解析器进行排序sort,排序的原则还是按照Order的大小(ps viewResolvers是一个List集合)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,在Spring配置文件中添加如下配置来启用Spring MVC: ``` <mvc:annotation-driven /> ``` 然后,配置DispatcherServlet并指定其映射路径: ``` <servlet> <servlet-name>myDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` 这里,我们配置了一个名为“myDispatcherServlet”的DispatcherServlet,并将其映射到根路径“/”。注意,我们还指定了一个名为“contextConfigLocation”的初始化参数,用于指定Spring MVC配置文件的位置。 接下来,我们配置视图解析器(ViewResolver),使DispatcherServlet能够解析视图并将其呈现给客户端。这里我们使用了InternalResourceViewResolver,它将JSP视图映射到WEB-INF目录下的JSP文件: ``` <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 这里,我们配置了一个名为“viewResolver”的InternalResourceViewResolver,并指定了JSP视图所在的目录(/WEB-INF/views/)以及JSP文件的后缀(.jsp)。这样,在Controller中返回的视图名将被解析为/WEB-INF/views/下的对应JSP文件,并将其呈现给客户端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值