WebMvcConfigurer配置类是Spring
内部的一种配置方式,采用JavaBean
的形式来代替传统的xml
配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。
public interface WebMvcConfigurer {
void configurePathMatch(PathMatchConfigurer var1);
void configureContentNegotiation(ContentNegotiationConfigurer var1);
void configureAsyncSupport(AsyncSupportConfigurer var1);
/* 默认静态资源处理器 */
void configureDefaultServletHandling(DefaultServletHandlerConfigurer var1);
void addFormatters(FormatterRegistry var1);
/* 拦截器配置 */
void addInterceptors(InterceptorRegistry var1);
/* 静态资源处理 */
void addResourceHandlers(ResourceHandlerRegistry var1);
/* 解决跨域问题 */
void addCorsMappings(CorsRegistry var1);
/* 视图跳转控制器 */
void addViewControllers(ViewControllerRegistry var1);
/* 这里配置视图解析器 */
void configureViewResolvers(ViewResolverRegistry var1);
void addArgumentResolvers(List<HandlerMethodArgumentResolver> var1);
void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> var1);
void configureMessageConverters(List<HttpMessageConverter<?>> var1);
void extendMessageConverters(List<HttpMessageConverter<?>> var1);
void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);
void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);
Validator getValidator();
MessageCodesResolver getMessageCodesResolver();
}
1. addInterceptors:拦截器
- addPathPatterns:用于设置拦截器的过滤路径规则;
addPathPatterns("/**")
对所有请求都拦截 - excludePathPatterns:用于设置不需要拦截的过滤规则
- 拦截器主要用途:进行用户登录状态的拦截,日志的拦截等。
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(userAuthorizationInterceptor)
.addPathPatterns("/admin/**")
.excludePathPatterns("/admin/zhz/**");
}
2. addViewControllers:页面跳转
在使用SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,在这里重写WebMvcConfigurer中的addViewControllers方法可达到同样的效果
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/admin").setViewName("forward:/admin/u/toLogin");
/* 注册默认首页路径*/
registry.addViewController("/").setViewName("forward:/index");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
3. addResourceHandlers:静态资源
用来自定义静态资源映射目录
@Configuration
public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer {
/* 配置静态访问资源 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/picture/**")
//表示文件路径,这里的意思是picture包下的所有文件,所有/picture/开头的请求
//都会去后面配置的路径下查找资源
.addResourceLocations("file:D:/picture/");
//表示要开放的资源
}
}
4.configureViewResolvers:视图解析器
/**
* 配置请求视图映射
* @return
*/
@Bean
public InternalResourceViewResolver resourceViewResolver()
{
InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
//请求视图文件的前缀地址
internalResourceViewResolver.setPrefix("/WEB-INF/jsp/");
//请求视图文件的后缀
internalResourceViewResolver.setSuffix(".jsp");
return internalResourceViewResolver;
}
/**
* 视图配置
* @param registry
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
super.configureViewResolvers(registry);
registry.viewResolver(resourceViewResolver());
/*registry.jsp("/WEB-INF/jsp/",".jsp");*/
}