我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继续处理返回页面的,而不是直接返回给客户端的。有时候我们需要发请求后让服务端直接返回一些数据,不再经过DispatcherServlet,这个时候通常有两种方式:

1.使用@ResponseBody注解

  该注解的作用是把方法返回结果转成json或xml格式并进行返回,不管要返回什么类型的数据,是String还是一个对象,只要是需要请求后想直接返回Json或xml类型的数据,那么就都可以使用这个注解。

  注意:这里@ResponseBody的格式转换是将class类型如一个javabean,map,list等类型进行转换,转换后的结果是一个json对象,如果想返回一个json字符串,那么就需要自己手动处理成json串的格式,json串也就是一个String,这时@ResponseBody就只起到把这个String返回的作用,示例代码如下:

@RequestMapping("/jsontest")
@ResponseBody
public List<User> jsonTest(){
//直接返回json串
//String test1 ="{\"name\":\"zhangsan\"}";
//会直接返回这样一个字符串
//String test2 = "this is test"; //以下会把List类型转换为[{},{}]这样的数组形式的json对象返回
User user1 = new User();
user1.setLoginName("zhangsan");
user1.setCompany("dept1");
User user2 = new User();
user2.setLoginName("lisi");
user2.setCompany("dept2");
List<User> list = new ArrayList<User>();
list.add(user1);
list.add(user2);
return list;
}
总结:一般@ResponseBody注解会将map,JavaBean 对象,如User自动转成{"":"","":""}这种json的对象表示形式,会将list转成[a,b,c]这种json的数组表示形式,而String类型的数据
则会直接原样输出。

2.使用response对象返回。

 这种方式就是自己进行数据格式转换,使用response对象进行返回。
response.setContentType("application/json");
response.getWriter().write(resultString);

Spring MVC中返回JSON数据的几种方式的更多相关文章

  1. MVC中返回json数据的两种方式

    MVC里面如果直接将数据返回到前端页面,我们常用的方式就是用return view(): 那么我不想直接用razor语法,毕竟razor这玩意儿实在是太难记了,还不如写ajax对接来得舒服不是 那么我 ...

  2. 【spring】 SpringMVC返回json数据的三种方式

    配置方法一 **1.导入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar. 2.spring配置文件添加** & ...

  3. spring mvc 返回json数据的四种方式

    一.返回ModelAndView,其中包含map集 /* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式 ...

  4. JavaWeb 返回json数据的两种方式

    1.说明 由于一般情况下,由浏览器(前端)发送请求,服务器(后台)响应json数据,所以这里结合js进行说明: A服务器发送请求至B服务器,并接收其返回的json数据,见文末推荐,这里不再赘述! 2. ...

  5. SpringMVC返回json数据的三种方式

    1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean id="defaultJsonView" cla ...

  6. SpringMVC返回json数据的三种方式(转)

    原文:https://blog.csdn.net/shan9liang/article/details/42181345# 1.第一种方式是spring2时代的产物,也就是每个json视图contro ...

  7. spring MVC之返回JSON数据(Spring3.0 MVC)

    方式一:使用ModelAndView的contentType是"application/json" 方式二:返回String的            contentType是&qu ...

  8. Spring MVC中传递json数据时显示415错误解决方法

    在ajax中设置 ContentType为'application/json;charset=utf-8' 传递的data类型必须是json字符串类型:{“key”:"value" ...

  9. ASP.NET Core中返回 json 数据首字母大小写问题

    ASP.NET Core中返回 json 数据首字母大小写问题 在asp.net core中使用ajax请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...

随机推荐

  1. 【Java笔记】【Java核心技术卷1】chapter3 D2注释

    package chapter3; /** * 文档注释 *@author lp *@version 1 **/ public class D2注释 { //单行注释 /* 长注释 */ }

  2. redhat linux 5.3修改Java环境变量

    需要配置的环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把jdk安装目录下的bin目录增 ...

  3. net core Webapi基础工程搭建(六)——数据库操作_Part 1

    目录 前言 SqlSugar Service层 BaseService(基类) 小结 前言 后端开发最常打交道的就是数据库了(静态网站靠边),上一篇net core Webapi基础工程搭建(五)-- ...

  4. java表达式

    JAVA表达式优先级: (如果表达式复杂可直接括号处理) 资源来自尚学堂java视频

  5. 《MyCat分库分表策略详解》

    在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情.常见的分库分表方式有两种:客户端模式和服务器模式,这两种的典型代表有sharding-jdbc和MyCat.所谓的 ...

  6. GIT和SVN教程

    各种版本控制工具的简单比较 特性 CVS SVN GIT 并发修改 支持 支持 支持 并发提交 不支持 支持 支持 历史轨迹 不支持更名 支持更名 支持更名 分布式 不支持 不支持 支持 SVN SV ...

  7. C++的精度控制

    #include <iostream> #include <iomanip> using namespace std; int main( void ) { const dou ...

  8. (四十八)c#Winform自定义控件-下拉按钮

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  9. Python之高阶函数如何理解?

    我们先要了解一下什么是所谓的高阶函数: 看定义:什么是高阶函数? 高阶函数:我们知道一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足 ...

  10. mysql像通讯录一样把中文按字母排序的sql

    select reimer from lendreimbursement_reimburserecord ORDER BY convert(reimer USING gb2312 ) asc; 是用c ...