XML配置
1.mvc:resources
spring3.0.4以后版本提供了mvc:resources
<!--对静态资源文件的访问-->
<mvc:resources mapping="/images/**" location="/resources/images/" />
/images /**
映射到 ResourceHttpRequestHandler 进行处理,location指定静态资源的位置,这里是webapp
目录下的resources/images文件夹
如图所示:
这时候访问1.jpg文件,URL为:localhost:8080/images/1.jpg
,
Spring就会去/resources/images/
目录里找到1.jpg文件。打包的时候跟WEB-INF同级目录,都位于war包或者jar包下。
或者可以这样配置
<!--对静态资源文件的访问-->
<mvc:resources mapping="/images/**" location="classpath:/upload/" />
这时候location是类路径
下的upload文件夹
如图所示:
这时候想访问1.jpg文件,URL为:localhost:8080/images/1.jpg
,Spring就会去类路径
下的upload文件夹里找到1.jpg文件
2.mvc:default-servlet-handler
<!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 -->
<mvc:default-servlet-handler />
这时候访问路径就是静态资源的路径
如图:
比如:1.jpg这张图片的访问路径是:localhost:8080/resources/images/1.jpg
app.css的访问路径是:localhost:8080/resources/css/app.css
代码配置
新建WebMvcConfig
继承WebMvcConfigurationSupport
,重写addResourceHandlers
方法,记得将这个类交给Spring管理
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 静态资源映射
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/img/**")
.addResourceLocations("file:F:/upload/roothub/topic/")
.addResourceLocations("classpath:/upload/")
.addResourceLocations("/resources/upload/");
}
}
第一个路径就不说了,可以映射服务器上的任意位置,前提是要有读权限
第二个路径是类路径下的upload
目录
第三个路径是war包或者jar包下的/resources/upload/
目录
可以添加多个路由,但是不能这样添加:
registry.addResourceHandler("/static/img/**")
.addResourceHandler("/static/img2/**")
只能一个个添加:
registry.addResourceHandler("/static/img/**")
registry.addResourceHandler("/static/img2/**")
registry.addResourceHandler("/static/img3/**")