zoukankan      html  css  js  c++  java
  • 2.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:

    转自:https://www.cnblogs.com/ssslinppp/p/4528892.html
    个人认为,使用@ResponseBody方式来实现json数据的返回比较方便,推荐使用。

    摘要


    本文讲解另外一种利用spring MVC返回json数据的方法。

     

    前文回顾


    在《【Spring学习笔记-MVC-3】返回Json数据-方式1》中介绍了通过:
    1.  @ResponseBody声明返回值;
    2. 配置<mvc:annotation-driven />;
    来返回json数据。效果如下:
      ==>
    从上面的效果看,只能返回一个对象,不能返回多个对象,不能做到形如下图的返回结果,
    存在局限性(可能可以返回多个,自己不知道如何实现)。
    下面介绍的方式2,利用spring mvc返回json数据,可以实现同时返回多个对象的json数据
    特别说明:
    使用@ResponseBody可以实现同样的效果,实现同时返回多个对象的Json数据,而且使用@ ResponseBody方式更简洁。具体请参考《【Spring学习笔记-MVC-4】返回Json数据-方式1-kuozh》。
     

    spring mvc实现json数据返回


    具体步骤:
    1. 引入额外jar包:
    2. 使用bean视图解析器: org.springframework.web.servlet.view.BeanNameViewResolver;
    3. 使用 org.springframework.web.servlet.view.json.MappingJacksonJsonView配置需要返回的对象;
    4. 声明:<mvc:annotation-driven />;   经测试,不添加这个声明,将出错;
    说明:
    spring mvc默认的最常用的视图解析器为org.springframework.web.servlet.view.InternalResourceViewResolver

    它的优先级默认是最低的,spring mvc还提供了许多其他类型的视图解析器,比如bean视图解析器

    等,每个视图解析器的优先级都是可以手动设置的。在进行视图解析时,按照视图解析器优先级的顺序去解析视图,直到有视图解析器可以进行解析,解析过程就停止。
     
    项目结构

     
     
    配置web.xml

     

    1. <web-app id="WebApp_ID" version="2.4"
    2. xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    4. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    5. <display-name>Spring Web MVC Application</display-name>
    6. <context-param>
    7. <param-name>contextConfigLocation</param-name>
    8. <param-value>classpath:applicationContext.xml</param-value>
    9. </context-param>
    10. <listener>
    11. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    12. </listener>
    13. <servlet>
    14. <servlet-name>mvc-dispatcher</servlet-name>
    15. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    16. <load-on-startup>1</load-on-startup>
    17. </servlet>
    18. <servlet-mapping>
    19. <servlet-name>mvc-dispatcher</servlet-name>
    20. <url-pattern>/rest/*</url-pattern>
    21. </servlet-mapping>
    22. </web-app>
     

     
    配置mvc-dispatcher-servlet.xml

     

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:context="http://www.springframework.org/schema/context"
    3. xmlns:p="http://www.springframework.org/schema/p"
    4. xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5. xsi:schemaLocation="
    6. http://www.springframework.org/schema/beans
    7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    8. http://www.springframework.org/schema/context
    9. http://www.springframework.org/schema/context/spring-context-3.0.xsd
    10. http://www.springframework.org/schema/mvc
    11. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    12. <context:component-scan base-package="com.ll.controller" />
    13. <mvc:annotation-driven />
    14. <!-- bean视图解析器 -->
    15. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"
    16. p:order="10" />
    17. <!-- XMl及JSON视图解析器配置 -->
    18. <!-- <bean id="userListJson"
    19. class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"
    20. p:renderedAttributes="userList" /> -->
    21. <bean id="userListJson"
    22. class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
    23. <property name="renderedAttributes">
    24. <set>
    25. <value>userList</value>
    26. <value>School</value>
    27. <value>Work</value>
    28. </set>
    29. </property>
    30. </bean>
    31. </beans>

    说明:
    如果仅仅返回一个对象的json数据,可以使用简写配置:

     
    JSONController.java

     
     
    执行过程解析

    1. 在mvc-dispatcher-servlet.xml文件中我们配置了bean视图解析器,并设置器优先级为10,
    它的优先级是高于
    2.逻辑视图返回值为:userListJson
    它首先会被bean视图解析器解析,解析发现 userListJson对应的bean为:userListJson,其对应的视图为:MappingJacksonJsonView;

    这样,便将userlist、School和work转化为json数据,并返回前台。
     
     
    运行

    浏览器: http://localhost:8080/SpringMVCQs/rest/kfc/brands/showUserListByJson 
     
    完整程序

    JSONController.java
    1. package com.ll.controller;
    2. import java.util.ArrayList;
    3. import java.util.List;
    4. import org.springframework.stereotype.Controller;
    5. import org.springframework.ui.ModelMap;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestMethod;
    8. import org.springframework.web.bind.annotation.ResponseBody;
    9. import com.ll.model.Person;
    10. import com.ll.model.Shop;
    11. @Controller
    12. @RequestMapping("/kfc/brands")
    13. public class JSONController {
    14. @RequestMapping(value="/getShopInJson", method = RequestMethod.GET)
    15. public @ResponseBody Shop getShopInJSON() {
    16. System.out.println("-----请求json数据--------");
    17. Shop shop = new Shop();
    18. shop.setName("zhangsan");
    19. shop.setStaffName(new String[]{"mkyong1", "mkyong2"});
    20. return shop;
    21. }
    22. @RequestMapping(value = "/showUserListByJson")
    23. public String showUserListInJson(ModelMap mm) {
    24. List<Person> userList = new ArrayList<Person>();
    25. Person user1 = new Person();
    26. user1.setUsername("tom");
    27. user1.setPasswd("汤姆");
    28. Person user2 = new Person();
    29. user2.setUsername("john");
    30. user2.setPasswd("约翰");
    31. userList.add(user1);
    32. userList.add(user2);
    33. mm.addAttribute("userList", userList);
    34. mm.addAttribute("School","SuZhou");
    35. mm.addAttribute("Work","YanFa");
    36. return "userListJson";
    37. }
    38. }

     





    附件列表

    转载请标明出处:http://www.cnblogs.com/ssslinppp/《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:
  • 相关阅读:
    LeetCode 382. Linked List Random Node
    LeetCode 398. Random Pick Index
    LeetCode 1002. Find Common Characters
    LeetCode 498. Diagonal Traverse
    LeetCode 825. Friends Of Appropriate Ages
    LeetCode 824. Goat Latin
    LeetCode 896. Monotonic Array
    LeetCode 987. Vertical Order Traversal of a Binary Tree
    LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
    LeetCode 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/sharpest/p/5764648.html
Copyright © 2011-2022 走看看