如何在Spring MVC中配置Servlet映射和资源处理程序

时间:2015-12-08 01:44:12

标签: spring spring-mvc mapping http-status-code-404 static-resource

我创建了具有以下文件夹结构的示例Spring MVC REST Maven项目 Folder structure

ResourceHandlerRegistry配置如下

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.raju.spring_app")
public class RootConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static_res/*").addResourceLocations("/WEB-INF/html/static_res/");
    }
//Other methods 
}

Servlet映射如下

public class HelloWorldInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/", "/static_res/*" };
    }
    //Other Methods
}

问题是每当我尝试访问资源时     http://localhost:8080/spring4_rest_angular_demo/static/css/app.css

我收到404错误。 我想保留此文件夹结构以获取css IntelliSense建议 在index.jsp文件中。

<link href="static_res/css/app.css" rel="stylesheet"></link>

2 个答案:

答案 0 :(得分:1)

几乎没有更正:

替换

New Product

return new String[] { "/", "/static_res/*" };

return new String[] { "/" };

registry.addResourceHandler("/static_res/*")

此外,正确的路径是

registry.addResourceHandler("/static_res/**")

而不是

http://localhost:8080/spring4_rest_angular_demo/static_res/css/app.css

答案 1 :(得分:0)

使用Spring 3.0.4.RELEASE及更高版本,您可以使用

<mvc:resources mapping="/resources/**" location="/public-resources/"/>

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-static-resources

所示

此外,您应该避免将页面放在WEB-INF中。将层次结构中html/css/js的文件夹置于Web应用程序文件夹下。通常,在WEB-INF中应该只有配置xml文件。