精华内容
下载资源
问答
  • 2020-12-09 15:48:44

    springboot默认的静态资源配置如下时

    spring.mvc.static-path-pattern=/**

    默认配置情况下,比如说要访问common.js资源,那么访问路径为http://localhost:8080/js/common.js

    更多相关内容
  • 首先在IDEA中新建springboot项目,指定静态资源位置:在application.yml写入如下配置 项目目录截图如下: 最后controller层: 如果配置了shiro需求加入如下过滤,防止样式被过滤重定向:

    首先在IDEA中新建springboot项目,指定静态资源位置:在application.yml写入如下配置

    项目目录截图如下:

    最后controller层:

    如果配置了shiro需求加入如下过滤,防止样式被过滤重定向:

    展开全文
  • springboot静态资源配置

    2022-05-01 16:38:39
    之前用LayUI写项目前端时发下页面的样式都不显现,想着应该是静态资源配置有问题。下面就简答记录一下。 首先给大家看一下我的resource下的目录层级结构: static目录下放置静态资源文件,templates目录下放的就是...

    之前用LayUI写项目前端时发现页面的样式都不显现,想着应该是静态资源配置有问题。下面就简答记录一下。
    首先给大家看一下我的resource下的目录层级结构:
    在这里插入图片描述
    static目录下放置静态资源文件,templates目录下放的就是静态页面。
    下面开始讲解对应的配置。

    不配置静态资源路径,或放行所有

    静态资源路径配置如下:
    可以像注释的内容一样写,也可以直接不写,两者的效果一样。也就是springboot项目默认的静态资源路径static。
    在这里插入图片描述
    配置静态资源路径放行所有,或者不写的时,当我的页面需要应用静态资源时引用路径怎么写呢?这里以我的页面需要引用layui.js和css为例。html中引用的路径如下图。
    在这里插入图片描述
    这里引用了layui.css和js,因为我的页面使用了thymeleaf模板引擎,所以引用有th:前缀,但是对引用路径是没有影响的。
    从左边的目录层级结构,我们可以看出,
    在使用springboot默认静态资源路径时,static是不要写的,

    自定义配置静态资源路径

    使用这种方法就有坑了,我的同学亲自踩坑,跑来说静态资源出不来。哈哈哈!!!
    开始刨坑…
    如果自己配置静态资源的路径为static时,那么静态资源引用目录不能省略static。
    自定义静态资源路径如下:
    在这里插入图片描述
    正确的静态资源路径配置应该如下:
    在这里插入图片描述
    来个总结:
    如果不配置静态资源路径,那么引用静态资源的路径不写static
    如果自己配置静态资源路径为static,引用静态资源路径的目录要加上/static/

    展开全文
  • 静态资源目录:默认情况下SpringBoot中指定的静态资源是resources/static、public、resources、META-INF/resources都可以,这在底层代码中是可以看到的! 上述这些资源的访问路径: 当前项目根路径 + /静态资源名...

    1、简单功能

    1.1 静态资源访问
    • 静态资源目录:默认情况下SpringBoot中指定的静态资源是resources/static、public、resources、META-INF/resources都可以,这在底层代码中是可以看到的!
      在这里插入图片描述

    • 上述这些资源的访问路径: 当前项目根路径 + /静态资源名。

    • 原理:请求进来先把它当做controller进行处理,controller处理不了再去访问静态资源,如果还找不到就是熟悉的404。


    1.2 增加访问前缀
    • 默认情况下这些是没有前缀的,可以对前缀进行一个配置。
    spring:
      mvc:
        static-path-pattern: /res/**
    
    • 访问路径:当前项目 + static-path-pattern + 静态资源名

    1.3 webjar
    • 这是一个前端的一下包,例如Jquery、BootStrap等等能够以jar的形式导入到项目中使用。
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>jquery</artifactId>
        <version>3.5.1</version>
    </dependency>
    

    在这里插入图片描述

    • 路径:http://localhost:8080/webjars/jquery/3.5.1/资源名称

    另外还有一些首页设置、favicon图标等等都属于静态资源加载的范畴。



    2、静态资源配置原理

    • 之所以可以在不进行任何配置的情况下访问一些静态资源是因为SpringBoot在启动时默认加载了大部分的自动配置类,由这些配置类完成了功能。

    • 主程序启动后成功加载WebMvcAutoConfiguration配置类,完成对SpringMVC框架的接管。

    @Configuration(proxyBeanMethods = false)			//轻量模式
    @ConditionalOnWebApplication(type = Type.SERVLET)	
    @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
    @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
    @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
    @AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,
    		ValidationAutoConfiguration.class })
    public class WebMvcAutoConfiguration {}
    
    • @ConditionalOnWebApplication(type = Type.SERVLET):条件装配只有当这个Web应用是传统的Web应用才进行装配。(WebFlux响应式不会)

    • @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class }):IOC容器中存在Servlet、前端控制器、WebMVC配置才进行装配。

    • @ConditionalOnMissingBean(WebMvcConfigurationSupport.class):如果容器中已经有了就不会再进行装配,通常程序员可以手动定制化组件。

    • @AutoConfigureAfter:只有IOC容器中完成了对指定组件的创建才会进行条件装配。


    2.1 静态内部类WebMvcAutoConfigurationAdapter
    public class WebMvcAutoConfiguration{			//自动配置类
    	....
    	....
    	@Configuration(proxyBeanMethods = false)
    	@Import(EnableWebMvcConfiguration.class)
    	@EnableConfigurationProperties({ WebMvcProperties.class,
    		org.springframework.boot.autoconfigure.web.ResourceProperties.class, WebProperties.class })		//配置绑定
    	@Order(0)
    	public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ServletContextAware {	
    		@Override
    		public void addResourceHandlers(ResourceHandlerRegistry registry) {	
    			if (!this.resourceProperties.isAddMappings()) {
    				logger.debug("Default resource handling disabled");
    				return;
    			}
    			addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
    			addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
    				registration.addResourceLocations(this.resourceProperties.getStaticLocations());
    				if (this.servletContext != null) {
    					ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
    					registration.addResourceLocations(resource);
    				}
    			});
    		}
    	}
    	....
    }
    
    • 静态内部类WebMvcAutoConfigurationAdapter完成对静态资源访问的路径规则。

    • WebMvcProperties.class绑定spring.mvc默认配置参数,因此可以设置增加公共前缀…

    • WebProperties.class绑定spring.resources默认配置参数,内部规定了上述提及的四个默认的静态资源包!

    • addResourceHandlers方法中通过加载配置文件中的参数,对不同路径的资源处理器进行注册!


    2.2 WebMvcProperties配置绑定类
    • 绑定前缀spring.mvc,主要负责资源的请求路径问题。

    • 可以使用spring.mvc.static-path-pattern在配置文件中进行修改访问前缀

    @ConfigurationProperties(prefix = "spring.mvc")		//绑定前缀
    public class WebMvcProperties {
    	private String staticPathPattern = "/**";		//默认静态资源路径
    }
    

    这里可以看到默认资源路径是/**,也就是当前项目根路径所有的静态资源。(1.2节)


    2.3 WebProperties 配置绑定类
    • 绑定前缀spring.web,主要负责找到默认的资源在那些包下!(默认四个1.1节)

    • 可以使用spring.web.resources.static-locations: 进行更改指定的静态资源文件夹

    @ConfigurationProperties("spring.web")
    public class WebProperties {
    	public static class Resources {
    		private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
    				"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
    		
    		private boolean addMappings = true;		//是否允许静态资源的访问
    	}
    }		
    

    2.4 addResourceHandlers方法

    这个方法是静态资源访问的核心,针对访问不同的静态资源进行注册不同的处理器。

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {	
    	if (!this.resourceProperties.isAddMappings()) {			//false值: 禁止访问静态资源
    		logger.debug("Default resource handling disabled");
    		return;
    	}
    	addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
    	addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
    		registration.addResourceLocations(this.resourceProperties.getStaticLocations());
    		if (this.servletContext != null) {
    			ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
    			registration.addResourceLocations(resource);
    		}
    	});
    }
    
    • 如果是webjars包下的内容,会自动的找到/META-INF/resources/webjars/路径。

    • 如果是一些网页、图片之类的会先拿到WebMvcProperties类中的staticPathPattern值,也就是前缀!

    • 然后再去获取WebProperties类中的CLASSPATH_RESOURCE_LOCATIONS路径。最后一起添加注册处理器。


    2.5 addMappings属性

    这句话其实跟WebProperties类中的addMappings属性有关,并且直接决定静态资源的访问权限问题。

    if (!this.resourceProperties.isAddMappings()) {			//false值: 禁止访问所有的静态资源
    	logger.debug("Default resource handling disabled");
    	return;
    }
    
    • addMappings = true:这是默认的情况,即允许静态资源的访问。

    • addMappings = false:可以使用spring.web.resources.add-mappings: false进行配置文件的设置,之后所有的静态资源访问都会失败!



    展开全文
  • 文章目录SpringBoot静态资源配置问题SpringBoot静态资源配置的两种方式1、yml配置2、代码配置 SpringBoot静态资源配置问题 SpringBoot前后端不分离,不配置静态资源,会导致无法访问到静态资源。 SpringBoot静态资源...
  • 静态资源的默认配置也是在自动配置类中,我们知道SpringBoot启动会默认加载xxxAutoConfiguration自动配置类,而关于静态资源配置的在WebMvcAutoConfiguration类中。打开源码查看: 我们需要重点关注该类中的内部...
  • 今天小编就为大家分享一篇关于SpringBoot静态资源目录访问,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 静态资源">静态资源 <p>SpringBoot 遵循 约定大于配置 这一守则,它为我们提供了默认的 静态资源 文件夹,可以直接访问 SpringB
  • 配置static、public、resource文件夹,spring是无法找到静态资源的,需要配置静态资源映射类 复制以下代码,修改成自己对应的静态资源即可 @Slf4j @Configuration public class WebMvcConfig extends ...
  • 直接上代码: 设置一个配置类 package com.myself.computerThinking.config; import org.springframework.context.annotation.Configuration;... } } 这样就可以识别放在recourses目录中static的静态资源
  • SpringBoot静态资源的映射规则 1所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源; 1.1引入依赖 2"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射 3欢迎页; 静态资源...
  • 一个配置类如果只有一个有参构造器,参数都在容器里。
  • 主要介绍了SpringBoot静态资源路径配置及主页显示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Springboot 默认提供的静态资源目录位置需位于 classpath 下,目录名为 classpath:/static classpath:/public classpath:/resources classpath:META-INF/reqources 2. 自定义路径 # 静态文件请求匹配方式 ...
  • 我们都知道,SpringBoot启动会默认加载很多xxxAutoConfiguration类(自动配置类) 其中SpringMVC的大都数功能都集中在WebMvcAutoConfiguration类中,根据条件ConditionalOnxxx注册类对象;WebMvcAutoConfiguration满足...
  • SpringBoot静态资源访问配置

    千次阅读 2022-02-07 17:48:00
    一、默认静态资源映射规则 Spring Boot 默认将 / 的所有访问映射到以下目录: classpath:/static classpath:/public classpath:/resources classpath:/META-INF/resources 接下来,在 main/resources下新建 static...
  • springboot中默认提供了几个可以放置一些静态资源文件的位置,放在这几个位置中的静态资源文件是不会被SpringMVC拦截的。 一、SpringBoot中默认的这几个位置如下: 二、在SpringBoot中,为什么把静态资源放在这几个...
  • 使用SpringBoot搭建web项目时静态资源的访问必然是一个...一、静态资源配置 SpringBoot默认从以下几个目录访问静态资源: /META-INF/resources/ /resources/ /static /public/ 以上4个默认目录中如果存在同一个静态...
  • 首先用的templates 放置html 然后application.yml 加入 spring: resources: static-locations: classpath:/static/
  • Springboot静态资源配置原理 在springboot定义中,我们只要把想访问的静态资源放在类路径下:called /static (or /public or /resources or /META-INF/resources就可以根据 当前项目根路径/ + 静态资源名进行访问,...
  • 主要介绍了springboot项目访问静态资源配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • springboot默认的静态资源配置网上有很多资料,下面记一下springboot虚拟路径的配置方法。 需求说明:以/image/xxx.jpg访问位于D:/upload/中的图片 @Configuration public class WebConfigurer implements ...
  • 配置文件配置映射 spring: mvc: #图片访问地址路径 static-path-pattern: /file/** throw-exception-if-no-handler-found: true resources: #静态资源映射地址 static-locations: classpath:/METAINF/resources/,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,832
精华内容 14,332
关键字:

springboot静态资源配置

spring 订阅