我们都知道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. Tomcat源码分析 (八)----- HTTP请求处理过程(一)

    终于进行到Connector的分析阶段了,这也是Tomcat里面最复杂的一块功能了.Connector中文名为连接器,既然是连接器,它肯定会连接某些东西,连接些什么呢? Connector用于接受请求 ...

  2. Docker进阶-容器监控cAdvisor+InfluxDB+Granfana

    概述 前面文章介绍使用docker compose组合应用并利用scale快速对容器进行扩容. 由于docker compose启动的服务都在同一台宿主机上,对于一个宿主机上运行多个容器应用时,容器的 ...

  3. Python 竟能绘制如此酷炫的三维图

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  4. windows+appium自动化,Desired Capabilities参数填写,查看界面信息

    前言: 安装JDK并配置环境变量. 安装sdk并配置对应环境变量. 安装appium客户端. 手机打开开发者模式,并启用调试模式. 1.打开Appium客户端,点击Start Server V1.9. ...

  5. Okhttp3源码解析(3)-Call分析(整体流程)

    ### 前言 前面我们讲了 [Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f) [Okhttp3源码解析(1)-OkHttpClient分析]( ...

  6. spring-cloud-config 配置中心快速上手

    spring-cloud-config 配置中心实现 Spring Cloud Config 用于为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,分为server端和client端. s ...

  7. 基于HttpClient4.5.1实现Http访问工具类

    本工具类基于httpclient4.5.1实现 <dependency> <groupId>org.apache.httpcomponents</groupId> ...

  8. Python数据分析之numpy数组全解析

    1 什么是numpy numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于大型.多维数据上执行数值计算. 在NumPy 中,最重要的对象是 ...

  9. tf.nn.l2_loss()的用法

    https://blog.csdn.net/yangfengling1023/article/details/82910536

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

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