欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java程序部署到服務(wù)器上,接口請(qǐng)求下載文件失敗/文件為空/文件名不對(duì)的問題

 更新時(shí)間:2020年07月10日 16:31:57   作者:Oxye  
這篇文章主要介紹了Java程序部署到服務(wù)器上,接口請(qǐng)求下載文件失敗/文件為空/文件名不對(duì),本文給大家分享錯(cuò)誤原因及解決方法,需要的朋友可以參考下

1.問題:

昨天把項(xiàng)目打包放到國(guó)產(chǎn)中間件東方通(外部容器,功能類似Tomcat)上時(shí),發(fā)現(xiàn)某些請(qǐng)求下載文件的接口不能正確返回文件,而是返回一個(gè)空的文件,名稱是接口名最后一個(gè)詞fj,

然而這個(gè)功能直接使用IDE啟動(dòng)時(shí)沒問題的,打包放到Tomcat9上也沒問題,那可能是東方通適配問題了

在這里插入圖片描述

2.原代碼:

部署在服務(wù)器上系統(tǒng)以后,在線打斷點(diǎn),發(fā)現(xiàn)跑到這一部分就在第三行位置執(zhí)行不下去

 response.setContentType("application/force-download");
 response.setCharacterEncoding("utf-8");
 response.setContentLengthLong(fileMetaData.getSize());
 response.setHeader("Content-Disposition", "attachment;filename=" + encodeChineseDownloadFileName(request, qualifiedFileName));

3.錯(cuò)誤原因:

servlet-api.jar 版本問題,系統(tǒng)使用了新版本的方法,東方通上舊版本jar沒這個(gè)方法

4.解決

response是HttpServletResponse類型的,
看一下這個(gè)類在哪:javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar!\javax\servlet\http\HttpServletResponse.class

發(fā)現(xiàn)這個(gè)類是javax.servlet-api-4.0.1.jar包里的類

我在遷移系統(tǒng)到TongWeb上的時(shí)候,做了一些jar包改動(dòng),依稀記得看到過lib下使用的是servlet-api.jar

我把jar下下來,壓縮文件打開,去尋找此類,發(fā)現(xiàn)這些文件都是2012年的,說明這版東方通使用的servlet-api版本老

在這里插入圖片描述

使用IDEA打開class,在structure中查看,發(fā)現(xiàn)我們代碼中用到的方法只有setHeader

在這里插入圖片描述

再看一下集成的接口ServletResponse,發(fā)現(xiàn)只找到setContentType、setCharacterEncoding

在這里插入圖片描述

看一下程序依賴的版本,好吧,新版本有這個(gè)方法

在這里插入圖片描述

5.新代碼:

去掉這一行,接口返回正確的文件

 response.setContentType("application/force-download");
 response.setCharacterEncoding("utf-8");
 //response.setContentLengthLong(fileMetaData.getSize());
 response.setHeader("Content-Disposition", "attachment;filename=" + encodeChineseDownloadFileName(request, qualifiedFileName));

到此這篇關(guān)于Java程序部署到服務(wù)器上,接口請(qǐng)求下載文件失敗/文件為空/文件名不對(duì)的文章就介紹到這了,更多相關(guān)java程序部署服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA設(shè)計(jì)模式之組合模式原理與用法詳解

    JAVA設(shè)計(jì)模式之組合模式原理與用法詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之組合模式,簡(jiǎn)單說明了組合模式的原理,并結(jié)合實(shí)例分析了java組合模式的具體用法,需要的朋友可以參考下
    2017-08-08
  • Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉

    Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉

    本文主要介紹了Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 基于RestTemplate的使用方法(詳解)

    基于RestTemplate的使用方法(詳解)

    下面小編就為大家?guī)硪黄赗estTemplate的使用方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • java如何將map數(shù)據(jù)存入到實(shí)體類對(duì)象中

    java如何將map數(shù)據(jù)存入到實(shí)體類對(duì)象中

    在Java編程中,經(jīng)常需要將Map集合中的數(shù)據(jù)轉(zhuǎn)換為實(shí)體類對(duì)象,這可以通過反射機(jī)制實(shí)現(xiàn),即通過遍歷Map對(duì)象,使用反射根據(jù)鍵名對(duì)應(yīng)實(shí)體類的屬性名,動(dòng)態(tài)調(diào)用setter方法將值設(shè)置到實(shí)體對(duì)象中,這樣的操作使得數(shù)據(jù)從Map結(jié)構(gòu)轉(zhuǎn)移到了具體的JavaBean中,便于后續(xù)的操作和管理
    2024-09-09
  • Java結(jié)構(gòu)型設(shè)計(jì)模式中建造者模式示例詳解

    Java結(jié)構(gòu)型設(shè)計(jì)模式中建造者模式示例詳解

    建造者模式,是一種對(duì)象構(gòu)建模式 它可以將復(fù)雜對(duì)象的建造過程抽象出來,使這個(gè)抽象過程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對(duì)象。本文將通過示例講解建造者模式,需要的可以參考一下
    2022-09-09
  • @Transactional注解不起作用的原因分析及解決

    @Transactional注解不起作用的原因分析及解決

    這篇文章主要介紹了@Transactional注解不起作用的原因分析及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot的logback配置源碼解讀

    springboot的logback配置源碼解讀

    這篇文章主要為大家介紹了springboot的logback配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 什么是Java自旋鎖

    什么是Java自旋鎖

    這篇文章主要介紹了什么是Java自旋鎖,在有些場(chǎng)景中,同步資源的鎖定時(shí)間很短,為了這一小段時(shí)間去切換線程,線程掛起和恢復(fù)現(xiàn)場(chǎng)的花費(fèi)可能會(huì)讓系統(tǒng)得不償失,下面來了解具體內(nèi)容介紹吧
    2022-01-01
  • mybatis之多參數(shù)查詢方式

    mybatis之多參數(shù)查詢方式

    這篇文章主要介紹了mybatis之多參數(shù)查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java開發(fā)中如何使用JVisualVM進(jìn)行性能分析

    java開發(fā)中如何使用JVisualVM進(jìn)行性能分析

    JVisualVM是由Sun提供的性能分析工具,如此強(qiáng)大的后盾怎能不強(qiáng)大?在Jdk6.0以后的版本中是自帶的,配置好環(huán)境變量然后在運(yùn)行中輸入“JVisualVm”或直接到Jdk的安裝目錄的Bin目錄下找到運(yùn)行程序即可運(yùn)行。如果是用Jdk1.5或以前版本的朋友就得要單獨(dú)安裝了
    2015-12-12

最新評(píng)論