Spring MVC返回JSON数据

xiaoxiao2021-02-28  41

出处:http://blog.csdn.net/yh_zeng2 http://blog.csdn.net/yh_zeng2/article/details/77074037

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

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

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

例子:

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

[html] view plain copy print ? <!– 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 –>   <!-- 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视图解析器:

[html] view plain copy print ?    <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>   <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:

[java] view plain copy print ? 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对象),默认是singleton  public 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}”);      }    }   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对象),默认是singleton public 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

<script> $(".MathJax").remove(); </script> <script type="text/javascript" src="//static-blog.csdn.net/mdeditor/public/res/bower-libs/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> </div>
转载请注明原文地址: https://www.6miu.com/read-2612423.html

最新回复(0)