更改资源文件的位置

把webapp目录下的文件拷贝到resources目录的static目录下

迁移web.

  • 扩展WebApplicationInitializer迁移web.

  • public class WebInitializer implements WebApplicationInitializer {
    
        @Override
        public void  up(ServletContext servletContext)
                throws ServletException {
            AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
            ctx.register(MyMvcConfig.class);
            ctx.setServletContext(servletContext); 
            
            Dynamic servlet = servletContext.addServlet(\"dispatcher\", new DispatcherServlet(ctx)); 
            servlet.addMapping(\"/\");
            servlet.setLoad up(1);
            servlet.setAsyncSupported(true);
    
        }
    
    }

    WebApplicationInitializer的实现类会自动被SpringServletContainerInitializer(用来启动servlet3.0容器)获取到。

    EnableWebMvc

    开启该注解,会开启一些mvc的默认配置:

  • 必要的ViewResolver,比如ContentNegoti-atingViewResolver和Bean-NameViewRe-solver。

  • 将必要的Converter、GenericConverter和Formatter等bean注册到IoC容器。 - 添加一系列的HttpMessageConverter以便支持对Web请求和相应的类型转换。

  • 自动配置和注册MessageCodesResolver。

  • 但如果使用下面的方式则会覆盖默认的配置(spring-boot-starter-web该依赖会autoconfig这些)。

  • 自定义webmvc

    可以通过Configuration、EnableWebMvc注解在继承WebMvcConfigurerAdapter的类上面,来自定义mvc的配置

  • @Configuration
    @EnableWebMvc// 1
    @EnableScheduling
    @ComponentScan(\"com.wisely.highlight_springmvc4\")
    public class MyMvcConfig extends WebMvcConfigurerAdapter {// 2
    
        @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setPrefix(\"/WEB-INF/classes/views/\");
            viewResolver.setSuffix(\".jsp\");
            viewResolver.setViewClass(JstlView.class);
            return viewResolver;
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
            registry.addResourceHandler(\"/assets/**\").addResourceLocations(
                    \"classpath:/assets/\");// 3
    
        }
    
        @Bean
        // 1
        public DemoInterceptor demoInterceptor() {
            return new DemoInterceptor();
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {// 2
            registry.addInterceptor(demoInterceptor());
        }
    
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController(\"/index\").setViewName(\"/index\");
            registry.addViewController(\"/toUpload\").setViewName(\"/upload\");
            registry.addViewController(\"/converter\").setViewName(\"/converter\");
            registry.addViewController(\"/sse\").setViewName(\"/sse\");
            registry.addViewController(\"/async\").setViewName(\"/async\");
        }
    
         @Override
         public void configurePathMatch(PathMatchConfigurer configurer) {
         configurer.setUseSuffixPatternMatch(false);
         }
    
        @Bean
        public MultipartResolver multipartResolver() {
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
            multipartResolver.setMaxUploadSize(1000000);
            return multipartResolver;
        }
        
        @Override
        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            converters.add(converter());
        }
        
        @Bean 
        public MyMessageConverter converter(){
            return new MyMessageConverter();
        }
    }

     

收藏 打印