Web开发探究
SpringBoot的最大特点:自动装配。
使用SpringBoot的步骤:
1、创建一个SpringBoot应用,选择模块、然后等待项目构建完成即可。
2、编写一些需要的配置文件。
3、专注于编写业务代码。其余东西不需要手动配置。
配置相关的类:
xxxAutoConfiguration
:向容器中自动配置组件。xxxProperties
:自动配置类,封装配置文件的内容。
静态资源处理
简介
SpringBoot中,所有的配置文件都在application.yaml或application.properties文件中,并没有web.xml文件。我们需要想办法实现*.css , *.js等静态资源文件生效,我们就需要明白其中的规则。
学习方法:
1、从源码分析,然后得出结论。
2、尝试去测试,验证结论是否正确。
看源码之前,抛出一个问题:SpringBoot默认没有webapp目录,那我们的资源文件应该放在哪里呢?
尝试分析源码并进行探究
在SSM架构中,整个SSM都是基于SpringMVC的。因此我们第一步应该去研究SpringBoot中关于MVC的自动配置。
研究之后可以得到以下结论:
1、所有MVC相关的配置都在WebMvcAutoConfiguration类中,比如视图解析器、静态资源过滤等。
2、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();
//分析源代码,需要掌握看对象的方法调用
// localhost:8080/webjars/jquery.js
// 判断是否存在一个映射路径 /webjars/**
// addResourceHandler 处理逻辑 /webjars/a.js
// addResourceLocations 处理资源的地址 classpath:/META- INF/resources/webjars/a.js
if (!registry.hasMappingForPattern("/webjars/**")) {
customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/")
.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
}
//获取静态资源路径
String staticPathPattern = this.mvcProperties.getStaticPathPattern();
// localhost:8080/
// 如果访问映射的路径是 staticPathPattern = "/**"
// this.resourceProperties.getStaticLocations())
if (!registry.hasMappingForPattern(staticPathPattern)) {
customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)
.addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations()))
.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
}
}
什么是webjars
webjars,简单来说就是使用maven的方式导入前端静态资源,比如jQuery的依赖如下:
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
导入依赖后可以发现项目中导入了如下图所示jar包。
测试访问一下,访问地址:http://localhost:8080/webjars/jquery/3.4.1/jquery.js,发现可以成功访问到jQuery源文件。
第二种静态资源处理规则
SpringBoot默认的静态资源处理映射目录如下代码所示:
private static final String[] CLASSPATH_RESOURCE_LOCATIONS =
{
"classpath:/META-INF/resources/", //在starter中使用,如SWAGGER-UI
"classpath:/resources/",//文件资源
"classpath:/static/", //静态资源
"classpath:/public/"//公共的文件,比如图标...
};
classpath映射的是resources目录,这些静态资源处理映射目录的优先级由高到低跟其索引顺序保持一致。
自定义配置静态资源映射路径
我们可以配置自己的静态资源映射目录,只不过这样配置之后,一切原来的配置都会失效。
spring.resources.static-locations=classpath:/wunian
首页和图标处理
分析源码
欢迎页(首页&#x