1. 程式人生 > >springmvc返回json/xml格式的資料

springmvc返回json/xml格式的資料

返回json資料需要加入如下jackson依賴

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId
>
jackson-databind</artifactId> <version>2.8.5</version> </dependency>

指定請求資料型別Accept:application/json
在controller中利用produces指定響應型別為application/json即可
程式碼片段:

@RequestMapping(value = "/test1",produces = "application/json")
    @ResponseBody
    public JsonDate test1(HttpServletRequest request){
        String accept = request.getHeader("accept"
); System.out.println(accept); return new JsonDate(true,"ok"); }

若要指定返回型別為xml格式的資料,則除了加如上的依賴還需下面的依賴:

<!--返回xml格式的資料-->
 <dependency>
     <groupId>com.fasterxml.jackson.dataformat</groupId>
     <artifactId>jackson-dataformat-xml</artifactId>
<version>2.8.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jaxb-annotations</artifactId> <version>2.8.5</version> </dependency> <dependency> <groupId>org.codehaus.woodstox</groupId> <artifactId>stax2-api</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>com.fasterxml.woodstox</groupId> <artifactId>woodstox-core</artifactId> <version>5.0.3</version> </dependency>

同樣,指定請求資料型別Accept:application/xml
在controller中利用produces指定響應型別為application/xml即可
程式碼片段:

@RequestMapping(value = "/test2",produces = "application/xml")
    @ResponseBody
    public JsonDate test2(HttpServletRequest request){
        String accept = request.getHeader("accept");
        System.out.println(accept);
        return new JsonDate(true,"ok");
    }

這樣就可以返回xml格式的資料了!
當然也可以動態確定返回型別是json/xml,根據請求中的Acceptl來動態設定響應資料格式
程式碼片段:

 @RequestMapping(value = "/test3")
 @ResponseBody
 public JsonDate test3(HttpServletRequest request, HttpServletResponse response){
     String accept = request.getHeader("accept");
     System.out.println(accept);
     response.setHeader("accept",accept);
     return new JsonDate(true,"ok");
 }

其實最簡單的實現方式是通過aop代理來實現,原理也是一樣的!