Spring MVC返回JSON数据

来源:互联网 发布:数据库副本 编辑:程序博客网 时间:2024/05/20 09:21

Spring MVC对JSON数据的返回提供了良好的支持,现在介绍三种方式:

  • 使用@ResponseBody标注
  • 使用ResponseEntity
  • 使用HttpServletResponse对象返回JSON数据

注意:方式一和方式二,都依赖jackson-databind-版本号.jar、jackson-annotations-版本号.jar、jackson-core-版本号.jar 这几个jar包,也就是项目要导入这三个jar包,并且要定义Json视图解析器!!


例子:

pom.xml文件中添加以下内容,让项目添加所需要的相关的jackson包:

<!-- JACKSON包,让Spring MVC支持JSON视图的解析以及返回JSON数据进行呈现 --><!-- jackson-databind-版本号.jar 依赖以下两个包,也会自动添加进来      jackson-annotations-版本号.jar  jackson-core-版本号.jar   例如:jackson-databind-2.5.4.jar,就依赖jackson-annotations-2.5.0.jar和jackson-core-2.5.4.jar这两个包--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.4</version></dependency><!-- end -->
Json视图解析器:

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"><property name="order" value="1" /><property name="defaultViews"><list><!-- Json视图 --><bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/></list></property></bean>
ReturnJsonController.java:

package edu.mvcdemo.controller;import javax.servlet.http.HttpServletResponse;import org.springframework.context.annotation.Scope;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import edu.mvcdemo.model.User;/** * @编写人: yh.zeng * @编写时间:2017-8-7 下午10:12:26 * @文件描述: Controller返回JSON数据的demo */@Controller@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singletonpublic class ReturnJsonController {/** * 方式一:使用@ResponseBody标注 * @param userId * @return */@ResponseBody@RequestMapping(value="/jsontype/view1/users/{userId}", method=RequestMethod.GET)public User getUserInJson(@PathVariable("userId") Integer userId){User user = new User();       user.setNo(userId);       user.setUserName("user"+userId);return user;}/** * 方式二:使用ResponseEntity * @param userId * @return */@RequestMapping(value="/jsontype/view2/users/{userId}", method=RequestMethod.GET)public ResponseEntity<User> getUserInJson2(@PathVariable("userId") Integer userId){User user = new User();       user.setNo(userId);       user.setUserName("user"+userId);return new ResponseEntity<User>(user, HttpStatus.OK);}/** * 方式三:使用HttpServletResponse对象返回JSON数据 * @param userId * @param response * @throws Exception */@RequestMapping(value="/jsontype/view3/users/{userId}", method=RequestMethod.GET)public void getUserInJson3(@PathVariable("userId") Integer userId, HttpServletResponse response) throws Exception{response.setContentType("application/json");response.getWriter().println("{\"no\":"+userId+",\"userName\":\"user"+userId+"\",\"age\":null}");}}


项目demo:https://github.com/zengyh/MavenSpringMvcDemo.git