Spring mvc新手入门(11)-返回json 字符串的其他方式

文章标签: spring-mvc,json
2014-12-21 21:47:12     103 人阅读    

Spring MVC返回 json字符串的方式有很多种方法,这里介绍最简单,也是最常使用的两种方式


一、使用  PrintWriter printWriter  直接输出字符串到返回结果中
   不需要任何xml文件配置

  

//返回给前台一个字符串
 @RequestMapping(params = "method=getJson1")
 public void getJson(@RequestParam("userid") String userid,@RequestHeader("Accept-Encoding") String encoding,HttpServletRequest request,PrintWriter printWriter) {
  System.out.println("通过注解在参数中取值 "+userid);
  System.out.println("通过@RequestHeader获得的encoding "+encoding);
        printWriter.write("{key,1}"); 
        printWriter.flush(); 
        printWriter.close(); 
 }


请求地址:http://localhost:8080/springmvc/hello.do?method=getJson1&userid=111
    返回值: {key,1}

二、通过@ResponseBody  直接返回对象,Spring MVC会自动把对象转化成Json
    需要其他配置支持
    1、开启  <mvc:annotation-driven />
    2、Jackson library 对应的jar必须加入到工程中
             3、方法的返回值必须添加 @ResponseBody
 

//把返回结果解析成json串返回到前台
 @RequestMapping(params = "method=json")
 public @ResponseBody User passValue(HttpServletRequest request) {
  User user = new User();
  user.setUser("aaaa");
  user.setPass("asfd");
  return user;
 }

  请求地址:http://localhost:8080/springmvc/hello.do?method=json
  返回值:{"user":"aaaa","pass":"asfd"}


    提醒:注意两种方法不能混用,不然会报错如下:


注意:在使用@ResponseBody 返回json的时候,方法参数中一定不能他添加   PrintWriter printWriter

  java.lang.IllegalStateException: getWriter() has already been called for this response
例如:

//这个方法会报错 因为使用了PrintWriter printWriter  错误 java.lang.IllegalStateException: getWriter() has already been called for this response

 @RequestMapping(params = "method=jsonTest")
 public @ResponseBody Map<String, Object> jsonTest(@RequestParam("userid") String userid,HttpServletRequest request,PrintWriter printWriter) {
  System.out.println("通过注解在参数中取值 "+userid);
  System.out.println("通过自己写的函数从reqeust取值 "+RequestUtil.getMap(request).get("userid"));
  HelloWorld hello = new HelloWorld(RequestUtil.getMap(request));
  return   hello.hello();
 }


原文地址:http://www.itmmd.com/201412/355.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

Java程序常用算法-计算字符串中子串出现的次数   上一篇
下一篇  java Rest学习-第一个Java REST 服务(6)- 第一个Servlet容器服务

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!