当我将 Web 应用程序从 Spring 4.1.0 更新到 4.1.2 后,资源映射停止工作。
在没有任何更改的情况下,对任何资源的每个请求都会返回“HTTP 404 - NOT FOUND”(.js、.png 等...)。
然后我切换回 Spring 4.1.0,一切又恢复正常了。
这是我的应用程序配置类:
public class MvcConfiguration extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/**");
}
}
这个问题类似于:Resource Not Found after Spring 4.1.2 Update when deploy with JRebel 6.0.0
我的资源位于:
- [项目]\WebContent\资源
这是我的 servlet 初始值设定项:
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer implements HttpSessionListener {
private static final int MAX_UPLOAD_SIZE = 1 * 1024 * 1024; // 1mb;
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { MvcConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
encodingFilter.setForceEncoding(true);
return new Filter[] { encodingFilter, new MultipartFilter() };
}
@Override
protected void customizeRegistration(Dynamic registration) {
File uploadDirectory = new File(System.getProperty("java.io.tmpdir"));
MultipartConfigElement multipartConfigElement = new MultipartConfigElement(uploadDirectory.getAbsolutePath(), MAX_UPLOAD_SIZE, MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);
registration.setMultipartConfig(multipartConfigElement);
}
最佳答案
只需将您的资源处理程序更改为以下内容:
public class MvcConfiguration extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
从 Spring 4.1.1 升级时,这也破坏了我的代码,但删除 Spring 4.1.6 中的尾随 /**
解决了这个问题。
关于java - Spring 4.1.2 更新后找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27277873/