如何通过源码探究静态资源的映射规则和特点,如何通过源码探究静态资源的映射规则和特点
本文介绍了通过源代码探索静态资源映射规则的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
如何解决写爬虫IP受阻的问题?立即使用。
Spring Boot——通过源代码探索静态资源的映射规则
当我们开发一个Spring Boot项目时,我们必须导入许多静态资源,如css、js等文件。
如果我们是一个web应用程序,在我们的main下会有一个web应用程序。我们曾经引导所有的页面,对吗?但是我们现在的pom呢?封装方法是针对jar的,那么SpringBoot可以用这种方式为我们写页面吗?当然可以,但是SpringBoot对静态资源的位置有规定!
静态资源映射规则
第一个映射规则
在SpringBoot中,SpringMVC的web配置在配置类WebMvcAutoConfiguration中;
WebMvcAutoConfigurationAdapter中有很多配置方法;有一种添加资源的方法:addResourceHandlers(),其源代码如下。
@覆盖
受保护的void addResourceHandlers(ResourceHandlerRegistry注册表){
super.addResourceHandlers(注册表);
如果(!this . resource properties . isaddmappings()){
logger.debug(“默认资源处理已禁用”);
返回;
}
servlet context servlet context=getservlet context();
addResourceHandler(注册表,/webjars/** , class path:/META-INF/resources/web jars/);
addResourceHandler(registry,this . MVC properties . getstaticpathpattern(),(registration) - {
registration . addresourcelocations(this . resource properties . getstaticlocations());
if (servletContext!=null) {
registration . addresourcelocations(新ServletContextResource(SERVLET context,SERVLET _ LOCATION));
}
});
}WebJars就是做客户端(浏览器)资源(JavaScript,Css等。)转换成jar包文件,以便统一管理资源。WebJars的jar包部署在Maven中央仓库上。
我们可以在webjars官网上找到自己需要的资源,在自己的项目中添加maven依赖项,就可以直接使用这些资源了。
例如,我们想要导入jquery资源。
属国
groupIdorg.webjars/groupId
artifactIdjquery/artifactId
版本3 . 6 . 0/版本/依赖性导入后我们可以通过资源路径找到资源的存放位置并访问,我们在webjars网站导入的资源都符合下图的结构
通过路径访问,成功访问静态资源!
第二种映射规则
让我们继续分析源代码
GetStaticPathpattern():获取静态路径模式,点进去看看源代码。
公共字符串getStaticPathPattern() {
返回this . static path pattern;
}再看看staticPathPattern的源代码。
/* *即当前目录下的所有静态资源都可以被识别,但是当前目录具体指的是什么呢?我们可以通过点击resourceProperties的源代码来查看。源代码如下:
源代码明确给了我们四个路径的静态资源,所以只要是这四个目录下的静态资源,都可以直接获取。
我们来测试一下,先完成上面的目录,然后在资源目录放一个js资源。
开始springboot应用程序测试:成功访问静态资源!
我们可以识别存储在以下四个目录中的静态资源:
class path:/meta-INF/resources/ class path:/resources/ class path:/static/ class path:/public/注意:
第一个目录的访问路径是localhost:8080/web jars/resource目录结构,后三个访问路径是localhost:8080/resource name。
第二个映射规则的优先级是:resourcesstatic(默认)public
自定义静态资源路径
我们可以通过配置文件指定需要放静态资源文件的文件夹,并在application.properties中进行配置;
spring . resources . static-locations=class path:/coding/,class path:/cheng/但是我们从下面的源代码中可以看到,如果自定义资源路径,上面默认的四个路径都是无效的,所以最好不要自定义路径,直接用springboot帮我们自动配置即可。
如果(!this . resource properties . isaddmappings()){
logger.debug(“默认资源处理已禁用”);
返回;
}相关免费学习推荐:java基础教程以上是如何通过源代码探索静态资源映射规则的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。