SpringMVC访问静态资源

开门见山:

具体问题:SpringMVC中访问不到静态资源,如.js文件?
解决办法:在SpringMVC的配置文件(如*-servlet.xml)配置,同时加入
然后就可以访问到.js文件了,但此方法会导致其他所有.jsp文件都出现

问题及原因详解:

出现情况如下:
.js文件的目录:

SpringMVC访问静态资源_第1张图片
.js文件的目录

启动项目后,.jsp中.js文件不起作用,所以直接访问.js文件-->根目录/scripts/jquery-1.9.1.min.js
但是出现404,后台报错信息:
WARNING: No mapping found for HTTP request with URI [/_springmvc-2/scripts/jquery-1.9.1.min.js] in DispatcherServlet with name 'dispatcherServlet'
此URI没有被叫dispatcherServlet(这是我web.xml中配置的 DispatcherServlet 起的名字!)的映射

可以看出此问题出现原因:
    配置SpringMVC的web.xml时,DispatcherServlet的``/``是“/”
所以将所有的URL都被拦截,但此处是不需要处理的URL(毕竟人家是静态的!)。
处理办法:加入
办法原理:
default-servlet-handler 将在 SpringMVC 上下文中定义一个DefaultServletHttpRequestHandler
它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求
就将该请求交由 WEB 应用服务器默认的Servlet 处理(我的就是Tomcat)
如果不是静态资源的请求,才由 DispatcherServlet 继续处理
一般 WEB 应用服务器默认的 Servlet 的名称都是 default
若所使用的 WEB 服务器的默认 Servlet 名称不是 default
则需要通过 default-servlet-name 属性显式指定

注意:

引出第二个问题:.js文件按上述方法可以访问到
如下图:


SpringMVC访问静态资源_第2张图片
.js文件访问成功

但是项目其他,如.jsp文件可能会出现404,即使你访问一个不存在的.jsp文件也只会提示404

解决办法 :

加入 其作用

你可能感兴趣的:(SpringMVC访问静态资源)