在Spring MVC中,视图控制器和视图解析器是两个关键的组件,用于帮助控制器选择合适的视图以渲染用户界面。
视图控制器(View Controller)
视图控制器用于将请求路径映射到具体的视图
,简化了配置和处理请求的过程。通过视图控制器,可以直接将请求路径与视图的映射关系配置在Spring MVC中,而无需在控制器方法中做处理。
代码如下:
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addViewController("/login").setViewName("login");
}
}
addViewControllers 方法通过 ViewControllerRegistry 将"/home"路径映射到"home"视图,将"/login"路径映射到"login"视图。
视图解析器(View Resolver)
视图解析器用于将逻辑视图名称解析为具体的视图对象
,从而渲染用户界面。它可以根据配置的规则找到对应的视图对象,比如JSP、Thymeleaf等。
代码如下:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
public class MvcConfig {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
InternalResourceViewResolver 将逻辑视图名称解析为JSP视图,前缀为"/WEB-INF/views/“,后缀为”.jsp"。