XML配置

1.mvc:resources

spring3.0.4以后版本提供了mvc:resources

<!--对静态资源文件的访问-->
<mvc:resources mapping="/images/**" location="/resources/images/" />

/images /**映射到 ResourceHttpRequestHandler 进行处理,location指定静态资源的位置,这里是webapp目录下的resources/images文件夹

如图所示:

image

这时候访问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文件夹

如图所示:

image

这时候想访问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 />

这时候访问路径就是静态资源的路径

如图:

image

比如: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/**")

原文链接:https://miansen.wang/2019/03/15/1/