SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标

SpringBoot对静态资源的映射规则(下)

按两次shift呼出全局搜索,查看webMvcAutoConfiguration 查看webMvc自动配置类

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第1张图片

一.欢迎界面配置

1.1查看源码信息

搜索并查看WelcomePageHandlerMapping等方法 即添加欢迎界面资源映射方法,源码如下:

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第2张图片

1.2 index.html文件可存放位置

其中方框中的getStaticLocation其实就是上篇文章中静态文件可存放的四个路径:

如图所示,getStaticLocation方法返回的就是以下四个路径:

"classpath:/META-INF/resources/", 
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"

以上就是index.html应当存放的位置

上篇博客中也提到:java文件下是类路径,resources文件也是类路径。所以要使用第二种的话需要在resources下再建一个resources文件夹。

1.3 具体欢迎界面使用方法

具体文件目录如下:

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第3张图片

1.4 运行项目查看欢迎界面结果

运行springboot应用,默认就进入此index.html界面了:

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第4张图片

二.网页小图标配置

2.1 源码FaviconConfiguration类

		@Configuration
		@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
		public static class FaviconConfiguration implements ResourceLoaderAware {

			private final ResourceProperties resourceProperties;

			private ResourceLoader resourceLoader;

			public FaviconConfiguration(ResourceProperties resourceProperties) {
				this.resourceProperties = resourceProperties;
			}

			@Override
			public void setResourceLoader(ResourceLoader resourceLoader) {
				this.resourceLoader = resourceLoader;
			}

			@Bean
			public SimpleUrlHandlerMapping faviconHandlerMapping() {
				SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
				mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
				mapping.setUrlMap(Collections.singletonMap("**/favicon.ico", faviconRequestHandler()));
				return mapping;
			}

			@Bean
			public ResourceHttpRequestHandler faviconRequestHandler() {
				ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();
				requestHandler.setLocations(resolveFaviconLocations());
				return requestHandler;
			}

			private List<Resource> resolveFaviconLocations() {
				String[] staticLocations = getResourceLocations(this.resourceProperties.getStaticLocations());
				List<Resource> locations = new ArrayList<>(staticLocations.length + 1);
				Arrays.stream(staticLocations).map(this.resourceLoader::getResource).forEach(locations::add);
				locations.add(new ClassPathResource("/"));
				return Collections.unmodifiableList(locations);
			}

		}

2.2 存放**/favicon.ico位置

resolveFaviconLocations方法下又是getStaticLocations()方法。

因此就与欢迎界面类似了。

"classpath:/META-INF/resources/", 
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"

该存放路径依旧是上边的四个静态文件路径,springboot应用会在这四个路径下找favicon.ico作为网页图标

2.3 具体使用网页图标

和上篇文章类似,使用第三种路径"classpath:/static/",

使用favicon.ico工具网站生成图片:https://tool.lu/favicon/

文件目录如下:

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第5张图片

2.4运行项目查看网页图标

在application.properties配置文件中添加设置 停用默认图标

spring.mvc.favicon.enabled=false

谷歌浏览器仍然显示旧的图标是因为浏览器缓存的原因

使用Ctrl+Shift+Delete快捷键打开浏览器缓存设置如下:

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第6张图片

SpringBoot对静态资源的映射规则(下) 自定义欢迎界面与网页图标_第7张图片

你可能感兴趣的:(#,SpringBoot)