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

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

1
2
3
4
5
6
7
8
9
//返回给前台一个字符串
 @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

1
2
3
4
5
6
7
8
//把返回结果解析成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

1
2
3
4
5
6
7
 @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();
 }

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

160506、Spring mvc新手入门(11)-返回json 字符串的其他方式的更多相关文章

  1. Spring MVC全局异常后返回JSON异常数据

    问题: 当前项目是作为手机APP后台支持,使用spring mvc + mybaits + shiro进行开发.后台服务与手机端交互是发送JSON数据.如果后台发生异常,会直接返回异常页面,显示异常内 ...

  2. spring mvc 利用匿名内部类构建返回json对象

    @RequestMapping(value = "/order/findOrderByIdVague/{noId}.json", method = {RequestMethod.G ...

  3. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  4. spring mvc返回json字符串的方式

    spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json            优点:不需要自己再处理 步骤一:在spring- ...

  5. Spring Mvc的入门

    SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. Spring Web MVC是什么: Sprin ...

  6. Spring MVC【入门】

    Spring MVC[入门]就这一篇! MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod ...

  7. spring mvc接收ajax提交的JSON数据,并反序列化为对象

    需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...

  8. MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式。

    原文链接:https://www.muhanxue.com/essays/2015/01/8623699.html MVC web api 返回JSON的几种方式 1.在WebApiConfig的Re ...

  9. Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object

    Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object 资料参考:http://stack ...

随机推荐

  1. ubuntu学习教程

    1:搜狗输入法安装: http://jingyan.baidu.com/article/adc815134f4b92f722bf7350.html 2:flash插件的安装: http://jingy ...

  2. 连接SQLServer的增删改查方法代码

    在Visual C++中用ADO进行数据库编程 1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序CADOConnection,然后在使用A ...

  3. apache虚拟主机设置泛域名的方法

    在apache虚拟主机中设置泛域名解析,主要是用到ServerAlias 的配置. 1.支持多域名 例如,让mail.jbxue.org.smtp.jbxue.org.pop3.jbxue.org 都 ...

  4. PHPStorm 10 激活

    按照这篇东东的说法去做已经不行了~ 可以参考我的另外一篇~ 传送门: http://www.cnblogs.com/gssl/p/5686612.html 楼主的图片看不到,下面是我找到的.分享出来. ...

  5. python学习之winreg模块

    winreg模块将Windows注册表API暴露给了python. 常见方法和属性 winreg.OpenKey(key,sub_key,reserved = ,access = KEY_READ) ...

  6. Python|PyCharm安装scrapy包

    [转]http://www.cnblogs.com/xiaoli2018/p/4566639.html

  7. CMWAP上网补丁描述文件!!支持ios9

    由于ios移动4G使用cmnet网络,某些情况下需要使用cmwap,因此就有了这些文字... 两个网址都可以: http://www.clore.net/iphone/cmwap.html https ...

  8. Ubuntu设置中文-以及-安装拼音输入法

    2017-11-12更新 安装搜狗拼音: http://blog.csdn.net/iamplane/article/details/70447517 ------------------------ ...

  9. 跟着百度学PHP[10]-读取COOKIE案例

    <?php if(!isset($_COOKIE['visittime'])){ #使用$_COOKIE获取visittime,如果不存在就执行下面的语句块,否则执行else setcookie ...

  10. js 開始时间,当前时间,结束时间的比較

    //開始时间不能小于当前时间 function startTimeIsBigThanTotay(startTime){ var startdate = new Date((startTime).rep ...