springmvc返回json/xml格式的資料
阿新 • • 發佈:2019-02-09
返回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代理來實現,原理也是一樣的!