zoukankan      html  css  js  c++  java
  • SpringBoot通过url访问获取内部或者外部磁盘图片

    点击到来源文章

    一、默认静态资源映射
    1. 在 Spring Boot 中,默认情况下,一共有5个位置可以放静态资源,Spring Boot 默认将 /** 所有访问映射到以下目录,五个路径分别是如下5个:

    classpath:/META-INF/resources/
    classpath:/resources/
    classpath:/static/
    classpath:/public/
    "/" : 静态资源存放在当前项目的根路径下,放在这个根路径下也是可以访问的
     如:
          (1).在src/main/resources/目录下创建 
               static文件夹 ,存放图片a.jpg
          (2).在src/main/resources/目录下创建 
               resources文件夹 ,存放图片b.jpg
          (3).在src/main/resources/目录下创建 
               public文件夹 ,存放图片c.jpg
          (4).在src/main/resources/目录下创建 
               META-INF/resources文件夹 

    上面这几个都是静态资源的映射路径,优先级顺序为:META-INF/resources > resources > static > public > /

    2.配置application.yml的端口

    # 开发环境配置
    server:
    # 服务器的HTTP端口,默认为8080
    port: 8787
    3.浏览器分别访问:

    http://localhost:8787/a.jpg
    http://localhost:8787/b.jpg
    http://localhost:8787/c.jpg
    均能正常访问相应的图片资源。那么说明,Spring Boot 默认会挨个从 public、 resources 、static目录里面找是否存在相应的资源,如果有则直接返回。

    二、自定义静态资源映射配置
            在实际开发中,可能需要自定义静态资源访问路径,那么可以继承WebMvcConfigurerAdapter(在SpringBoot2.0及Spring 5.0 WebMvcConfigurerAdapter已被废弃)来实现。

    第一种方式:继承WebMvcConfigurerAdapter 类实现静态资源配置
    package com.sam.demo.conf;

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

    /**
    * 配置静态资源映射
    * @author cao
    * @since 2019/01/23
    */
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    //将所有/static/** 访问都映射到classpath:/static/ 目录下
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
    }
    重启项目,访问:http://localhost:8787/static/c.jpg 能正常访问static目录下的c.jpg图片资源。

    第二种方式:在application.properties配置文件中配置
    在application.properties中添加配置:

    spring.mvc.static-path-pattern=/static/**
    重启项目,访问:http://localhost:8787/static/c.jpg 同样能正常访问static目录下的c.jpg图片资源。

    注意:通过spring.mvc.static-path-pattern这种方式配置,会使Spring Boot的默认配置失效,也就是说,/public /resources 等默认配置不能使用。

    配置中配置了静态模式为/static/,就只能通过/static/来访问。

    三、自定义外部静态资源映射,访问本地磁盘图片
     方式一: application.yml文件中配置 

      本地磁盘图片:

      

    访问:http://127.0.0.1:8787/images/护眼模式_20190123110237.jpg

    注意:  如果yml中配置了项目访问前缀 context-path,请注意访问路径加上,别漏掉了!

     

    方式二: 在代码上配置, 继承WebMvcConfigurerAdapter 类,但是在SpringBoot2.0及Spring 5.0 WebMvcConfigurerAdapter已被废弃,目前找到解决方案就有两种,请往下看:

    以下是WebMvcConfigurerAdapter 比较常用的重写接口

    /** 解决跨域问题 **/
    public void addCorsMappings(CorsRegistry registry) ;
    /** 添加拦截器 **/
    void addInterceptors(InterceptorRegistry registry);
    /** 这里配置视图解析器 **/
    void configureViewResolvers(ViewResolverRegistry registry);
    /** 配置内容裁决的一些选项 **/
    void configureContentNegotiation(ContentNegotiationConfigurer configurer);
    /** 视图跳转控制器 **/
    void addViewControllers(ViewControllerRegistry registry);
    /** 静态资源处理 **/
    void addResourceHandlers(ResourceHandlerRegistry registry);
    /** 默认静态资源处理器 **/
    void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
     重写WebMvcConfigurerAdapter类 


    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

    /**
    * <pre>
    * @Description:配置静态资源映射
    * @Aouth: cao_wencao
    * @Date: 2019-01-23 16:11
    * </pre>
    */
    @Configuration
    public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    //addResourceHandler是指你想在url请求的路径
    //addResourceLocations是图片存放的真实路径
    registry.addResourceHandler("/images/**").addResourceLocations("file:D://Images//壁纸/");
    super.addResourceHandlers(registry);
    }

    }
    方式三:替代WebMvcConfigurerAdapter 已过时的解决方案,新的版本解决方案目前有两种

    方案1 :直接实现WebMvcConfigurer(官方推荐使用这个)

    package com.thinkingcao.config;

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

    /**
    * <pre>
    * @Description:
    * @Aouth: cao_wencao
    * @Date: 2019-01-23 17:28
    * </pre>
    */
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/images/**").addResourceLocations("file:D://Images//壁纸/");
    }
    }
    方案2 :直接继承WebMvcConfigurationSupport

    package com.thinkingcao.config;

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

    /**
    * <pre>
    * @Description:
    * @Aouth: cao_wencao
    * @Date: 2019-01-23 17:39
    * </pre>
    */
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/images/**").addResourceLocations("file:D://Images//壁纸/");
    }
    }

     

    ————————————————
    版权声明:本文为CSDN博主「Thinkingcao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Thinkingcao/java/article/details/86613066

  • 相关阅读:
    如何自我介绍可以吸引面试官?
    测试用例有多重要?
    文档测试的要点是什么?
    android应用性能优化技法
    android中的ems的真正含义
    android studio的java代码中,提取普通字符串为常量
    Android配置启动页
    C/C++函数未运行,且显示Process returned -1073741571 (0xC00000FD)
    vue的组件及其使用方法
    Vue关闭ESLint
  • 原文地址:https://www.cnblogs.com/fanheyan/p/12700980.html
Copyright © 2011-2022 走看看