开发者学堂课程【SpringBoot快速掌握 - 核心技术:Webjars&静态资源映射规则】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/612/detail/9241
Webjars&静态资源映射规则
一、SpringBoot对静态资源的映射规则
1.创建新的工程:
选中web模块,点击下一步
点击下一步完成创建
2.检查pow文件
org.springframework.boot
spring-boot-starter-web
记得点击自动导包,进行导入
3.创建HelloController文件
功能为添加一个请求,返回一个字符串
package com.atguigu. springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public c1ass HelloController {
//记得添加对应注解
@ResponseBody
@RequestNapping("/hel1o"){
public String hello
(
){
return "He1lo Wor1d";
}
}
运行,并且在浏览器中进行测试,
输入链接localhost:8080/hello进行访问
返回hello world说明测试成功
这就是wed模块快速开发
查看spring MVC自带的添加资源映射的配置代码(源代码)
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
if (!this .resourceProperties . isAddMappings()) {
logger。debug( "Default resource handling disabled");
return;
Integer cachePeriod = this . resourceProperties
.
getCachePeriod();
if (Iregistry . hasMappingForPattern( ( pathPattern: "/webjars/**)) {
cust omi zeResourceHandlerRegi strat ion(
registry
.
addResourceHandl er( ..pathPatterns”/webjars/**")
,
addResourceLocations(
"classpath:/META-INF/resources/webjars/")
. setCa chePeriod(cachePeriod));
}
String staticPathPattern = this . mvcProperties. getStaticPathPattern();
// registry添加资源映射
if ( registry .hasMappingForPattern(staticPathPattern) {
cust omi zeResourceHandlerRegistrat ion(
registry . addResourceHandler(staticPathPattern)
,
addResourceLocat ions(
this .resourceProperties . getStaticLocations())
. setCachePeriod(cachePeriod));
5.Webjars主要规则设置:@ConfigurationProperties(prefix="spring.resources",ignoreUnknownFields=false)public class ResourceProperties implements ResourceLoaderAware {
//可以设置和静态资源有关的参数,缓存时间等
addResourceHandlers类中
6.所有/webjars/**都去 classpath:/META- INFIresources/webjars/找资源;
webjars :以jar包的方式引入静态资源﹔
在下列网站中参考webjars用法,可以在其中直接下载maven的包,pow文件代码直接引入
http;//www.webjars.org
/
访问webjars中内容
localhost:8080/webjars/jquery/3.3.1/jquery.js
在访问的时候只需要写webjars下面资源的名称即可
org.webjars
jqueryc/artifactId>
3.3.1
设置完成后重启idea查看效果:访问localhost:8080/webjars/jquery/3.3.1/jquery.js
成功访问到了webjars中的js代码部分
@ConfigurationProperties(prefix =” spring.resources",ignoreUnknownFields = false)
public class ResourceProperties implements Re sourceloaderAware
{//可以设置和静态资源有关的参数,比如缓存时间等
7.第二种映射规则"/**”访问当前项目的任何资源,(静态资源的文件夹)
会在这几个文件夹中查找
“classpath:/HETA -INF/resources/”,
"classpath:/resources/",
"classpath:/static/"
,
"classpath:/public/"
“/”:当前项目的根路径
都会在这个文件夹查找内容
这几个路径都可以访问静态资源
把实验包asserts导入到static中
运行后进行访问
"/":当前项目的根路径
localhost:8080/abc === 去静态资源文件夹里面找abc
localhost:8080/asserts/js/Chart.min.js
访问这个路径
8.欢迎页;静态资源文件夹下的所有index.html页面;被"/**"映射;8.欢迎页;静态资源文件夹下的所有index.html页面;被"/**"映射;
//配置欢迎页的映射
@Bean
public welcomePageHandlerMapping welcomePageHandlerMapping(
ResourceProperties resourceProperties){
return new WelcomePageHandlerMapping (resourceProperties.getwelcomePage(),
this.mvcProperties.getStaticPathPattern());
访问localhost:8080/找index页面
默认访问8080会报错404
在public包中创建一个HTML文件
<!DOCTYPE htm1>
<htm1 lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>
首页</h1>
</body>
</htm1>
然后继续访问localhost:8080就会显示HTML文件中内容了,叫做默认首页映射
9.所有的**/favicon.ico都是在静态资源文件下找
配置自己最喜欢的图标
@Configuration
@ConditionalOnProperty(value = "spring.mvc.favicon.enabled",matchIfNissing = tru
e
public static class Faviconconfiguration {
private final ResourceProperties;
public FaviconConfiguration(ResourceProperties resourceProperties){
this.resourceProperties = resourceProperties;
}
@Bean
public simpleUrlHandlerMapping faviconHandlerMapping(){
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setorder(ordered.HIGHEST_PRECEDENCE +1);
//所有**/favicon.ico
mapping.setUrlMap(collections.singletonMap("** /favicon.ico",faviconRequestHandler()));
return mapping;
}
@Bean
public ResourceHttpRequestHandler faviconRequestHandler(){
ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();
requestHandler.setLocations(this.resourceProperties.getFaviconLocations());
return requestHandler;
}
}
复制实验中的图标到resources中,启动运行
在浏览器访问localhost:8080就会发现图标变resources中的图标了
这些静态映射文件夹也是可以配置的
在application.properties文件中写入
spring.resources.static-1ocations=c1asspath:/*****/*
配置静态映射文件夹
如果要多个配置,用逗号进行分割