zoukankan      html  css  js  c++  java
  • 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:
    1. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html 
    2. 【Spring学习笔记-MVC-4】返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html 
    3. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展:http://www.cnblogs.com/ssslinppp/p/4675495.html 
    文章的内容主要如下:
    1. 方式1:讲解如果返回单个对象的json;==>使用@ResponseBody来实现;注解方式
    2. 方式2:讲解如果返回多个对象的json;==>使用MappingJacksonJsonView来实现;xml配置方式
    3. 方式1-扩展:讲解如果返回多个对象的json;==>使用@ResponseBody来实现;注解方式
    个人认为,使用@ResponseBody方式来实现json数据的返回比较方便,推荐使用。



    摘要


    使用Spring MVC,实现json数据的返回。
    主要步骤:
    1. 额外添加2个jar包;
    2. 使用 @ResponseBody声明返回值;
    3. 配置<mvc:annotation-driven />;==>需要引入:xmlns:mvc="http://www.springframework.org/schema/mvc";

    @ResponseBody:

    作用: 
    该注解用于将Controller方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后(如:json格式),写入到Response对象的body数据区。 
    使用时机:
    返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

    <mvc:annotation-driven /> :

    <mvc:annotation-driven /> 会自动注册
    1. DefaultAnnotationHandlerMapping
    2. AnnotationMethodHandlerAdapter 
    两个bean,这两个bean是spring MVC为@Controllers分发请求所必须的。并提供了数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。


    需要的jar包


    上面两个都是必须的。




    项目结构




    程序代码


    Shop.java
    1. package com.ll.model;
    2. public class Shop {
    3. String name;
    4. String staffName[];
    5. public String getName() {
    6. return name;
    7. }
    8. public void setName(String name) {
    9. this.name = name;
    10. }
    11. public String[] getStaffName() {
    12. return staffName;
    13. }
    14. public void setStaffName(String[] staffName) {
    15. this.staffName = staffName;
    16. }
    17. }

    JSONController.java

    1. package com.ll.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.PathVariable;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. import org.springframework.web.bind.annotation.RequestMethod;
    6. import org.springframework.web.bind.annotation.ResponseBody;
    7. import com.ll.model.Shop;
    8. @Controller
    9. @RequestMapping("/kfc/brands")
    10. public class JSONController {
    11. @RequestMapping(value="{name}", method = RequestMethod.GET)
    12. public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
    13. System.out.println("-----请求json数据--------");
    14. Shop shop = new Shop();
    15. shop.setName(name);
    16. shop.setStaffName(new String[]{"mkyong1", "mkyong2"});
    17. return shop;
    18. }
    19. }

    添加: @ResponseBody作为返回值。


    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:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="
    5. http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    7. http://www.springframework.org/schema/context
    8. http://www.springframework.org/schema/context/spring-context-3.0.xsd
    9. http://www.springframework.org/schema/mvc
    10. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    11. <context:component-scan base-package="com.ll.controller" />
    12. <mvc:annotation-driven />
    13. </beans>

    开启:<mvc:annotation-driven />



    applicationContext.xml
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    6. xsi:schemaLocation="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/tx
    11. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    12. http://www.springframework.org/schema/aop
    13. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    14. <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
    15. <context:component-scan base-package="com.ll.model"/>
    16. </beans>


    运行



    参考网站

    http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/ 










    附件列表

    • 相关阅读:
      Octet string 解析
      c#之process类相关整理
      C# Process.Start()方法详解(转)
      c语言字符串比较函数strcmp
      C# 启动EXE文件及带启动参数EXE
      C语言中两个相等的char值比较 结果为false
      C语言strcmp()函数:比较字符串(区分大小写)
      char数组与char指针
      (转)在.net中序列化读写xml方法的总结
      PHP实现站点pv,uv统计(三)
    • 原文地址:https://www.cnblogs.com/ssslinppp/p/4528892.html
    Copyright © 2011-2022 走看看