最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用springboot對(duì)外部靜態(tài)資源文件的處理操作

 更新時(shí)間:2021年08月20日 11:29:38   作者:Honins  
這篇文章主要介紹了使用springboot對(duì)外部靜態(tài)資源文件的處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot對(duì)外部靜態(tài)資源文件的處理

springboot對(duì)外部資源文件的處理主要分為2部分,存和取,通過查看官方文件和看博客踩了坑之后終于搞定了,特此記錄。

1、存方面倒還簡(jiǎn)單,這里貼上一個(gè)獲取微信臨時(shí)素材并保存的方法

/**
     * @功能 下載臨時(shí)素材接口
     * @param filePath 文件將要保存的目錄
     * @param method 請(qǐng)求方法,包括POST和GET
     * @param url 請(qǐng)求的路徑
     * @return
     */ 
    public static String saveUrlAs(String url,String filePath,String method){
        //創(chuàng)建不同的文件夾目錄
        File file=new File(filePath);
        //判斷文件夾是否存在
        if (!file.exists())
        {
            //如果文件夾不存在,則創(chuàng)建新的的文件夾
            file.mkdirs();
        }
        FileOutputStream fileOut = null;
        HttpURLConnection conn = null;
        InputStream inputStream = null;
        String savePath = null ;
        try
        {
            // 建立鏈接
            URL httpUrl=new URL(url);
            conn=(HttpURLConnection) httpUrl.openConnection();
            //以Post方式提交表單,默認(rèn)get方式
            conn.setRequestMethod(method);
            conn.setDoInput(true);
            conn.setDoOutput(true);
            // post方式不能使用緩存
            conn.setUseCaches(false);
            //連接指定的資源
            conn.connect();
            //獲取網(wǎng)絡(luò)輸入流
            inputStream=conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(inputStream);
            //判斷文件的保存路徑后面是否以/結(jié)尾
            if (!filePath.endsWith("/")) { 
                filePath += "/"; 
            }
            String filePathDir =  DateUtil.getStringAllDate();
            //寫入到文件(注意文件保存路徑的后面一定要加上文件的名稱)
            savePath = filePath+filePathDir+".png";
            fileOut = new FileOutputStream(savePath);
            BufferedOutputStream bos = new BufferedOutputStream(fileOut);
 
            byte[] buf = new byte[4096];
            int length = bis.read(buf);
            //保存文件
            while(length != -1)
            {
                bos.write(buf, 0, length);
                length = bis.read(buf);
            }
            bos.close();
            bis.close();
            conn.disconnect();
        } catch (Exception e)
        {
            e.printStackTrace();
            logger.error(">>>>>>>>>>>>>>>>下載臨時(shí)素材接口拋出異常 [{}]",e.getMessage());
        } 
        return savePath; 
    }

2、取,由于對(duì)springboot不熟悉,所以在這上面踩了坑

先看一下springboot官方文檔對(duì)靜態(tài)資源這一塊的表述

主要使用到這2個(gè)配置

spring.mvc.static-path-pattern=/resources/**    //配置url訪問路徑
spring.resources.static-locations=                      //配置對(duì)應(yīng)的文件路徑

由于我想要將靜態(tài)資源存到項(xiàng)目外部比如 和項(xiàng)目根目錄同級(jí)的 static文件夾里,然后配置了

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

之后,訪問文件一直404

隨后網(wǎng)上查了一下,看到了一篇文章,發(fā)現(xiàn)

spring.resources.static-locations= file:xxx 

使用了file: + 路徑這一配置方法,然后嘗試了一下,變成這樣:

spring:
  resources:
    static-locations: file:${my.config.static-location}
my:
  config:
    static-location: /static/

發(fā)現(xiàn)文件訪問成功了!

所以實(shí)際上外部文件是需要file: 來配置的, static-locations默認(rèn)訪問的是類路徑下的文件

SpringBoot2.x靜態(tài)資源訪問

問題

在springBoot1.5.x版本,訪問靜態(tài)資源直接訪問static目錄下的資源即可,不用帶上static前綴,在2.x以上就失效了,現(xiàn)在記錄下在2.x版本如何訪問靜態(tài)資源

開發(fā)環(huán)境:IDEA

文件目錄:

  • templates存放官方推薦的thymeleaf模板
  • static存放靜態(tài)資源

在controller目錄下新建一個(gè)類,繼承WebMvcConfigurationSupport,對(duì)靜態(tài)資源目錄說明

代碼

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
}

原理

當(dāng)訪問的url中匹配到/static/**時(shí),就去訪問靜態(tài)資源存放地static目錄下尋找資源

在配置了靜態(tài)資源路徑后,就可以訪問靜態(tài)資源了,但是在訪問時(shí)需要在路徑前加上static

<a th:href="@{/static/imag1.jpg}" rel="external nofollow" >跳轉(zhuǎn)</a>
<a th:href="@{/static/images/image2.jpg}" rel="external nofollow" >跳轉(zhuǎn)</a>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 自旋鎖(spinlock)相關(guān)知識(shí)總結(jié)

    Java 自旋鎖(spinlock)相關(guān)知識(shí)總結(jié)

    這篇文章主要介紹了Java 自旋鎖(spinlock)相關(guān)知識(shí)總結(jié),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java面試高頻問題之RabbitMQ系列全面解析

    Java面試高頻問題之RabbitMQ系列全面解析

    在介紹RabbitMQ之前實(shí)現(xiàn)要介紹一下MQ,MQ是什么?MQ全稱是Message Queue,可以理解為消息隊(duì)列的意思,簡(jiǎn)單來說就是消息以管道的方式進(jìn)行傳遞。RabbitMQ是一個(gè)實(shí)現(xiàn)了AMQP(Advanced Message Queuing Protocol)高級(jí)消息隊(duì)列協(xié)議的消息隊(duì)列服務(wù),用Erlang語(yǔ)言的
    2021-11-11
  • mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    這篇文章主要介紹了mybatis的test坑及解決(不等于‘‘ 且 不等于0),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • spring mvc路徑匹配原則詳解

    spring mvc路徑匹配原則詳解

    這篇文章主要介紹了spring mvc路徑匹配原則詳解,小編覺得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下,下面就和小編一起來看看吧
    2018-02-02
  • Java中將List拆分為多個(gè)小list集合的實(shí)現(xiàn)代碼

    Java中將List拆分為多個(gè)小list集合的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java中如何將List拆分為多個(gè)小list集合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 一文帶你了解Spring中@Enable開頭注解的使用

    一文帶你了解Spring中@Enable開頭注解的使用

    前面的文章給大家介紹?Spring?的重試機(jī)制的時(shí)候有提到過?Spring?有很多?@Enable?開頭的注解,平時(shí)在使用的時(shí)候也沒有注意過為什么會(huì)有這些注解,今天就給大家介紹一下
    2022-09-09
  • MyBatis Plus配置日志CRUD的使用詳解

    MyBatis Plus配置日志CRUD的使用詳解

    這篇文章主要介紹了MyBatis Plus配置日志,CRUD的使用,,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • JDK源碼中一些實(shí)用的“小技巧”總結(jié)

    JDK源碼中一些實(shí)用的“小技巧”總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于JDK源碼中一些實(shí)用的“小技巧”,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jdk源碼具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • JVM常用垃圾收集器及GC算法解讀

    JVM常用垃圾收集器及GC算法解讀

    這篇文章主要介紹了JVM常用垃圾收集器及GC算法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java 中 request.getSession(true、false、null)的區(qū)別

    java 中 request.getSession(true、false、null)的區(qū)別

    這篇文章主要介紹了java 中 request.getSession(true/false/null)的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評(píng)論

佛坪县| 宣威市| 罗山县| 二连浩特市| 和林格尔县| 鲁山县| 镇康县| 九龙县| 宝鸡市| 冕宁县| 南郑县| 七台河市| 宝应县| 枝江市| 招远市| 长垣县| 衡阳县| 田东县| 本溪市| 黄骅市| 松溪县| 台东市| 诸城市| 武安市| 黄山市| 泽普县| 崇左市| 烟台市| 遵化市| 平顶山市| 广宁县| 南雄市| 嘉兴市| 曲水县| 商南县| 遂宁市| 夹江县| 蓝田县| 临颍县| 丹凤县| 鹤壁市|