筱进GG的gravatar头像
筱进GG2019-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放在上面规则的目录下, 在访问项目的时候会被默认加载

 

 


打赏

已有1人打赏

最代码官方的gravatar头像

分享到:

最近浏览
zhaoyun_05136小时前
暂无贡献等级
浙江螃蟹 LV69小时前
月亮星星星星
zgping671020 LV313小时前
星星星星星星
kalends LV4昨天
月亮
死了还要爱 LV14昨天
月亮月亮月亮星星星星
yangdong LV12昨天
月亮月亮月亮
chadzhang LV17月13日
星星
每天都要进步 LV97月13日
月亮月亮星星
火云邪神 LV47月12日
月亮
吖吖haha LV67月12日
月亮星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友