自定义View系列教程00–推翻自己和过往,重学自定义View

自定义View系列教程01–常用工具介绍

自定义View系列教程02–onMeasure源码详尽分析

自定义View系列教程03–onLayout源码详尽分析

自定义View系列教程04–Draw源码分析及其实践

自定义View系列教程05–示例分析

自定义View系列教程06–详解View的Touch事件处理

自定义View系列教程07–详解ViewGroup分发Touch事件

自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症

深入探讨Android异步精髓Handler

详解Android主流框架不可或缺的基石

站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础

Android多分辨率适配框架(2)— 原理剖析

Android多分辨率适配框架(3)— 使用指南


有时浏览器发送给服务器的请求数据是JSON格式;有时服务器返回给浏览器的数据是JSON格式。那么,SpringMVC是怎么支持JSON格式的呢?在SpringMVC可用@RequestBody和@ResponseBody这两个注解来处理JSON数据。

@RequestBody注解用于读取http请求的内容,通过SpringMVC提供的HttpMessageConverter接口将读到的内容转换为Object并绑定到controller方法的参数上。

@ResponseBody注解用于将Controller的方法返回的对象通过HttpMessageConverter接口转换为指定格式的数据(如:json,xml等)后再通过Response响应给客户端

在本篇博客中,我们举两个例子:

第一个例子:请求数据的格式为JSON,返回数据的格式也为JSON

第二个例子:请求数据的格式为Object,返回数据的格式为JSON

具体实现,请往下看。


第一步:配置springmvc.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"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xsi:schemaLocation="http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  10. http://www.springframework.org/schema/mvc
  11. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  12. http://www.springframework.org/schema/context
  13. http://www.springframework.org/schema/context/spring-context-3.2.xsd
  14. http://www.springframework.org/schema/aop
  15. http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  16. http://www.springframework.org/schema/tx
  17. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
  18. <!-- 配置自动扫描 -->
  19. <context:component-scan base-package="cn.com"></context:component-scan>
  20. <!-- 配置注解开发所需的处理器映射器-->
  21. <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
  22. <!-- 配置注解开发所需的处理器适配器 -->
  23. <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  24. <property name="messageConverters">
  25. <list>
  26. <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
  27. </list>
  28. </property>
  29. </bean>
  30. <!-- 视图解析器 -->
  31. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  32. <property name="prefix" value="/WEB-INF/jsps/"></property>
  33. <property name="suffix" value=".jsp"></property>
  34. </bean>
  35. </beans>

请注意,在处理器适配器中配置消息转换器messageConverters


第二步:编写jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>测试SpringMVC对于JSON数据的处理</title>
  7. <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.js">
  8. </script>
  9. <script type="text/javascript">
  10. //第一个例子:请求数据的格式为JSON,返回数据的格式也为JSON
  11. function requestJsonData(){
  12. var userJSON = JSON.stringify({id : "9527",username : "周星星",sex : "男",address : "香港"});
  13. $.ajax({
  14. type : 'POST',
  15. url : '${pageContext.request.contextPath}/json/requestJson.do',
  16. contentType : 'application/json;charset=utf-8',
  17. dataType: 'json',
  18. data : userJSON,
  19. success : function(data) {
  20. alert(data.username + "," + data.id + "," + data.sex + "," + data.address);
  21. }
  22. })
  23. }
  24. //第二个例子:请求数据的格式为Object,返回数据的格式为JSON
  25. function requestObjectData() {
  26. $.ajax({
  27. type : 'POST',
  28. url : '${pageContext.request.contextPath}/json/requestObject.do',
  29. contentType :'application/x-www-form-urlencoded;charset=utf-8',
  30. dataType: 'json',
  31. data : 'id=9527&username=周星星&sex=男&address=香港',
  32. success : function(data) {
  33. alert(data.username + "," + data.id + "," + data.sex + ","+ data.address);
  34. }
  35. })
  36. }
  37. </script>
  38. </head>
  39. <body>
  40. <br>
  41. <input type="button" onclick="requestJsonData()" value="第一个例子:请求数据的格式为JSON,返回数据的格式也为JSON">
  42. <br>
  43. <br>
  44. <input type="button" onclick="requestObjectData()" value="第二个例子:请求数据的格式为Object,返回数据的格式为JSON">
  45. </body>
  46. </html>
  • 在AJAX中利用dataTye表示服务器返回的数据类型
  • 在AJAX中利用contentType表示发送的数据的类型
  • 在AJAX中利用data表示发起请求时携带至服务器的数据
  • 在AJAX中利用success : function(data) {}表示请求的回调,其中data表示服务器返回的数据

在第一个例子中:请求数据的格式为JSON,服务器返回的数据的格式也为JSON。

在第二个例子中:请求数据的格式为Object,服务器返回的数据的格式也为JSON。

运行后效果如下:


第三步:实现Controller

  1. /**
  2. * @author 原创作者:谷哥的小弟
  3. * @blog 博客地址:http://blog.csdn.net/lfdfhl
  4. * @time 创建时间:2017年7月30日 上午8:38:26
  5. * @info 描述信息:SpringMVC对于JSON数据的处理
  6. */
  7. package cn.com.controller;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestBody;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.ResponseBody;
  12. import cn.com.domain.User;
  13. @Controller
  14. @RequestMapping("/json")
  15. public class AnnotationController {
  16. //第一个例子:请求数据的格式为JSON,返回数据的格式也为JSON
  17. @RequestMapping("requestJson")
  18. public @ResponseBody User requestJson(@RequestBody User user){
  19. System.out.println(user);
  20. //模拟服务端返回的数据
  21. User responseUser=user;
  22. return responseUser;
  23. }
  24. //第二个例子:请求数据的格式为Object,返回数据的格式为JSON
  25. @RequestMapping("requestObject")
  26. public @ResponseBody User requestObject(User user){
  27. System.out.println(user);
  28. //模拟服务端返回的数据
  29. User responseUser=user;
  30. return responseUser;
  31. }
  32. }

在第一个例子中:利用@RequestBody注解将页面传递过来的参数转换为User类对象user;@ResponseBody注解会将方法返回的User类对象responseUser转换为JSON数据返回至浏览器

在第二个例子中:@ResponseBody注解会将方法返回的User类对象responseUser转换为JSON数据返回至浏览器

SpringMVC札集(07)——JSON数据的更多相关文章

  1. springmvc学习笔记(18)-json数据交互

    springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...

  2. 【SpringMVC学习09】SpringMVC与前台的json数据交互

    json数据格式在接口调用中.html页面中比较常用,json格式比较简单,解析也比较方便,所以使用很普遍.在springmvc中,也支持对json数据的解析和转换,这篇文章主要总结一下springm ...

  3. (转)SpringMVC学习(十)——SpringMVC与前台的json数据交互

    http://blog.csdn.net/yerenyuan_pku/article/details/72514022 json数据格式在接口调用中.html页面中比较常用,json格式比较简单,解析 ...

  4. ajax传递json数据,springmvc后台就收json数据

    1.ajax数据的封装 var json = {"token":token};//封装json数据 $.ajax({ url:'', data:JSON.stringify(jso ...

  5. springmvc 使用jq传递json数据时出现415错误

    出现415错误是因为解析json时出现了错误,通过排查几点就能解决. 样例: <script> function requestByJson() { var datatest = {&qu ...

  6. SpringMVC札集(10)——SSM框架整合

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  7. SpringMVC札集(08)——文件上传

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  8. SpringMVC札集(05)——SpringMVC参数回显

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  9. SpringMVC札集(01)——SpringMVC入门完整详细示例(上)

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

随机推荐

  1. Hive压缩格式

    TextFile Hive数据表的默认格式,存储方式:行存储. 可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split 但在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此 ...

  2. CentOS(64位)安装apr

    安装apr来提高tomcat 的可伸缩性和性能 cd /usr/local/ 1.  下载apr 和 apr-util最新版 wget http://apache.fayea.com/apache-m ...

  3. 转:eclipse与myeclipse恢复已删除的文件和代码

  4. 动态规划入门-01背包问题 - poj3624

    2017-08-12 18:50:13 writer:pprp 对于最基础的动态规划01背包问题,都花了我好长时间去理解: poj3624是一个最基本的01背包问题: 题意:给你N个物品,给你一个容量 ...

  5. Java 1.7 ThreadPoolExecutor源码解析

    Java中使用线程池技术一般都是使用Executors这个工厂类,它提供了非常简单方法来创建各种类型的线程池: public static ExecutorService newFixedThread ...

  6. finally是否执行?finally何时执行?

    一.finally是否执行: 1.只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行当finally 相对应的 try 语句块之前,已经抛出错误,或者已经 ...

  7. 一切从Trade开始(转)

    taobao.trades.sold.get 取得交易列表 从店铺取得时间 taobao.shop.get (nick,field)shop.created 循环读取从开店时间到当前时间的所有交易 t ...

  8. 用if写一个备份mysql的脚本

    #!/bin/bash # 备份数据库 BAK_DIR=/data/backup/`date +%Y%m%d` MYSQLDB=dexin MYSQLUSER=root MYSQLPW=123456 ...

  9. js添加事件 attachEvent 和addEventListener的用法

    一般我们在JS中添加事件,是这样子的: obj.onclick = method 这种绑定事件的方式,兼容主流浏览器,但是如果一个元素上添加多次同一个事件呢??? obj.onclick = meth ...

  10. logback配置日志输出

    <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> & ...