Java -- SpringMVC学习笔记5、静态资源访问
1、静态资源访问
在springmvc框架中、web.xml文件中<url-pattern/>
的值如果从*.xxx改为为/后,静态资源就无法访问了。因为 DispatcherServlet会将向静态资源的获取请求,例如.css、.js、.jpg等资源的获取请求,当作是一个普通的 Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的。所以、如果使用斜杠的方式、就需要经过一些配置、才可以正常的访问静态资源。
2、使用<mvc:resources/>
在Spring3.0 版本后,Spring定义了专门用于处理静态资源访问请求的处理器ResourceHttpRequestHandler。并且添加了<mvc:resources/>
标签,专门用于解决静态资源无法访问问题。
2.1、需要在springmvc配置文件中添加如下形式的配置:
<mvc:resources mapping="/images/**" location="/images/"/>
- location:静态资源所在位置
- mapping:如果访问路径和mapping里指定的访问形式匹配、就映射到localtion指定的位置访问对应的静态文件。后边的**代表任何文件和子目录。
注意、mapping=/images/**
、并不是说在前端访问静态资源路径里就一定要这样写、这里mapping
的值和前台如何写访问路径没有关系、前端访问路径该怎么写还怎么写、是否需要加要根据情况,mapping
的值是为了解析浏览器整个访问路径中某一部分、然后对应到localtion
指定的位置。比如:
<img src="images/img1.jpg">
那么启动服务器然后打开浏览器访问图片的路径是:
http://localhost:8080/springmvc/images/img1.jpg
*路径里边有/images/img1.jpg
和 mapping
里指定的格式匹配、这样、就会到location
指定的位置去找资源。而如果这样写:
<img src="/images/img1.jpg">
因为前边加斜杠、就会从根路径开始找、这样就会是这样:
http://localhost:8080/images/img1.jpg
结果就会是404、这样是错误的。
2.2、声明注解驱动
解决动态资源和静态资源冲突的问题,在 springmvc 配置文件加入:
<!--声明注解驱动-->
<mvc:annotation-driven/>
2.3、访问测试
从当前目录开始找images目录下的img1.jpg
<body>
<img src="images/img1.jpg">
</body>
这样、打开浏览器访问即可正常显示图片。