import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//Windows下
registry.addResourceHandler("/uploads2
@Override
public void addCorsMappings(CorsRegistry registry) {
// 设置允许跨域的路由
registry.addMapping("
public void addCorsMappings(CorsRegistry registry) ;
void addInterceptors(InterceptorRegistry registry);
void configureViewResolvers(ViewResolverRegistry registry);
void configureContentNegotiation(ContentNegotiationConfigurer configurer);
void addViewControllers(ViewControllerRegistry registry);
void addResourceHandlers(ResourceHandlerRegistry registry);
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
一、addInterceptors:拦截器
- addInterceptor:须要一个实现HandlerInterceptor接口的拦截器实例
- addPathPatterns:用于设置拦截器的过滤路径规则
excludePathPatterns:用于设置不须要拦截的过滤规则java
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/toLogin").setViewName("login");
registry.addViewController("/").setViewName("/index");
registry.addViewController("/login").setViewName("forward:/index.html");
super.addViewControllers(registry);
}
四、resourceViewResolver:视图解析器
@Bean
public InternalResourceViewResolver resourceViewResolver()
{
InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
//请求视图文件的前缀地址
internalResourceViewResolver.setPrefix("/WEB-INF/jsp/");
//请求视图文件的后缀
internalResourceViewResolver.setSuffix(".jsp");
return internalResourceViewResolver;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
super.configureViewResolvers(registry);
registry.viewResolver(resourceViewResolver());
}
五、configureMessageConverters:信息转换器
@Override public void configureMessageConverters(List六、addResourceHandlers:静态资源> converters) { //调用父类的配置 super.configureMessageConverters(converters); //建立fastJson消息转换器 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); //建立配置类 FastJsonConfig fastJsonConfig = new FastJsonConfig(); //修改配置返回内容的过滤 fastJsonConfig.setSerializerFeatures( SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty ); fastConverter.setFastJsonConfig(fastJsonConfig); //将fastjson添加到视图消息转换器列表内 converters.add(fastConverter); }
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//自定义项目内目录
//registry.addResourceHandler("/my/**").addResourceLocations("classpath:/my/");
//指向外部目录
registry.addResourceHandler("/my/**").addResourceLocations("file:E:/my/");
super.addResourceHandlers(registry);
}
3、使用WebMvcConfigurerAdapter一、过期方式:继承WebMvcConfigurerAdapter
该方法在spring boot 2.0,Spring 5.0 以后,已经被废弃 spring
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
//TODO
}
二、代替方案
①直接实现WebMvcConfigurerjson
@Configuration
public class WebMvcConfg implements WebMvcConfigurer {
//TODO
}
②直接继承WebMvcConfigurationSupport跨域
@Configuration
public class WebMvcConfg extends WebMvcConfigurationSupport {
//TODO
}
查看源码发现: WebMvcConfigurerAdapter只是对WebMvcCofigurer的空实现app
WebMvcConfigurationSupport与WebMvcConfigurerAdapter、接口WebMvcConfigurer处于同一个目录下框架
WebMvcConfigurationSupport包含WebMvcConfigurer里面的方法,且WebMvcConfigurationSupport的实现的方法更全面jsp
可是继承WebMvcConfigurationSupport会发现Spring Boot的WebMvc自动配置失效(WebMvcAutoConfiguration自动化配置),致使没法视图解析器没法解析并返回到对应的视图。



