SpringBoot静态资源的访问方法详细介绍

目录
  • 一. 静态资源
  • 二. 静态资源访问目标
  • 三. 静态资源访问前缀
    • 1. 默认访问路径为 /
    • 2. 配置访问前缀
    • 3. 配置静态资源默认访问位置
  • 四. 欢迎页及网页图标设置
    • 1. 欢迎页的设置
    • 2. 网页图标的设置
  • 分析源码

一. 静态资源

在web场景中的静态图片、html网页等

二. 静态资源访问目标

在SpringBoot中,静态资源访问目标有 resources文件下的 public、resources、static 以及 META-INF 文件夹下的 recources

如下图所示:

(注意文件夹要自己创建,不要写错名字!!!名字是固定的,就这几个)

三. 静态资源访问前缀

1. 默认访问路径为 /

放于上述文件夹下的静态资源可以直接在根目录下访问

如下:以访问qqVeiw.jpg为例

2. 配置访问前缀

为什么需要:在Request访问以及静态资源访问同名时,SpringBoot会访问优先访问Request请求

因此,需要给静态资配置访问前缀,配置方法非常简单,只需在yaml配置文件中加入如下:

spring:
  mvc:
    static-path-pattern: /res/** #静态资源访问前缀为res

如下图:

3. 配置静态资源默认访问位置

我们可以设置一个或多个自定义文件夹为静态资源默认访问位置(数组形式),只需在yaml配置文件中加入如下:

spring:
  resources:
    static-locations: [classpath:/haha/, classpath/static/] #在类路径的haha文件夹下的静态资源才能被访问到

四. 欢迎页及网页图标设置

1. 欢迎页的设置

只需将 index.html 网页加入配置的static-locations中,再去访问根目录,就可以看到SpringBoot为我们配置好的欢迎页

(1)yaml文件配置

(2)index.html加入静态资源访问目标

spring:
  resources:
    static-locations: [classpath:/haha/] #在类路径的haha文件夹下的静态资源才能被访问到

2. 网页图标的设置

将命名为favicon.ico的图标加入静态资源访问目录

注意: 若设置了访问前缀,则上述两功能不生效使用设置网页图标功能,要开启禁用浏览器缓存功能

分析源码

WelcomePageHandlerMapping类

1. 实现 欢迎页

		public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,
				FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {
			WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(
					new TemplateAvailabilityProviders(applicationContext), applicationContext, getWelcomePage(),
					this.mvcProperties.getStaticPathPattern());
			welcomePageHandlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
			welcomePageHandlerMapping.setCorsConfigurations(getCorsConfigurations());
			return welcomePageHandlerMapping;
		}

2.实现静态资源访问

		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();
			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));
			}
		}

继续往下走——

WelcomePageHandlerMapping类

实现欢迎页

	WelcomePageHandlerMapping(TemplateAvailabilityProviders templateAvailabilityProviders,
			ApplicationContext applicationContext, Optional<Resource> welcomePage, String staticPathPattern) {
			// 从这里我们也可以看出来为什么欢迎页不能加静态资源访问前缀
		if (welcomePage.isPresent() && "/**".equals(staticPathPattern)) {
			logger.info("Adding welcome page: " + welcomePage.get());
			setRootViewName("forward:index.html");
		}
		else if (welcomeTemplateExists(templateAvailabilityProviders, applicationContext)) {
			logger.info("Adding welcome page template: index");
			setRootViewName("index");
		}
	}

到此这篇关于SpringBoot静态资源的访问方法详细介绍的文章就介绍到这了,更多相关SpringBoot静态资源的访问内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot访问静态资源遇到的坑及解决

    目录 访问静态资源遇到的坑及解决 直接访问静态资源的问题 SpringBoot 默认静态资源访问配置 引入shiro 或 security后的拦截过滤 访问静态资源遇到的坑及解决 开始是以这种结构进行的,结果页面上一篇红,访问的页面是这样的 最终找出来问题,虽然每次调整路径都不对,最终查看多种方法可以看到了: 增加: package com.example.demo.config; import org.springframework.stereotype.Component; import o

  • SpringBoot访问静态资源的配置及顺序说明

    目录 访问静态资源的配置及顺序 1. SpringBoot的默认配置 2. 测试 3.配置 静态资源的配置心得 举例 访问静态资源的配置及顺序 今天在玩SpringBoot的demo的时候,放了张图片在resources目录下,启动区访问的时候,突然好奇是识别哪些文件夹来展示静态资源的, 为什么有时候放的文件夹不能显示,有的却可以. 1. SpringBoot的默认配置 首先我们打开WebMvcAutoConfiguration类, 因为是静态资源的位置, 所以搜索location,找到这一行代

  • Java实现扫雷游戏详细代码讲解

    目录 效果展示 难度选择展示 游戏界面展示 代码展示 主类:GameWin类 底层地图MapBottom类 顶层地图MapTop类 底层数字BottomNum类 初始化地雷BottomRay类 工具GameUtil类 难度选择GameSelect类 项目结构 程序界面布局 总结 大家好!上一期我们使用GUI技术写了一个简单的扫雷小游戏,今天对这个Java应用程序更新迭代,增加了难度选择等功能,修复了已知的几个问题.成为初学者学习的好项目!Java实现扫雷小游戏[完整版] 效果展示 难度选择展示

  • SpringBoot中的静态资源访问的实现

    一.说在前面的话 我们之间介绍过SpringBoot自动配置的原理,基本上是如下: xxxxAutoConfiguration:帮我们给容器中自动配置组件: xxxxProperties:配置类来封装配置文件的内容: 二.静态资源映射规则 1.对哪些目录映射? classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ classpath:/public/ /:当前项目的根路径 2.什么意思? 就我们在上面五个目

  • Springboot静态资源访问实现代码解析

    springboot静态资源加载默认是从/static(或/public或/resources或/META-INF/resources) 目录下加载静态资源. 加载的优选级别:/META-INF/resources>/resources>/public>/static 静态资源的加载源码分析(WebMvcAutoConfiguration类) 首先从WebMvcAutoConfiguration.class自动配置类部分代码来看: //添加静态资源规则 public void addRe

  • 详解SpringBoot之访问静态资源(webapp...)

    springboot访问静态资源,默认有两个默认目录, 一个是  classpath/static 目录 (src/mian/resource) 一个是 ServletContext 根目录下( src/main/webapp ) 这在里可能有小伙伴对 classpath 不怎么了解,这里简要的介绍下,classpath 即WEB-INF下面的classes目录 ,在springboot项目中可能就是,src/main/resource 目录. 1,classpath 目录下-访问默认文件夹名为

  • SpringBoot如何访问html和js等静态资源配置

    目录 SpringBoot访问html和js等静态资源配置 1:访问html 2:访问js SpringBoot访问不到js,css等静态资源问题 SpringBoot访问html和js等静态资源配置 把静态资源放到resources/static下,这是springboot静态资源默认访问路径. 在浏览器直接ip:端口/静态资源 就可以了 下面的废话是好久之前写的,不用看了... SpringBoo推荐使用thymeleaf模板作用前端页面展示,整体结构如下所示: 这里我并没有引入thymel

  • SpringBoot设置静态资源访问控制和封装集成方案

    背景 最近在着手公司框架优化及项目实际应用,原先方案是springboot+html前后端分离单独部署,后端人员兼职前端开发,后续产品线业务进行优化,面向企业使用部分由移动网站人员负责设计开发,内部配置后台管理还是由后端负责,随着框架不停迭代与使用的项目越来越多,项目升级框架变得十分麻烦,后端部分可以通过maven私服进行版本迭代,后台管理页面升级则需要进行各个项目拷贝,所以决定对框架进行整合,将后台管理页面与框架后端代码进行整合发布. 结构设计 框架打包后台管理相关标准资源及页面(框架publ

  • Springboot静态资源的访问方法介绍

    目录 1.官方文档 2.基本介绍 3.快速入门 4.静态资源访问注意事项和细节 1.官方文档 在线文档 2.基本介绍 只要静态资源放在类路径下: /static . /public . /resources . /META-INF/resources 可以被直接访问- 对应文件 WebProperties.java 直接放到resources目录下是访问不到的,这里的 /resources是指在resource目录的创建resources目录 private static final Strin

  • SpringBoot静态资源的访问方法详细介绍

    目录 一. 静态资源 二. 静态资源访问目标 三. 静态资源访问前缀 1. 默认访问路径为 / 2. 配置访问前缀 3. 配置静态资源默认访问位置 四. 欢迎页及网页图标设置 1. 欢迎页的设置 2. 网页图标的设置 分析源码 一. 静态资源 在web场景中的静态图片.html网页等 二. 静态资源访问目标 在SpringBoot中,静态资源访问目标有 resources文件下的 public.resources.static 以及 META-INF 文件夹下的 recources 如下图所示:

  • SpringBoot静态资源目录访问

    静态资源配置 创建一个StaticConfig 继承 WebMvcConfigurerAdapter package com.huifer.blog.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframewo

  • SpringBoot中配置Web静态资源路径的方法

    介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, JDK1.8, SpringBoot 2.1.3 正文: 准备工作:通过Idea创建一个SpringBoot-web项目,此过程不做赘述,创建完成后项目结构如下图: 1- 创建一个controller代码如下: package com.example.webpractice.controller; i

  • SpringBoot静态资源css,js,img配置方案

    一.概述 springboot 默认静态资源访问的路径为:/static 或 /public 或 /resources 或 /META-INF/resources 这样的地址都必须定义在src/main/resources目录文件中,这样可以达到在项目启动时候可以自动加载为项目静态地址目录到classpath下 ,静态访问地址其实是使用 ResourceHttpRequestHandler 核心处理器加载到WebMvcConfigurerAdapter进行对addResourceHandlers

  • SpringBoot 静态资源导入及首页设置问题

    本节了解一下 SpringBoot 中 Web 开发的静态资源导入和首页设置,对应 SpringBoot-03-Web 项目. 1. 静态资源导入 在 Web 开发过程中,我们需要接触许多的静态资源,如 CSS.JS.图片等:在之前的开发过程中,这些资源都放在 Web 的目录下,用到的时候按照对应路径访问即可.不过在 SpringBoot 项目中,没有了 Web 的目录,那这些静态资源该放到哪里去,又要如何访问呢? 由于是 Web 应用中的配置,所以查看对应的自动配置类 WebMvcAutoCo

  • nginx静态资源的服务器配置方法

    目录 一.nginx 作用 二.nginx 静态HTTP服务器配置 三.nginx HTTP服务器(动静分离--nginx+tomcat实现动静分离) 四. 反向代理----使用proxy_pass nginx 配置springboot+vue 前后端分离项目 1.思路:nginx 结合自身特性,本身一个静态资源的服务器, (1) 通过nginx实现域名的方式访问网站,以及把对数据的请求通过nginx反向代理转发给后端容器(后端服务),避免了接口暴露的不安全 2.通过dockerCompose+

  • 利用nginx搭建静态资源服务器的方法步骤

    以windows为例,linux其实一样: 搭建静态资源服务器 我电脑上的work文件夹下面有很多图片,我想通过nginx搭建静态资源服务器,通过在地址栏输入ip+port的方式完成目录的映射 找到nginx安装目录,打开/conf/nginx.conf配置文件,添加一个虚拟主机 添加监听端口.访问域名 重点是添加location, 映射-URL:/work/; 注意:如果当前server模块中已有一个location且URL为"/",那么新建的location的url应为匹配路径,不

  • Springboot中项目的属性配置的详细介绍

    目录 正文 1. 少量配置信息的情形 2. 多个配置信息的情形 3. 指定项目配置文件 4. 总结 正文 我们知道,在项目中,很多时候需要用到一些配置的信息,这些信息可能在测试环境和生产环境下会有不同的配置,后面根据实际业务情况有可能还会做修改,针对这种情况,我们不能将这些配置在代码中写死,最好就是写到配置文件中.比如可以把这些信息写到 application.yml 文件中. 1. 少量配置信息的情形 举个例子,在微服务架构中,最常见的就是某个服务需要调用其他服务来获取其提供的相关信息,那么在

随机推荐