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.jpgmapping里指定的格式匹配、这样、就会到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>

这样、打开浏览器访问即可正常显示图片。

原文地址:https://www.cnblogs.com/dcy521/p/14794916.html