SpringMVC中静态资源处理方案

使用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"  />

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37955704/article/details/104663110