index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <%
  5. String path = request.getContextPath();
  6. %>
  7. <html>
  8.  
  9. <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery-1.7.2.min.js"></script>
  10. <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.json-2.4.js"></script>
  11. <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.form.js"></script>
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  14. <title>Insert title here</title>
  15. <script type="text/javascript">
  16. function test_2(){
  17. var postURL = "<%=request.getContextPath()%>/jsonController/receive_jsonData_2?date="+new Date()+"";
  18.  
  19. //第2种简单的方法
  20. var formData = jQuery("#json_form2").serializeArray();
  21. //将这个数组转为json的对象。
  22. var jsonData = convertArray(formData);
  23.  
  24. //将json对象转为字符串后,才能发送。
  25. var jsonDataStr = jQuery.toJSON(jsonData);
  26. jQuery.ajax({
  27. //请求
  28. type: "POST",
  29. url: postURL,
  30. data: jsonDataStr,
  31. contentType:"application/json",
  32. //返回
  33. dataType: "json",
  34. success: function(msg){
  35. alert( "Data Saved: " + msg );
  36. }
  37. });
  38.  
  39. }
  40.  
  41. function convertArray(o) { //主要是推荐这个函数。它将jquery序列化后的值转为name:value的形式。
  42. var v = {};
  43. for (var i in o) {
  44. if (typeof (v[o[i].name]) == 'undefined') v[o[i].name] = o[i].value;
  45. else v[o[i].name] += "," + o[i].value;
  46. }
  47. return v;
  48. }
  49.  
  50. </script>
  51. </head>
  52. <body>
  53.  
  54. <form method="post" id="json_form2" action="">
  55. <input type="text" name="dogid" id="dogid" value="用户名"/>
  56. <input type="text" name="dogname" id="dogname" value="复选框1"/>
  57. <input type="button" value="发送是一个json字符串" onclick="test_2();"/>
  58. </form>
  59. </body>
  60. </html>

controller

  1. /**
  2. * Spring中接收json对象的2种方式
  3. *
  4. * RequestBody DogBean dogBean
  5. *
  6. * 不加RequestBody,表示接收的是一个普通的GET或者POST的请求,请求中的参数与Bean中的属性一致。 Bean即可接收。
  7. *
  8. * 加RequestBody,表示接收的是一个json字符串的请求数据,Spring会自动将json字符串转成json对象 。
  9. *
  10. *
  11. */
  12. @RequestMapping(value = "/receive_jsonData_2")
  13. public String receive_jsonData_2(@RequestBody DogBean dogBean) {
  14. System.out.println("dogBean = " + dogBean);
  15. System.out.println(dogBean.getDogid() + "\t" + dogBean.getDogname());
  16. return null;
  17. }
  • 如果这里不加@RequestBody ,那么将无法将request里的参数封装到dogBean中,因为request里的数据格式是json格式,而自动封装的格式为“dogid=1&dogname=dog1” 这种格式才能自动封装。

(九)springmvc之json的数据请求(客户端发送json数据到服务端)的更多相关文章

  1. SpringMVC客户端发送json数据时报400错误

    当测试客户端发送json数据给服务器时,找不到响应路径? 原来是参数类型不符,即使是json也要考虑参数的个数和类型 解决:将age请求参数由"udf"改为"3" ...

  2. ajax数据请求2(json格式)

    ajax数据请求2(json格式) <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  3. socket小程序写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回

    写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回 本机id是192.168.xx.xy 服务端 import socket soc = socket.soc ...

  4. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  5. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  6. 编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)

    查看本章节 查看作业目录 需求说明: 小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱.现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的 ...

  7. WebService或HTTP服务端接收请求转发消息到另一个服务端-实现思路

    1.需求结构(WebService) A客户端<->B服务端<->C服务端 说明: a.在B服务端上面添加配置项(1.是否转发消息到C服务端:2.C服务端IP和端口): b.A ...

  8. 客户端通过HTTP协议与服务端交换数据

        客户端(包括浏览器)通过HTTP协议与服务端交换数据的描述 发起请求 header 键值对中的key大小写不敏感 Accept: application/json Content-Type: ...

  9. curl如何发送json数据?如何发送form数据?python的restfull又该如何获取这些数据?

    1.python使用flask+flask_restfull框架写的api接口,做为服务 2.curl 做为客户端发送数据 from flask import request curl发送json的方 ...

随机推荐

  1. Cookie的使用(js-cookie插件)

    js-cookie 官方文档 里面就详细的介绍了es5怎么引用,以下是ES6以上的用户 一.安装 npm install js-cookie --save 二.引用 import Cookies fr ...

  2. 画布之ShapeDrawable

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...

  3. 002-创建型-01-工厂方法模式(Factory Method)

    一.概述 定义一个创建对象的接口,但让实现这个接口的类来决定实例化那个类,工厂方法让类的实例化推迟到子类中进行. 工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称 ...

  4. win10安装RabbitMQ

    简单来说,两步走:先装erlang,再装rabbitmq.rabbitmq是用erlang开发的,既然erlang是一种语言,你可以把它当做Jdk来安装. 1.下载erlang安装包(官网下载地址ht ...

  5. java代码规范好文推荐

    近期发现一遍好文章 看过之后觉得自己代码存在太多的问题 特此记录一下 和大家一起分享 https://xwjie.github.io/rule/

  6. javascript模拟生成uuid

    function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r ...

  7. Release报错Debug无错

    代码在Release模式下会crash,Debug模式下可以运行,最后定位到原因 for (size_t j = 0; j < ids.size()-1; ++j) { } 发现问题是Relea ...

  8. Linux - Linux命令行常用快捷键

    Common Shortcut Key 用途 快捷键 说明 光标移动 Ctrl + a 把光标移到行首 Ctrl + e 把光标移到行尾 Ctrl + x 在 EOL 和当前位置移动光标 输入编辑 C ...

  9. go context源码解析

    go 的context贯穿整个goroutine的运行控制的中枢,可以实现执行的生命周期的控制. Context是一个接口,他派生了context.emptyCtx(TODO),cancelCtx,t ...

  10. 如何找到linux centos7 中 redis.conf

    我们假设redis正在运行,但是我们找不带redis的配置文件redis.conf. 正确的示范: (1)systemctl status redis ● redis.service - LSB: s ...