在控制器中进行catchall请求映射会排除资源

时间:2017-07-12 08:50:08

标签: java spring controller resources

我有一个默认的spring mvc应用程序。在其中,我有一个像这样的控制器:

@GetMapping("/**")
public String get(Model model) { }

现在这适用于所有请求,所以没关系,但它也适用于静态资源,如js,img,css文件。

如何排除这些资源?我正在使用注释btw ..

到目前为止我尝试过:

WebConfig:

  @Override
  public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    super.addResourceHandlers(registry);
    registry.addResourceHandler("/images/**").addResourceLocations("/images/");
    registry.addResourceHandler("/css/**").addResourceLocations("/WEB-INF/css/");
    registry.addResourceHandler("/js/**").addResourceLocations("/js/");
  }

  @Override
  public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
  }

WebInitializer:

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

  @Override
  protected Class<?>[] getRootConfigClasses() {
    return new Class[]{WebConfig.class};
  }

  @Override
  protected Class<?>[] getServletConfigClasses() {
    return new Class[]{WebConfig.class};
  }

  @Override
  protected String[] getServletMappings() {
    return new String[]{"/"};
  }

但它不起作用,对css文件的请求将由控制器处理,而不是向我显示静态资源。

由于我没有使用Spring启动,因此链接问题中提到的解决方案并没有解决这个问题。

0 个答案:

没有答案