低调人的gravatar头像
低调人 2019-07-03 14:22:42
Spring Boot学习之Spring boot中访问静态资源
@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties implements ResourceLoaderAware {
    //可以设置和静态资源有关的参数,缓存时间等
    WebMvcAuotConfiguration:
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (!this.resourceProperties.isAddMappings()) {
            logger.debug("Default resource handling disabled");
            return;
        }
        Integer cachePeriod = this.resourceProperties.getCachePeriod();
        if (!registry.hasMappingForPattern("/webjars/**")) {
            customizeResourceHandlerRegistration(
                registry.addResourceHandler("/webjars/**")
                .addResourceLocations(
                    "classpath:/META‐INF/resources/webjars/")
                .setCachePeriod(cachePeriod));
        }
        String staticPathPattern = this.mvcProperties.getStaticPathPattern();
        //静态资源文件夹映射  
        if (!registry.hasMappingForPattern(staticPathPattern)) {
            customizeResourceHandlerRegistration(
                registry.addResourceHandler(staticPathPattern)
                .addResourceLocations(
                    this.resourceProperties.getStaticLocations())
                .setCachePeriod(cachePeriod));
        }
    }
    //配置欢迎页映射
    @Bean
    public WelcomePageHandlerMapping welcomePageHandlerMapping(
        ResourceProperties resourceProperties) {
        return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),
            this.mvcProperties.getStaticPathPattern());
    }

SpringBoot对静态资源的映射规则

//配置喜欢的图标

@Configuration        

@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)        

public static class FaviconConfiguration {

 

1)、所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;

webjars:以jar包的方式引入静态资源;

http://www.webjars.org/

localhost:8080/webjars/jquery/3.3.1/jquery.js

public static class FaviconConfiguration {
    private final ResourceProperties 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;
    }
}

访问http://localhost:8080/webjars/jquery/3.3.1/jquery.js

<!‐‐引入jquery‐webjar‐‐>在访问的时候只需要写webjars下面资源的名称即可
<dependency>        
    <groupId>org.webjars</groupId>            
    <artifactId>jquery</artifactId>            
    <version>3.3.1</version>            
</dependency>

结果

Spring Boot学习之Spring boot中访问静态资源

 

2)、"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射

localhost:8080/abc === 去静态资源文件夹里面找abc

3)、欢迎页; 静态资源文件夹下的所有index.html页面;被"/**"映射;

localhost:8080/ 找index页面

4)、所有的 **/favicon.ico 都是在静态资源文件下找;

5)、自定义配置文件访问规则

@Configuration配置去配置我们需要的一些属性

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration

public class WebMvcConfig extends WebMvcConfigurerAdapter {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Override

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");

        registry.addResourceHandler("/upload/**").addResourceLocations("classpath:/upload/");

        logger.info("配置静态文件!");

    }

}

 

Spring Boot默认提供静态资源目录位置需置于classpath下, 文件名需符合下面规则:

  • /static
  • /public
  • /resources
  • /META-INF/resources

灵光一现想到web项目的默认页面是直接放在webcontent下面, 虽然需要在web.xml配置, 虽然Spring Boot 并没有web.xml但试试又不要钱于是 

只要将index.html放在上面规则的目录下, 在访问项目的时候会被默认加载

 

 


打赏

已有2人打赏

已注销用户的gravatar头像 最代码官方的gravatar头像
最近浏览
lvzhaohui  LV8 2020年11月24日
lvzhaohui  LV8 2020年11月24日
fcreye  LV1 2020年11月18日
487948123  LV8 2020年9月9日
runningqi  LV12 2020年8月12日
PalyBoy  LV9 2020年7月16日
海盗来了  LV20 2020年6月30日
fashion1314  LV5 2020年4月25日
zdm1667  LV2 2020年4月9日
已注销用户  LV34 2020年4月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友