javascript
SpringMVC中@ResponseBody的相关注意点
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/spring-mvc-annotation-responsebody/
?
博主習(xí)慣性用SpringMVC的@ResponseBody注解返回JSON字符串,原先采用的方法是GSON將對象轉(zhuǎn)換成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將對象轉(zhuǎn)換成JSON字符串,然后返回給前端調(diào)用。
?
但是有些讀者可能了解到Spring的@ResponseBody可以自動將對象轉(zhuǎn)換為JSON對象然后返回給前端,這里項目中需要加入兩個jar包:jackson-core-asl-1.9.x.jar和jackson-mapper-asl-1.9.x.jar。然后在springMVC的配置文件中加入:
?
<mvc:annotation-driven />?
這句即可,也可以顯示的標(biāo)注,即在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對象等)轉(zhuǎn)換為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標(biāo)簽會自動采用jackson講對象轉(zhuǎn)換為JSON。
?
這里有個小坑。在@ResponseBody注解上面還有一個@RequestMapping注解,有時候需要顯示的標(biāo)注一些信息,如:
?
@RequestMapping(value = "/test.do", produces = "application/json;charset=UTF-8")如果這里的produces=“text/html,charset=UTF-8”就會報錯:HTTP406的錯誤。所以這里要特別的小心。
?
好了@ResponseBody的相關(guān)知識先說到這里,以后繼續(xù)補充。
?
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/spring-mvc-annotation-responsebody/
?
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。 超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的SpringMVC中@ResponseBody的相关注意点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA通信编程(五)——串口通讯的补充
- 下一篇: Spring Boot 几条最佳实践!