SpringBoot静态资源处理

SpringBoot静态资源处理

在SpringMVC中,web项目添加了Web的项目结构支持,只需要将静态资源放入Web文件夹下面即可访问,而在springboot中并没有Web项目目录的概念。

该去哪放置我们的静态资源?自己自定义怎么定义?

SpringBoot对静态资源处理的文件夹放置在WebMvcAutoConfiguration这个文件中,分析源码走一波。

而在WebMvcAutoConfiguration中配置了整个SpringMVC视图管理规则,我们找到专门用于静态资源管理的方法addResourceHandlers。

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
			super.addResourceHandlers(registry);
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");				//第一种规则,webjars
			addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(),
					this.resourceProperties.getStaticLocations());	//第二种格式

		}
第一种形式:webjars形式

WebJars是将客户端(浏览器)资源(javascript,Css等)打成jar包文件,以对资源进行统一依赖管理。

使用方法:

既然是一种功能插件,那么必定要导入依赖。而webjars好像并不支持自定一方式来使用,而是和其他的一些组件整合在一起使用,打包一些通用资源为主方便访问,以jquery为例来进行尝试一下。

  1. 导入依赖

    <!-- https://mvnrepository.com/artifact/org.webjars/jquery -->
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>jquery</artifactId>
        <version>3.4.1</version>
    </dependency>
    
    
  2. 查看jar包路径下的资源

    1623037173091

  3. 进行访问

    localhost:8080/webjars/jquery/3.4.1/jquery.js

    localhost:8080/webjars重定向到resources/webjars/目录下,然后搜索文件路径名即可。

第二种方式

第一种形式是设置一些公共资源的文件路径,而我们自定义的资源则可以使用第二种方式来进行。

源码分析

addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(),
					this.resourceProperties.getStaticLocations());

this.mvcProperties.getStaticPathPattern():监视路径进行重定向

可以查看一下监视的是哪些路径

private String staticPathPattern = "/**";

/下所有的路径都匹配到

this.resourceProperties.getStaticLocations():重定向之后的位置

可以查看下重定向在哪个文件夹。

public class ResourceProperties {
    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
                "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

一路点下去,发现会去这四个文件夹下进行搜索匹配

使用

  1. 在根目录resources下创建这四个文件夹

1623038016725

  1. 放入我们自定义的资源.js .css等。

  2. 直接访问localhost:8080/myjs.js

有四个路径都可以获取,而其他路径无法获取

指定获取目录

  • 这是一个配置文件,绑定了前缀,说明可以手动的去配置它。

    spring:
    	resources:
        	static-locations: classpath:/coding/,classpath:/lyj/
    

    这样的话我们定制的目录也可以被访问。但是默认的将失效!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值