当找不到js等静态资源文件,我们应该按下面的思路去分析:
- 路径不对(可以采用绝对或相对路径)
- web.xml里,拦截的内容不对
--------------
关于1,虽然路径正确,但是我用这种方式不可以访问css和js文件:
<script type="text/javascript" src="/js/extjs/ext-all.js"></script>
//<script type="text/javascript" src="/js/extjs/ext-debug.js"></script>
<script type="text/javascript" src="/js/extjs/locale/ext-lang-zh_CN.js"></script>
<link rel="stylesheet" type="text/css" href="/js/extjs/resources/css/ext-all.css"/>
改成这样就可以了:
<script type="text/javascript">
<%request.setAttribute("ctxPath", request.getContextPath());%>
</script>
<script type="text/javascript" src="${ctxPath }/js/extjs/ext-all.js"></script>
//<script type="text/javascript" src="${ctxPath }/js/extjs/ext-debug.js"></script>
<script type="text/javascript" src="${ctxPath }/js/extjs/locale/ext-lang-zh_CN.js"></script>
<link rel="stylesheet" type="text/css" href="${ctxPath }/js/extjs/resources/css/ext-all.css"/>
关于2,
多种方式可以拒绝拦截:
方式1.
激活Tomcat的DefaultServlet(既服务于静态资源又服务于目录列表(如果允许目录列表的话)的servlet)来处理静态文件,要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入Spring了。
<!--servlet可以访问的静态资源-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.xml</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.chm</url-pattern>
<url-pattern>*.gz</url-pattern>
<url-pattern>*.txt</url-pattern>
<url-pattern>*.ttf</url-pattern>
<url-pattern>*.woff</url-pattern>
<url-pattern>*.woff2</url-pattern>
<url-pattern>*.eot</url-pattern>
<url-pattern>*.svg</url-pattern>
<url-pattern>*.swf</url-pattern>
<url-pattern>*.jst</url-pattern>
</servlet-mapping>
方式2.
在spring3.0.4以后版本提供了mvc:resources , 使用方法:
<!-- 对静态资源文件的访问 -->
<
mvc:resources
mapping
=
"/images/**"
location
=
"/images/"
/>
/images/**映射到ResourceHttpRequestHandler进行处理,
location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中。
方式三.
使用
<
mvc:default-servlet-handler
/>