• (九)springmvc之json的数据请求(客户端发送json数据到服务端)


    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%
        String path = request.getContextPath();
    %>
    <html>
    
    <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.json-2.4.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.form.js"></script>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript">
    function test_2(){
        var postURL = "<%=request.getContextPath()%>/jsonController/receive_jsonData_2?date="+new Date()+"";
        
        //第2种简单的方法
        var formData = jQuery("#json_form2").serializeArray();
        //将这个数组转为json的对象。
        var jsonData = convertArray(formData);
        
        
        //将json对象转为字符串后,才能发送。
        var jsonDataStr = jQuery.toJSON(jsonData);
        jQuery.ajax({
            //请求
            type:         "POST",
            url:         postURL,
            data:         jsonDataStr,
            contentType:"application/json",      
            //返回
            dataType:    "json",
            success:     function(msg){
                 alert( "Data Saved: " + msg );
            }
        });    
        
    }
    
    function convertArray(o) { //主要是推荐这个函数。它将jquery序列化后的值转为name:value的形式。 
        var v = {}; 
        for (var i in o) { 
            if (typeof (v[o[i].name]) == 'undefined') v[o[i].name] = o[i].value; 
            else v[o[i].name] += "," + o[i].value; 
        }
        return v; 
    } 
    
    </script>
    </head>
    <body>
    
        <form method="post" id="json_form2" action="">
            <input type="text" name="dogid" id="dogid"     value="用户名"/>
            <input type="text" name="dogname" id="dogname" value="复选框1"/>
            <input type="button" value="发送是一个json字符串" onclick="test_2();"/>
        </form>    
    </body>
    </html>

    controller

    /**
         * Spring中接收json对象的2种方式
         * 
         * RequestBody DogBean dogBean
         * 
         * 不加RequestBody,表示接收的是一个普通的GET或者POST的请求,请求中的参数与Bean中的属性一致。 Bean即可接收。
         * 
         * 加RequestBody,表示接收的是一个json字符串的请求数据,Spring会自动将json字符串转成json对象 。
         * 
         *
         */    
    @RequestMapping(value = "/receive_jsonData_2")
        public String receive_jsonData_2(@RequestBody DogBean dogBean) {
            System.out.println("dogBean = " + dogBean);
            System.out.println(dogBean.getDogid() + "	" + dogBean.getDogname());
            return null;
        }
    • 如果这里不加@RequestBody ,那么将无法将request里的参数封装到dogBean中,因为request里的数据格式是json格式,而自动封装的格式为“dogid=1&dogname=dog1” 这种格式才能自动封装。
  • 相关阅读:
    数学(1.费马定理 2.扩展欧几里德算法 3.莫比乌斯反演)
    hdu 3068 最长回文(manacher入门)
    hdu 2594 Simpsons’ Hidden Talents(KMP入门)
    hdu 1671&& poj 3630 (trie 树应用)
    hdu 1251 统计难题(trie树入门)
    poj 2001 Shortest Prefixes(字典树trie 动态分配内存)
    poj 2406 Power Strings(KMP入门,next函数理解)
    hdu 2087剪花布条 (KMP入门 子串出现的次数和子串个数)
    python-操作json
    测试用例-错误推断法
  • 原文地址:https://www.cnblogs.com/shyroke/p/7778496.html
Copyright © 2020-2023  润新知