【问题标题】:Access static resources Spring MVC 4访问静态资源 Spring MVC 4
【发布时间】:2017-05-18 19:10:06
【问题描述】:

我已将 Spring MVC 设置如下,但未显示 logo.png 图像。我正在使用 Spring 4.2.0.RELEASE

图片 logo.png 在 src/main/resources/images/logo.png 下

AppWebConfiguration.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="br.com.casadocodigo.loja")
public class AppWebConfiguration extends WebMvcConfigurerAdapter {

@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views");
    resolver.setSuffix(".jsp");
    return resolver;
}

@Bean(name="messageSource")
public MessageSource messageResource() {
    ReloadableResourceBundleMessageSource bundle = 
            new ReloadableResourceBundleMessageSource();
    bundle.setBasename("WEB-INF/messages");
    bundle.setDefaultEncoding("UTF-8");
    bundle.setCacheSeconds(1);
    return bundle;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
        .addResourceHandler("/resources/**")
        .addResourceLocations("/resources/images")
        .setCachePeriod(3600)
        .resourceChain(true)
        .addResolver(new PathResourceResolver());   
}

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

}

ServletSpringMVC.java

public class ServletSpringMVC extends 
AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
    return null;
}

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

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

}

JSP 页面:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<div>
    <img src="${pageContext.request.contextPath}/resources/images/logo.png" 
alt=""/>
</div>

【问题讨论】:

  • /src/main/resources 是您当前配置查看的类路径的根/src/main/resources/resources/images。您还配置了一个资源链,但配置了 PathResolver,使其始终返回 null
  • 您建议如何设置? @M.Deinum

标签: java spring-mvc jakarta-ee


【解决方案1】:

试试这个代码,

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
}

【讨论】: