最亚虎娱乐官网广告位
筱进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头像

分享到:

最近浏览
下载狂魔1月16日
暂无贡献等级
xp95323 LV132019年12月18日
月亮月亮月亮星星
shanjunkai123 LV22019年11月5日
星星星星
1225086246 LV32019年11月4日
星星星星星星
最远的旅行 LV32019年10月22日
星星星星星星
的盗窃 LV42019年10月9日
月亮
fendo LV52019年9月27日
月亮星星
194ice LV12019年9月19日
星星
LIGHTsky LV12019年9月10日
星星
飞翔的面包片 LV32019年9月10日
星星星星星星
顶部客服微信二维码底部
>扫描二维码关注最亚虎娱乐官网为好友扫描二维码关注最亚虎娱乐官网为好友