视图解析器
视图解析器(ViewResolver)是 Spring MVC 的重要组成部分,它提供了逻辑视图名称与实际视图之间的映射,负责将逻辑视图名解析为一个具体的视图对象。
SpringMVC 提供了一个视图解析器的接口 ViewResolver,所有具体的视图解析器必须实现该接口。
- public interface ViewResolver {
- @Nullable
- View resolveViewName(String viewName, Locale locale) throws Exception;
- }
Spring MVC 提供了很多 ViewResolver 接口的实现类,它们中的每一个都对应 Java Web 应用中某些特定视图技术。如果我们在使用某个特定的视图解析器,就需要将它以 Bean 组件的形式注入到 Spring MVC 的容器中,否则 Spring MVC 会使用默认的 InternalResourceViewResolver 进行解析。
视图解析器 | 说明 |
---|---|
BeanNameViewResolver | 将视图解析后,映射成一个 Bean,视图的名称就是 Bean 的 id。 |
InternalResourceViewResolver | 将视图解析后,映射成一个资源文件。例如将一个视图名为字符串“success.jsp”的视图解析后,映射成一个名为 success 的 JSP 文件。 |
FreeMarkerViewResolver | 将视图解析后,映射成一个 FreeMarker 模板文件。 |
ThymeleafViewResolver | 将视图解析后,映射成一个 Thymeleaf 模板文件。 |
我们知道,非逻辑视图是不需要视图解析器进行解析的,例如 MappingJackson2JsonView ,它的含义是将当前的数据模型转换为 JSON,并不需要对视图逻辑名称进行转换。但对于逻辑视图而言,将逻辑视图名转换为视图却是一个不可缺少的过程。
以 ThymeleafView 为例,它就是一个十分典型的逻辑视图,想要使用 Thymeleaf 进行前端页面开发,通常都需要在 Spring MVC 的配置文件中配置一个 Thymeleaf 视图解析器,示例配置如下。
- <!-- 配置 Thymeleaf 视图解析器 -->
- <bean id="viewResolver"
- clas