程序加载或用浏览器访问静态资源时出现以下的警告:
No mapping found for HTTP request with URI [/] in DispatcherServlet with name ”
问题原因:默认的访问的URL都会被DispatcherServlet所拦截,从web.xml下对spring mvc的DispatcherServlet请求url映射的配置可以看出,具体配置如下:
hello-dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/application.xml
1
hello-dispatcher
/
/
url-pattern使用的是/,而不是/,如果使用/,那么请求时可以通过DispatcherServlet转发到相应的Action或者Controller中的,但是返回的内容,如返回的jsp还会再次被拦截,这样导致404错误,即访问不到jsp。所以如果以后发现总是有404错误的时候,别忘了check一下 url-pattern的配置是否是/*.
那么如何访问自己需要的静态资源文件呢? 解决方案一(告诉spring 静态资源的处理方式):
解决方案二:
hello-dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/application.xml
1
hello-dispatcher
/.jsp
告诉spring mvc只拦截对于某一类文件的请求,比如上面配置的只拦截对于后缀为jsp文件的访问。 解决方案三:
hello-dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/application.xml
1
hello-dispatcher
/
default
*.js
告诉spring mvc 对于后缀为js的文件是可以访问的。依次类推,需要访问其他资源文件时可以通过servlet-mapping追加。
作者:jiankunking 出处:http://blog.csdn.net/jiankunking