企业多语言网站开源,南宁市住房和城乡建设局,河北婚庆网站建设定制,云主机玩游戏怎么样Web开发静态资源处理
使用SpringBoot的步骤#xff1a;
1、创建一个SpringBoot应用#xff0c;选择我们需要的模块#xff0c;SpringBoot就会默认将我们的需要的模块自动配置好
2、手动在配置文件中配置部分配置项目就可以运行起来了
3、专注编写业务代码#xff0c;不…Web开发静态资源处理
使用SpringBoot的步骤
1、创建一个SpringBoot应用选择我们需要的模块SpringBoot就会默认将我们的需要的模块自动配置好
2、手动在配置文件中配置部分配置项目就可以运行起来了
3、专注编写业务代码不需要考虑以前那样一大堆的配置了。
要熟悉掌握开发之前学习的自动配置的原理一定要搞明白
比如SpringBoot到底帮我们配置了什么我们能不能修改我们能修改哪些配置我们能不能扩展
向容器中自动配置组件 *** Autoconfiguration自动配置类封装配置文件的内容***Properties
没事就找找类看看自动装配原理
第一种静态资源映射规则
首先我们搭建一个普通的SpringBoot项目回顾一下HelloWorld程序
写请求非常简单那我们要引入我们前端资源我们项目中有许多的静态资源比如cssjs等文件这个SpringBoot怎么处理呢
如果我们是一个web应用我们的main下会有一个webapp我们以前都是将所有的页面导在这里面的对吧但是我们现在的pom呢打包方式是为jar的方式那么这种方式SpringBoot能不能来给我们写页面呢当然是可以的但是SpringBoot对于静态资源放置的位置是有规定的
我们先来聊聊这个静态资源映射规则
SpringBoot中SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置类里面
我们可以去看看 WebMvcAutoConfigurationAdapter 中有很多配置方法
有一个方法addResourceHandlers 添加资源处理
Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {if (!this.resourceProperties.isAddMappings()) {// 已禁用默认资源处理logger.debug(Default resource handling disabled);return;}// 缓存控制Duration cachePeriod this.resourceProperties.getCache().getPeriod();CacheControl cacheControl this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();// webjars 配置if (!registry.hasMappingForPattern(/webjars/**)) {customizeResourceHandlerRegistration(registry.addResourceHandler(/webjars/**).addResourceLocations(classpath:/META-INF/resources/webjars/).setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));}// 静态资源配置String staticPathPattern this.mvcProperties.getStaticPathPattern();if (!registry.hasMappingForPattern(staticPathPattern)) {customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern).addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));}
}读一下源代码比如所有的 /webjars/** 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源
webjars
Webjars本质就是以jar包的方式引入我们的静态资源 我们以前要导入一个静态资源文件直接导入即可。
使用SpringBoot需要使用Webjars我们可以去搜索一下
网站https://www.webjars.org
要使用jQuery我们只要要引入jQuery对应版本的pom依赖即可 dependencygroupIdorg.webjars/groupIdartifactIdjquery/artifactIdversion3.5.1/version/dependency导入完毕查看webjars目录结构并访问Jquery.js文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MeVua5FK-1610005795544)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210107152253069.png)]
第二种静态资源映射规则
那我们项目中要是使用自己的静态资源该怎么导入呢我们看下一行代码
我们去找staticPathPattern发现第二种映射规则 /** , 访问当前的项目任意资源它会去找 resourceProperties 这个类我们可以点进去看一下分析
// 进入方法
public String[] getStaticLocations() { return this.staticLocations;}
// 找到对应的值
private String[] staticLocations CLASSPATH_RESOURCE_LOCATIONS;
// 找到路径
private static final String[] CLASSPATH_RESOURCE_LOCATIONS { classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/ };ResourceProperties 可以设置和我们静态资源有关的参数这里面指向了它会去寻找资源的文件夹即上面数组的内容。
所以得出结论以下四个目录存放的静态资源可以被我们识别
classpath:/META-INF/resources/classpath:/resources/classpath:/static/classpath:/public/优先级
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bm1onWjE-1610005795546)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210107154153523.png)]
我们可以在resources根目录下新建对应的文件夹都可以存放我们的静态文件
比如我们访问 http://localhost:8080/1.js , 他就会去这些文件夹中寻找对应的静态资源文件