SpringBoot在项目中访问静态资源步骤分析

 更新时间:2023年01月28日 10:11:30   作者:xl649138628  
今天在玩SpringBoot的demo的时候,放了张图片在resources目录下,启动区访问的时候,突然好奇是识别哪些文件夹来展示静态资源的, 为什么有时候放的文件夹不能显示,有的却可以

在springboot项目中如果要在不集成templates的情况下访问静态资源需要做以下配置

1.在项目的application.yml文件中做如下配置

spring:
  profiles:
    active: dev
  mvc:
    view:
      prefix: /
      suffix: .html

重点在

配置后生成为WebMvcProperties 配置类。该配置类中有一个内部类View

@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {

View类可以配置视图的前缀和后缀

	public static class View {
		/**
		 * Spring MVC view prefix.  前缀
		 */
		private String prefix;
		/**
		 * Spring MVC view suffix.  后缀
		 */
		private String suffix;

2.在项目的resource路径下新建文件夹

在ResourceHttpRequestHandler类的getResource方法中调用了getLocations()方法。

protected Resource getResource(HttpServletRequest request) throws IOException {
		String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
		if (path == null) {
			throw new IllegalStateException("Required request attribute '" +
					HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE + "' is not set");
		}
		path = processPath(path);
		if (!StringUtils.hasText(path) || isInvalidPath(path)) {
			if (logger.isTraceEnabled()) {
				logger.trace("Ignoring invalid resource path [" + path + "]");
			}
			return null;
		}
		if (isInvalidEncodedPath(path)) {
			if (logger.isTraceEnabled()) {
				logger.trace("Ignoring invalid resource path with escape sequences [" + path + "]");
			}
			return null;
		}
		ResourceResolverChain resolveChain = new DefaultResourceResolverChain(getResourceResolvers());
        //重点关注此处
		Resource resource = resolveChain.resolveResource(request, path, getLocations());
		if (resource == null || getResourceTransformers().isEmpty()) {
			return resource;
		}
		ResourceTransformerChain transformChain =
				new DefaultResourceTransformerChain(resolveChain, getResourceTransformers());
		resource = transformChain.transform(request, resource);
		return resource;
	}

getLocations()方法返回的locations来自与springboot项目,其中时配置类ResourceProperties赋值。赋值的数据为

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

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"

四个路径

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties {
	private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
			"classpath:/META-INF/resources/", "classpath:/resources/",
			"classpath:/static/", "classpath:/public/" };
	/**
	 * Locations of static resources. Defaults to classpath:[/META-INF/resources/,
	 * /resources/, /static/, /public/].
	 */
	private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;

所以要访问静态资源需要配置到这四个路径下,如果所示

3.API端按如下编码

@Controller
public class PageApi {
    @GetMapping({"/", "/index"})
    public String toPage(String id){
        return "index";
    }
}

总结:

按照上面的配置后我们就可以访问到静态资源。

到此这篇关于SpringBoot在项目中访问静态资源步骤分析的文章就介绍到这了,更多相关SpringBoot访问静态资源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 面试JAVA时,问到spring该怎么回答

    面试JAVA时,问到spring该怎么回答

    这篇文章主要介绍了Spring面试资料,学Java的小伙伴都知道Spring是面试的必问环节,看完了一天就可掌握数据结构和算法的面试题,快来看看吧
    2021-08-08
  • SpringBoot日志文件的实现示例

    SpringBoot日志文件的实现示例

    日志是程序中的重要组成部分,使用日志可以快速的发现和定位问题,本文主要介绍了SpringBoot日志文件的实现示例,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Spring Boot整合mybatis并自动生成mapper和实体实例解析

    Spring Boot整合mybatis并自动生成mapper和实体实例解析

    本文是小编给大家总结的关于Spring Boot整合mybatis并自动生成mapper和实体的内容,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • Rocketmq事务消息之半消息详解

    Rocketmq事务消息之半消息详解

    这篇文章主要介绍了Rocketmq事务消息之半消息详解,RocketMQ的事务消息支持在业务逻辑与发送消息之间提供事务保证,RocketMQ通过两阶段的方式提供事务消息的支持,需要的朋友可以参考下
    2023-09-09
  • Java 数组交集的实现代码

    Java 数组交集的实现代码

    这篇文章主要介绍了Java 数组交集的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java连接Mysql数据库详细代码实例

    Java连接Mysql数据库详细代码实例

    这篇文章主要介绍了Java连接Mysql数据库详细代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 命令提示符编译java的方法(必看篇)

    命令提示符编译java的方法(必看篇)

    下面小编就为大家带来一篇命令提示符编译java的方法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • springMVC配置环境实现文件上传和下载

    springMVC配置环境实现文件上传和下载

    这篇文章主要为大家详细介绍了springMVC配置环境实现文件上传和下载的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 关于IDEA配置Hibernate中遇到的问题解决

    关于IDEA配置Hibernate中遇到的问题解决

    这篇文章主要给大家介绍了关于IDEA配置Hibernate中遇到的问题,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Spring Cloud Alibaba微服务组件Sentinel实现熔断限流

    Spring Cloud Alibaba微服务组件Sentinel实现熔断限流

    这篇文章主要为大家介绍了Spring Cloud Alibaba微服务组件Sentinel实现熔断限流过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06

最新评论