前言

目前前后端分离后,接口大多数返回给前端的都是json数据,那么我尝试用SpringMVC4的Controller返回json。demo过程中遇到了几个问题写出来和java初学者分享一下。

开发环境

idea2016、jdk1.8、tomcat7

SpringMVC4、jackson2.5

开发问题

1、SpringMVC4如果想返回json的话可以使用ResponseBody、ResponseEntity注解,如果你打算返回注解而没有引用json处理jar包,访问http://localhost:8080/rest/users时会提示http 406。

2、SpringMVC4版本后json序列化必须使用jackson相关,jackson-annotations-2.5.0.jar,jackson-core-2.5.0.jar,jackson-databind-2.5.0.jar。我开始用的fastjson但会报错:

Java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException

项目配置文件

初学Spring,配置文件是最烦神的,概括看来首先下载jar包,你需要关注pom.xml、其次是web.xml、spring-mvc.xml。

1、pom.xml

 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.12</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.0</version></dependency></dependencies>

2、web.xml

<web-app><display-name>Archetype Created Web Application</display-name><!-- Spring监听 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><servlet><servlet-name>MVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>MVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

3、spring-mvc.xml

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 注解驱动 --><mvc:annotation-driven /><!-- 扫描包 --><context:component-scan base-package="com.autohome.controller" /><!-- 视图解析 --><bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"><!-- 返回的视图模型数据需要经过jstl来处理 --><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean><bean id="stringConverter"class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value></list></property></bean><bean id="jsonConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="stringConverter" /><ref bean="jsonConverter" /></list></property></bean></beans>

OK, 可以编写rest controller了。

@Controller
@RequestMapping("/rest")
public class RestController {@RequestMapping(value="/sayHello",method = RequestMethod.GET)public @ResponseBodyString sayHello(){return "{\"returncode\":0,\"message\":\"hello world\"}";}@RequestMapping(value="/users")public ResponseEntity<List<User>> listAllUser(){List<User> list =new ArrayList<User>();User user =new User();user.setId(1);user.setName("test");user.setAge(30);User user2 =new User();user2.setId(2);user2.setName("test1");user2.setAge(30);list.add(user);list.add(user2);return new ResponseEntity<List<User>>(list, HttpStatus.OK);}@RequestMapping(value="/user/{id}",method = RequestMethod.GET)public ResponseEntity<User> getUser(@PathVariable long id){System.out.println("id:"+id);User user =new User();user.setId(1);user.setName("test");user.setAge(30);return new ResponseEntity<User>(user,HttpStatus.OK);}}

  

输入http://localhost:8080/rest/users、http://localhost:8080/rest/user/1/  ,第一个SpringMVC demo搞定。

转载于:https://www.cnblogs.com/sword-successful/p/6402562.html

SpringMVC4返回json相关推荐

  1. SpringMVC4 返回Json数据

    在SpringMVC4之后jacksonx.jar 都有更改.如果报NoClassDefFoundError错误,一般都会提示no convert type,那么更改一下jackson相关jar包: ...

  2. Spring MVC--使用Jackson返回JSON格式数据

    使用Jackson返回JSON格式数据 index.jsp <%@ page language="java" contentType="text/html; cha ...

  3. php将json分页,php处理分页数据并返回json

    header('content-type:application/json;charset=utf-8');//设置浏览器解析格式为json header('Access-Control-Allow- ...

  4. python response.json()报错_Django JsonResponse json格式报错 解决Django响应JsonResponse返回json格式数据报错问题...

    想了解解决Django响应JsonResponse返回json格式数据报错问题的相关内容吗,彭世瑜在本文为您仔细讲解Django JsonResponse json格式报错的相关知识和一些Code实例 ...

  5. HTML POST提交参数给PHP并返回json,上传execl文件

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 需求:AJAX post带参数请求接口,PHP接收后存入数据库:然后返回json数据循环渲染到HTML ...

  6. SpringMVC 返回json

    1.页面传递json数据,ajax传递 jsp <script type="text/javascript">$(document).ready(function(){ ...

  7. Spring MVC 返回json数据 报406错误 问题解决方案

    将jackson jar包改为jackson-databind-2.5.0.jar  jackson-core-2.5.0.jar  jackson-annotations-2.5.0.jar(这个版 ...

  8. Mui.ajax请求服务器正确返回json数据格式

    ajax: mui.ajax('http://server-name/login.php',{data:{username:'username',password:'password'},dataTy ...

  9. 返回json格式数据乱码

    本文为博主原创,未经允许不得转载: 原本返回json格式数据的代码: @ResponseBody@RequestMapping(value = "getListByTime", m ...

最新文章

  1. 你的微服务敢独立交付么?
  2. SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍
  3. placeholder调整颜色
  4. c++ 拷贝构造函数_禁止拷贝构造,禁止bug
  5. Servlet实现登录注册
  6. PHP算法向数组的头插入带键的元素
  7. Oracle入门(十四)之PL/SQL
  8. (计算机组成原理)第二章数据的表示和运算-第二节1:定点数的表示(原码、反码、补码和移码)
  9. Codeforces Round #409 C. Voltage Keepsake(二分+思维)
  10. R语言自然语言处理:情感分析
  11. Linux安装deb安装包命令
  12. 数学之美——google大脑和人工神经网络
  13. IE浏览器怎么设置兼容性 添加兼容站点方法
  14. python Click库知识点汇总
  15. 华为软件精英挑战赛参赛感悟
  16. 塔防游戏制作教程(三)
  17. Visual SLAM 笔记——李群和李代数详解
  18. mumu模拟器网络问题相关处理
  19. IKBC-DC87无线连接方法
  20. 游戏编程中的人工智能技术--神经网络

热门文章

  1. Django中自定义过滤器的使用
  2. css3属性:美化表单、点击元素产生的背景与边框怎么去掉,滚动回弹效果
  3. 课堂练习之谁是水王(一)
  4. 理解sqlalchemy与ORM
  5. 12套经典java实战教程下载链接
  6. winphone8更换帐号问题的几点说明
  7. 动态修改页面Meta 标签 keywords description
  8. ruby watir 登陆邮箱
  9. 白领丽人:这六行盛产“钻石王老五”
  10. 搭载鸿蒙处理器的手机,荣耀Magic3被曝光,或采用安卓与鸿蒙双系统,搭载麒麟9000处理器...