如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题。
如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了。
先下图,我做的项目是用html做跳转,由于代码洁癖,尽量使用纯ajax和html作为交互显示页面,用springMVC做后台处理程序。
方案一:激活Tomcat的defaultServlet来处理静态文件
需要在web.xml中配置
<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> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping>
方案二: 只对.do文件拦截
<servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/.do</url-pattern> </servlet-mapping>
方案三:使用mvc:resources 。location是指webroot下的所在路径。mapping是指要处理的映射。
<mvc:resources location="/pages/" mapping="/pages/**" />
注意头文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">