在我们将Web项目部署到服务器时,有时会出现静态资源找不到的问题,如在我发布一个Spring MVC的项目时会报出这样的错误“No mapping found for HTTP request with URI [/HelloWorld/login] in DispatcherServlet with name 'springmvc'”,经过网上的查阅,查看各种博客最后通过实验总结得出原因:
<servlet-mapping>的<url-pattern>/</url-pattern>把所有的请求都交给spring去处理了,而所有available的请求url都是在Constroller里使用类似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)这样的注解配置的,这样的话对js/css/jpg/gif等静态资源的访问就会得不到。
有以下一些解决方法:
一、在web.xml里添加如下的配置
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
二、在spring的配置文件中添加如下一行(注意,需要是spring3.0.5以上版本):
<mvc:default-servlet-handler/>
以上是实验过的方法