使用springMVC时,一般将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。
当静态资源放在WEB-INF下面的时候,外部是不能直接访问的,一般是在springmvc的配置文件中配置资源映射
例如:
<mvc:resources location="/static/css/" mapping="/css/**"></mvc:resources>
需要注意的是,之后引用 css 文件时,正确的写法如下:
<link rel="stylesheet" href="/项目名/css/xxxxx.css" type="text/css" />
错误的写法如下:
<link rel="stylesheet" href="/css/xxxxx.css" type="text/css" />
错误原因是 映射路径是从项目内部开始的,也就是说 项目名 没有办法忽略掉,当然如果项目名为空,那么这么写是可以的
或
<link rel="stylesheet" href="css/xxxxx.css" type="text/css" />
如果项目名为空,这样写仍然是错误的, 少了一个 “/”。 以"/“开头时,是指从项目根路径开始,没有”/"开头的话,是相对路径,从当前页面开始。
另外,springMVC.xml 文件里配置映射路径,无法替代 项目名,就是说 location 里包含 项目名 是没有用的。如下写法是错误的。换句话说,前端文件里引用静态文件,项目名无法省略。
<mvc:resources location="/项目名/static/css/" mapping="/css/**"></mvc:resources>
如:
我们可以将css,js,img,image等静态文件夹放在WEB-INF目录下的static(自己创建),然后在springmvc.xml中配置添加如下配置:
<!-- 资源映射 -->
<mvc:resources location="/WEB-INF/static/" mapping="/**"/>
具体可参考如下图:
1. 将所有静态资源存放于此目录下
2. 在springmvc.xml中配置如下配置
3. 代码示例
【注意:因为我项目名为空,那么这么写是可以的,如果你的项目名不为空,这样写是报错的 (解释:映射路径是从项目内部开始的,也就是说 项目名 没有办法忽略掉),正确的写法为】:
<link rel="stylesheet" href="/项目名/xxxxx.css" type="text/css" />