springmvc返回json/xml格式的数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013181912/article/details/79055661

返回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代理来实现,原理也是一样的!

猜你喜欢

转载自blog.csdn.net/u013181912/article/details/79055661
今日推荐