Spring Boot调度程序servlet无法找到/映射静态内容



我在使用SpringBoot运行SpringMVC应用程序时遇到了问题。应用程序能够成功调用映射的控制器和解析视图,但不能解析静态内容。

我读到spring引导自动看到以下文件夹的静态资源:-static,publicWeb_INF/resources等。

我试着把我的文件放在下面的地方,但仍然没有帮助。

我在控制台的输出是:

内部控制器2016-08-23 17:22:12.002 [http-nio-9990-exec-1][org.springframework.web.servlet。PageNotFoundn][警告]org.springframework.web.servlet.PageNotFound:{} -没有找到映射为HTTP请求与URI [/springBootApp/templates/hello.html]在DispatcherServlet

其中springBootApp是我的上下文根

下面是我的类SpringBoot类:-

@SpringBootApplication
public class ServiceApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(ServiceApplication.class);
        Set<ApplicationContextInitializer<?>> initLst = app.getInitializers();
        initLst.add(new PropertyPasswordDecodingContextInitializer());
        app.setInitializers(initLst);
        ApplicationContext ctx = app.run(args);
        System.out.println("Services Started");
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        application = application.initializers(new PropertyPasswordDecodingContextInitializer());
        return application.sources(ServiceApplication.class);
    }
    @Override
    protected WebApplicationContext createRootApplicationContext(ServletContext servletContext) {
        //project specific config
    }
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }   
}

MVCConfigClass:

@EnableWebMvc
@Configuration
@ComponentScan(basePackageClasses = ServiceApplication.class, includeFilters = @Filter(Controller.class), useDefaultFilters = false)
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Bean
    public ViewResolver configureViewResolver() {
        InternalResourceViewResolver viewResolve = new InternalResourceViewResolver();
        viewResolve.setPrefix("/templates/");
        viewResolve.setSuffix(".html");
        return viewResolve;
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/templates/**").addResourceLocations("/templates/");
        }
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

rest式Web服务类-

@RestController
@RequestMapping(value = "/myapp")
public class TestWebService {
    @RequestMapping(value = { "/hello" }, method = { RequestMethod.GET, RequestMethod.POST })
    public ModelAndView list(HttpServletRequest request) throws Exception {
        // HttpSession session = request.getSession();
        System.out.println("Inside Controller");
        ModelAndView modelView = new ModelAndView();
        ModelMap modelMap = modelView.getModelMap();
        modelView.setViewName("/hello");
        return modelView;
    }
}

我得到上面的输出调用:- http://localhost:9990/springBootApp/myapp/hello

扩展WebMvcConfigurerAdapter解决了这个问题

Spring引导会自动在src/main/resources文件夹中查找资源。但是如果你为资源处理实现WebMvcConfigurationSupport方法,那么它会移除资源处理方法的默认实现。

最新更新