欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

欢迎跳转到本文的原文链接:https://honeypps.com/java/spring-mvc-annotation-responsebody/

博主习惯性用SpringMVC的@ResponseBody注解返回JSON字符串,原先采用的方法是GSON将对象转换成json字符串。(需要引入gson-2.x.x.jar的jar包)

 @ResponseBody@RequestMapping(value = "/cpuUsage.do", produces = "text/html;charset=UTF-8")public String getCpuUsage(@RequestParam(value = "name", required = true) String clusterName){logger.info("/charts/cluster/cpuUsage.do?name=" + clusterName);String ans = null;try{ans = clusterChartsService.getCpuUsage(clusterName);logger.info(ans);}catch (InstantiationException | IllegalAccessException | RuntimeFaultFaultMsg | DatatypeConfigurationException| NullPointerException | ConnectException | XMLStreamException e){logger.error(e.getMessage());}return ans;}

如上代码所示,Controller的返回值就为String类型。
在getCpuUsage()方法中:

 public String getCpuUsage(String clusterName) throws RuntimeFaultFaultMsg, DatatypeConfigurationException,InstantiationException, IllegalAccessException, ConnectException, XMLStreamException{double value = MoniterWsInterface.getClusterCpuUsageByClusterName(clusterName);Charts charts = new Charts(value, new Date());String ans = Gson.class.newInstance().toJson(charts);return ans;}

采用Gson将对象转换成JSON字符串,然后返回给前端调用。

但是有些读者可能了解到Spring的@ResponseBody可以自动将对象转换为JSON对象然后返回给前端,这里项目中需要加入两个jar包:jackson-core-asl-1.9.x.jar和jackson-mapper-asl-1.9.x.jar。然后在springMVC的配置文件中加入:

<mvc:annotation-driven />

这句即可,也可以显示的标注,即在springMVC的配置文件中加入:

 <beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><ref bean="mappingJacksonHttpMessageConverter" /></property></bean><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean>

这样就可以采用@ResponseBody注解自动将对象(包括普通对象,List对象,Map对象等)转换为JSON.

 @RequestMapping("/test.do")@ResponseBodypublic List<String> test(){List<String> list = new ArrayList<String>();list.add("zzh1");list.add("zzh1");list.add("zzh2");list.add("字符串");return list;}

如上代码可以看到直接返回一个List的对象,这里springMVC的@ResponseBody标签会自动采用jackson讲对象转换为JSON。

这里有个小坑。在@ResponseBody注解上面还有一个@RequestMapping注解,有时候需要显示的标注一些信息,如:

@RequestMapping(value = "/test.do", produces = "application/json;charset=UTF-8")

如果这里的produces=“text/html,charset=UTF-8”就会报错:HTTP406的错误。所以这里要特别的小心。

好了@ResponseBody的相关知识先说到这里,以后继续补充。

欢迎跳转到本文的原文链接:https://honeypps.com/java/spring-mvc-annotation-responsebody/

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

SpringMVC中@ResponseBody的相关注意点相关推荐

  1. SpringMVC中@ResponseBody和@RequestBody的使用

    - @ResponseBody:该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给 ...

  2. SpringMVC学习笔记:springMVC中相关细节

    SpringMVC中相关细节 1.什么是MVC? MVC是一种软件架构思想,将软件按照模型.视图.控制器来划分. ①M:模型层:指工程中的javaBean,作用是处理数据.javaBean分为两类:一 ...

  3. SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法

    1.SpringMVC中通过@ResponseBody返回对象,作为JQuery中的ajax返回值 package com.kuman.cartoon.controller; import java. ...

  4. SpringMVC中使用@ResponseBody注解标注业务方法

    SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面 导包: 除了一些spring的包之外,还需要jackson-annotations.jar ...

  5. SpringMVC中注解@RequestBody和@ResponseBody的使用区别

    首先上源码 在面试时经常会问到我们如何使用SpringMVC将Http请求转换为java对象,或者又是问如何将结果转换为java的呢? SpringMVC在接收到请求之后HandlerMapping像 ...

  6. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)

    Spring3.1开始使用新的HandlerMapping 和 HandlerAdapter 来支持@Contoller 和@RequestMapping注解处理:处理器映射RequestMappin ...

  7. 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案

    在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@Reque ...

  8. SpringMVC中的文件上传与下载,json转换,及三大框架的整合

    文章目录 文件上传 准备一个文件上传的表单 导入文件上传需要的jar包 配置文件上传解析器 编写文件上传的Controller控制器中的代码: 使用ResponseEntity返回值处理文件下载 使用 ...

  9. springmvc中ajax,springmvc中ajax处理

    1.使用HttpServletResponse处理--不需要配置解析器 @Controller public class AjaxController { @RequestMapping(" ...

最新文章

  1. Matlab中bwlabel函数的使用
  2. docker 异常:“fork/exec /proc/self/exe: no such file”
  3. AtCoder ARC 090 E / AtCoder 3883: Avoiding Collision
  4. 教你使用TensorFlow2判断细胞图像是否感染
  5. 函数声明指令(stdcall, cdecl,pascal,register)
  6. java输入正确的信息_判断用户输入的信息是否正确
  7. 动态ip软件win7_IPXE+ISCSI Target安装WIN7
  8. c++ 读文件_python中文件的使用
  9. 关于Angular样式封装
  10. IPv6 gre隧道、路由协议综合实验(华为设备)
  11. 2.struts2 Actions动作 - ActionSupport
  12. Intellij IDEA2017安装破解
  13. loj507(dp)
  14. 上传下载Linux系统指定目录的文件
  15. 微服务-微服务为什么要用到 API 网关
  16. python3 删除指定文件夹重复文件
  17. 可视化降维方法 t-SNE
  18. SQL Compare数据库如何解决部署时出现的错误
  19. Python 一个抓取糗百的段子的小程序
  20. React Hooks 18 useEffect 执行2次或多次

热门文章

  1. 老的消息中间件投递失败的类型值_图文结合了解一下Java消息中间件的概述
  2. jsp页面调用ajax,在jsp中使用jquery的ajax
  3. MakeFile中文手册(免费下载)-徐海兵整理
  4. IDEA使用从Eclipse过来的快捷键
  5. 【AngularJS】—— 8 自定义指令
  6. Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库...
  7. MIT 学生挑战新泽西索取挖矿程序源代码的要求
  8. 神奇的事情,不同进程监听同一个端口,居然都成功
  9. 10.10SSD安装盘clover 下开启trim功能
  10. jquery的$.each和$().each