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

詳解如何使用SpringBoot實(shí)現(xiàn)下載JSON文件

 更新時(shí)間:2025年02月12日 10:38:00   作者:小信丶  
在?Spring?Boot?中實(shí)現(xiàn)文件下載功能,可以通過(guò)將?JSON?字符串作為文件內(nèi)容返回給客戶(hù)端從而實(shí)現(xiàn)JSON文件下載效果,下面我們就來(lái)看看具體操作吧

概述

在 Spring Boot 中實(shí)現(xiàn)文件下載功能,可以通過(guò)將 JSON 字符串作為文件內(nèi)容返回給客戶(hù)端。以下是實(shí)現(xiàn)步驟和代碼示例:

實(shí)現(xiàn)步驟

定義接口:創(chuàng)建一個(gè) REST 控制器,用于處理文件下載請(qǐng)求。

設(shè)置響應(yīng)頭:通過(guò) HttpServletResponse 設(shè)置響應(yīng)頭,指定文件類(lèi)型和下載文件名。

返回文件內(nèi)容:將 JSON 字符串寫(xiě)入響應(yīng)輸出流。

代碼實(shí)現(xiàn)

1. 創(chuàng)建 Spring Boot 控制器

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
 
@RestController
@RequestMapping("/api")
public class FileDownloadController {
 
    @GetMapping("/download-json")
    public void downloadJsonFile(HttpServletResponse response) throws IOException {
        // 1. 準(zhǔn)備 JSON 字符串
        String jsonContent = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
 
        // 2. 設(shè)置響應(yīng)頭
        response.setContentType("application/json"); // 文件類(lèi)型為 JSON
        response.setHeader("Content-Disposition", "attachment; filename=\"data.json\""); // 設(shè)置下載文件名
 
        // 3. 將 JSON 字符串寫(xiě)入響應(yīng)輸出流
        response.getOutputStream().write(jsonContent.getBytes(StandardCharsets.UTF_8));
        response.getOutputStream().flush();
    }
}

2. 運(yùn)行并測(cè)試

啟動(dòng) Spring Boot 應(yīng)用。

在瀏覽器中訪(fǎng)問(wèn)接口地址,例如:http://localhost:8080/api/download-json。

瀏覽器會(huì)自動(dòng)下載一個(gè)名為 data.json 的文件,文件內(nèi)容為:

{"name":"John", "age":30, "city":"New York"}

關(guān)鍵點(diǎn)說(shuō)明

1.HttpServletResponse:

  • 用于設(shè)置響應(yīng)頭和輸出流。
  • setContentType("application/json"):指定文件類(lèi)型為 JSON。
  • setHeader("Content-Disposition", "attachment; filename=\"data.json\""):指定文件名為 data.json,并告訴瀏覽器以附件形式下載。

2.文件內(nèi)容寫(xiě)入:

  • 使用 response.getOutputStream().write() 將 JSON 字符串寫(xiě)入響應(yīng)輸出流。
  • 確保使用 StandardCharsets.UTF_8 指定字符編碼,避免亂碼問(wèn)題。

3.文件名:

可以根據(jù)需要?jiǎng)討B(tài)生成文件名,例如:

String fileName = "data_" + System.currentTimeMillis() + ".json";
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

擴(kuò)展功能

動(dòng)態(tài)生成 JSON 內(nèi)容:可以從數(shù)據(jù)庫(kù)或其他服務(wù)中獲取數(shù)據(jù),動(dòng)態(tài)生成 JSON 字符串。

壓縮文件下載:如果需要下載壓縮文件(如 .zip),可以使用 ZipOutputStream 將多個(gè)文件打包后返回。

大文件下載:對(duì)于大文件,可以使用分塊傳輸(Transfer-Encoding: chunked)來(lái)優(yōu)化性能。

示例:動(dòng)態(tài)生成 JSON 內(nèi)容

@GetMapping("/download-dynamic-json")
public void downloadDynamicJsonFile(HttpServletResponse response) throws IOException {
    // 動(dòng)態(tài)生成 JSON 數(shù)據(jù)
    Map<String, Object> data = new HashMap<>();
    data.put("timestamp", System.currentTimeMillis());
    data.put("message", "Hello, this is a dynamic JSON file!");
 
    // 將 Map 轉(zhuǎn)換為 JSON 字符串
    String jsonContent = new ObjectMapper().writeValueAsString(data);
 
    // 設(shè)置響應(yīng)頭
    response.setContentType("application/json");
    response.setHeader("Content-Disposition", "attachment; filename=\"dynamic_data.json\"");
 
    // 寫(xiě)入響應(yīng)輸出流
    response.getOutputStream().write(jsonContent.getBytes(StandardCharsets.UTF_8));
    response.getOutputStream().flush();
}

訪(fǎng)問(wèn) http://localhost:8080/api/download-dynamic-json,會(huì)下載一個(gè)包含動(dòng)態(tài)生成內(nèi)容的 JSON 文件。

到此這篇關(guān)于詳解如何使用SpringBoot實(shí)現(xiàn)下載JSON文件的文章就介紹到這了,更多相關(guān)SpringBoot下載JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java圖形驗(yàn)證碼生成工具類(lèi) web頁(yè)面校驗(yàn)驗(yàn)證碼

    java圖形驗(yàn)證碼生成工具類(lèi) web頁(yè)面校驗(yàn)驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了java圖形驗(yàn)證碼生成工具類(lèi),web頁(yè)面校驗(yàn)驗(yàn)證碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java 異步編程實(shí)踐_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java 異步編程實(shí)踐_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    異步編程提供了一個(gè)非阻塞的,事件驅(qū)動(dòng)的編程模型。下面通過(guò)本文給大家介紹Java 異步編程實(shí)踐,感興趣的的朋友一起看看吧
    2017-05-05
  • Java編程guava RateLimiter實(shí)例解析

    Java編程guava RateLimiter實(shí)例解析

    這篇文章主要介紹了Java編程guava RateLimiter實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串

    Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串

    這篇文章主要介紹了Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串,本文直接給出實(shí)現(xiàn)代碼,以及運(yùn)算結(jié)果加密實(shí)例,需要的朋友可以參考下
    2015-06-06
  • 如何從Java接口的角度切入靜態(tài)工廠(chǎng)模式

    如何從Java接口的角度切入靜態(tài)工廠(chǎng)模式

    靜態(tài)工廠(chǎng)模式是一種改進(jìn)的獲取實(shí)例的方法。通常我們會(huì)使用new關(guān)鍵字調(diào)用類(lèi)的構(gòu)造方法來(lái)創(chuàng)建一個(gè)對(duì)象。靜態(tài)工廠(chǎng)可以根據(jù)用戶(hù)傳入的參數(shù)來(lái)動(dòng)態(tài)地實(shí)例化對(duì)象,避免一次性實(shí)例化所有對(duì)象所帶來(lái)的性能浪費(fèi),同時(shí)也降低了耦合性。
    2021-06-06
  • elasticsearch kibana簡(jiǎn)單查詢(xún)講解

    elasticsearch kibana簡(jiǎn)單查詢(xún)講解

    今天小編就為大家分享一篇關(guān)于elasticsearch kibana簡(jiǎn)單查詢(xún)講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • springboot 實(shí)現(xiàn)長(zhǎng)鏈接轉(zhuǎn)短鏈接的示例代碼

    springboot 實(shí)現(xiàn)長(zhǎng)鏈接轉(zhuǎn)短鏈接的示例代碼

    短鏈接服務(wù)通過(guò)將長(zhǎng)URL轉(zhuǎn)換成6位短碼,并存儲(chǔ)長(zhǎng)短鏈接對(duì)應(yīng)關(guān)系到數(shù)據(jù)庫(kù)中,用戶(hù)訪(fǎng)問(wèn)短鏈接時(shí),系統(tǒng)通過(guò)查詢(xún)數(shù)據(jù)庫(kù)并重定向到原始URL,實(shí)現(xiàn)快速訪(fǎng)問(wèn),本文就來(lái)介紹一下如何使用,感興趣的可以了解一下
    2024-09-09
  • mybatis中@Param注解總是報(bào)取不到參數(shù)問(wèn)題及解決

    mybatis中@Param注解總是報(bào)取不到參數(shù)問(wèn)題及解決

    這篇文章主要介紹了mybatis中@Param注解總是報(bào)取不到參數(shù)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Mybatis中Mapper標(biāo)簽總結(jié)大全

    Mybatis中Mapper標(biāo)簽總結(jié)大全

    這篇文章主要介紹了Mybatis中Mapper標(biāo)簽總結(jié)大全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解

    SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

施甸县| 平武县| 当雄县| 香河县| 建始县| 安宁市| 南漳县| 革吉县| 星座| 陵川县| 陈巴尔虎旗| 吉首市| 石狮市| 涿州市| 西昌市| 上饶市| 阿合奇县| 西畴县| 息烽县| 姜堰市| 罗甸县| 长海县| 合川市| 天镇县| 茂名市| 木里| 延津县| 洛隆县| 尚志市| 万源市| 天镇县| 柘荣县| 赫章县| 福海县| 河津市| 莆田市| 重庆市| 南平市| 屏东县| 颍上县| 禹州市|