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

關(guān)于ResponseEntity類和HttpEntity及跨平臺(tái)路徑問(wèn)題

 更新時(shí)間:2024年07月11日 08:40:59   作者:魚找水需要時(shí)間  
這篇文章主要介紹了關(guān)于ResponseEntity類和HttpEntity及跨平臺(tái)路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. 簡(jiǎn)介

使用spring時(shí),達(dá)到同一目的通常有很多方法,對(duì)處理http響應(yīng)也是一樣。本文我們學(xué)習(xí)如何通過(guò)ResponseEntity設(shè)置http相應(yīng)內(nèi)容、狀態(tài)以及頭信息。

ResponseEntity是HttpEntity的擴(kuò)展,添加一個(gè)HttpStatus狀態(tài)代碼。在RestTemplate和@Controller方法中使用。

ResponseEntity標(biāo)識(shí)整個(gè)http相應(yīng):狀態(tài)碼、頭部信息以及相應(yīng)體內(nèi)容。因此我們可以使用其對(duì)http響應(yīng)實(shí)現(xiàn)完整配置

理解:

  • ResponseEntity的優(yōu)先級(jí)高于@ResponseBody。在不是ResponseEntity的情況下才去檢查有沒(méi)有@ResponseBody注解。如果響應(yīng)類型是ResponseEntity可以不寫@ResponseBody注解,寫了也沒(méi)有關(guān)系。
  • ResponseEntity 是在 org.springframework.http.HttpEntity 的基礎(chǔ)上添加了http status code(http狀態(tài)碼),用于RestTemplate以及@Controller的HandlerMethod。它在Controller中或者用于服務(wù)端響應(yīng)時(shí),作用是和@ResponseStatus與@ResponseBody結(jié)合起來(lái)的功能一樣的。用于RestTemplate時(shí),它是接收服務(wù)端返回的http status code 和 result的。
  • 簡(jiǎn)單粗暴的講 @ResponseBody可以直接返回Json結(jié)果, @ResponseEntity不僅可以返回json結(jié)果,還可以定義返回的HttpHeaders和HttpStatus

2. 使用

2.1 RestTemplate

ResponseEntity<String> entity = template.getForEntity("https://hello.com", String.class);
String body = entity.getBody();
MediaType contentType = entity.getHeaders().getContentType();
HttpStatus statusCode = entity.getStatusCode();

2.2 Controller

@RestController
@RequestMapping("/demo")
public class DemoController {

    @GetMapping("/get")
    public ResponseEntity<String> get() {
        return ResponseEntity.ok("hello");
    }
}

2.3 指定響應(yīng)狀態(tài)碼

靜態(tài)方式

@GetMapping("/get")
public ResponseEntity<String> get() {
    return ResponseEntity.status(HttpStatus.LOCKED).body("服務(wù)不可用");
}

也可以通過(guò)非靜態(tài)方式構(gòu)建

@GetMapping("/get")
public ResponseEntity<String> get() {
    ResponseEntity responseEntity = new ResponseEntity("服務(wù)不可用", HttpStatus.LOCKED);
    return responseEntity;
}

2.4 自定義響應(yīng)頭

@GetMapping("/get")
public ResponseEntity<String> get() {
    return ResponseEntity.ok()
        .header("Custom-Header", "lisa")
        .body("Custom header set");
}

2.5 下載文件

 @GetMapping("/download")
    public ResponseEntity<byte[]> get() throws IOException {
        // 你放的文件路徑
        String filePath = "C:" + File.separator + "Users" + File.separator + "admin002" + File.separator + "Desktop" + File.separator + "work" + File.separator + "img";
        File file = new File(filePath + File.separator + "java.png");
        // 設(shè)置一個(gè)head
        HttpHeaders headers = new HttpHeaders();
        // 文件的屬性,也就是文件叫什么
        headers.setContentDispositionFormData("attachment", "1.png");
        // 內(nèi)容是字節(jié)流
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        // 開始下載
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
    }

2.6 直接操作HttpServletResponse

Spring 也允許我們直接 javax.servlet.http.HttpServletResponse 對(duì)象;只需要申明其作為方法參數(shù):

@GetMapping("/get")
public void get(HttpServletResponse response) throws IOException {
    response.setHeader("Custom-Header", "lisa");
    response.setStatus(200);
    response.getWriter().println("Hello World!");
}

但需要說(shuō)明,既然spring已經(jīng)提供底層實(shí)現(xiàn)的抽象和附件功能,當(dāng)然不建議直接操作response。

3. 擴(kuò)展(跨平臺(tái)路徑問(wèn)題)

  • File.separator:系統(tǒng)相關(guān)的默認(rèn)名稱分隔符,為方便起見表示為字符串。該字符串只包含一個(gè)字符,即separatorChar
  • separatorChar:系統(tǒng)依賴的默認(rèn)名稱分隔符。這個(gè)字段被初始化為包含系統(tǒng)屬性file.separator值的第一個(gè)字符。在UNIX系統(tǒng)上,這個(gè)字段的值是’\‘;在Microsoft Windows系統(tǒng)上它是’\\’

注意:如果要考慮跨平臺(tái),則最好使用File.separator標(biāo)識(shí)路徑分隔符,不要直接用字符串’\\'來(lái)表示

總結(jié)

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

相關(guān)文章

  • Java 獲取泛型的類型實(shí)例詳解

    Java 獲取泛型的類型實(shí)例詳解

    這篇文章主要介紹了Java 獲取泛型的類型實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java并發(fā)之AQS與自旋鎖詳解

    Java并發(fā)之AQS與自旋鎖詳解

    這篇文章主要介紹了Java并發(fā)之AQS與自旋鎖詳解,類如其名,抽象的隊(duì)列式的同步器,AQS定義了一套多線程訪問(wèn)共享資源的同步器框架,許多同步類實(shí)現(xiàn)都依賴于它,如常用的ReentrantLock/Semaphore/CountDownLatch,需要的朋友可以參考下
    2023-10-10
  • Java Date類的使用案例詳解

    Java Date類的使用案例詳解

    這篇文章主要介紹了Java Date類的使用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件

    java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件

    這篇文章主要介紹了java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件,從個(gè)人項(xiàng)目中提取出來(lái)的,小伙伴們可以直接拿走使用。
    2015-02-02
  • 詳解Spring ApplicationContext加載過(guò)程

    詳解Spring ApplicationContext加載過(guò)程

    這篇文章主要介紹了Spring ApplicationContext加載過(guò)程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用spring框架,感興趣的朋友可以了解下
    2021-03-03
  • 詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法

    詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法

    這篇文章主要介紹了詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Java圓柱體表面積和體積計(jì)算代碼實(shí)例

    Java圓柱體表面積和體積計(jì)算代碼實(shí)例

    這篇文章主要介紹了Java圓柱體表面積和體積計(jì)算代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • StringBuilder為什么線程不安全深入講解

    StringBuilder為什么線程不安全深入講解

    這篇文章主要給大家介紹了關(guān)于StringBuilder為什么線程不安全的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用StringBuilder線程具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java?empty、null、blank的區(qū)別小結(jié)

    Java?empty、null、blank的區(qū)別小結(jié)

    本文主要介紹了Java?empty、null、blank的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解Maven POM(項(xiàng)目對(duì)象模型)

    詳解Maven POM(項(xiàng)目對(duì)象模型)

    這篇文章主要介紹了Maven POM(項(xiàng)目對(duì)象模型)的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評(píng)論

台南市| 邳州市| 桐乡市| 云林县| 宜兴市| 岱山县| 平远县| 上饶市| 宁夏| 海门市| 禄劝| 内丘县| 大冶市| 双峰县| 板桥市| 砚山县| 句容市| 苍溪县| 连城县| 军事| 财经| 玛多县| 炎陵县| 英德市| 新和县| 甘德县| 盐城市| 汪清县| 桃江县| 龙南县| 潮州市| 桑日县| 万载县| 缙云县| 安顺市| 莎车县| 隆尧县| 博客| 阿荣旗| 东阳市| 九江市|