SpringMVC文件下載與JSON格式


點擊查看上一章

現在JSON這種數據格式是被使用的非常的廣泛的,SpringMVC作為目前最受歡迎的框架,它對JSON這種數據格式提供了非常友好的支持,可以說是簡單到爆。

在我們SpringMVC中只需要添加jackjson的jar包后RequestMappingHandlerAdapter會將MappingJacksonHttpMessageConverter裝配進來。而我們使用也只需要使用注解修飾就可以完成JSON格式的轉換

@ResponseBoy

 

//@ResponseBody
    @RequestMapping("/getJson")
    public @ResponseBody String getJson() {
        return "success";
    }

 

我們只需要將方法使用注解@ResponseBody修飾就可以完成JSON格式自動轉換,這個注解可以修飾在方法上,也可以修飾在返回值上。我們可以返回任意對象,他會自動轉換成JSON格式返回給客戶端。

ResponseEntity

除了使用@ResponseBody我們還可以使用ResponseEntity對象作為返回值,這兩種方式效果是一樣的。

@RequestMapping("/getJson2")
    public ResponseEntity<String> getJson2() {
        ResponseEntity<String> responseEntity = new ResponseEntity<>("<h1>ResponseEntity</h1>", HttpStatus.OK);
        return responseEntity;
    }

@RequestBody

該注解用於讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上。

<form action="testRequestBody2" method="POST">
        <input type="text" name="username"><br>
        <input type="password" name="userpass"><br>
        <input type="submit" value="登陸">
    </form>
@RequestMapping("/testRequestBody")
    public String hello(@RequestBody String body) {
        System.out.println(body);
        return "hello";
    }

他會將我們這個表單中的數據轉換成字符串類型

HttpEntity

這個對象使用起來效果是與@RequestBody效果是一致的。

 

@RequestMapping("/testHttpEntity")
    public String getJson2(HttpEntity<String> entity) {
        System.out.println(entity.getBody());
        return "hello";
    }

 

文件下載功能

使用ResponseEntity<byte[]>來實現文件下載。文件下載只需要將文件輸出類型該為可以被下載的文件類型設置為ResponseEntity<byte[]>即可。 

 

@RequestMapping("/downFile")
    public ResponseEntity<byte[]> testdownFile(HttpSession session) throws IOException {
        ServletContext servletContext = session.getServletContext();
        InputStream in = servletContext.getResourceAsStream("downloads/down.txt");
        byte[] bytes = FileCopyUtils.copyToByteArray(in);
        HttpHeaders header = new HttpHeaders();
        header.add("Content-Disposition", "attachment;filename=down.txt");
        ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(bytes, header, HttpStatus.OK);
        return entity;
    }

 

filename這個屬性是文件下載的文件名字。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM