SpringMVC 的使用映射路径 <mvc:resources >
以下是测试结果,可能存在纰漏,暂记录一下。
使用springMVC时,一般将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。
静态文件如 .js、.css、图片等文件也会被拦截,所以需要在springMVC.xml 文件里配置映射路径,
例如:
<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>