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

本文介绍了一种使用jQuery实现的将表单数据序列化为JSON格式,并通过AJAX POST请求发送到服务器的方法。同时展示了如何在Spring框架下利用@RequestBody注解接收并处理这些JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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() + "\t" + dogBean.getDogname());
        return null;
    }
  • 如果这里不加@RequestBody ,那么将无法将request里的参数封装到dogBean中,因为request里的数据格式是json格式,而自动封装的格式为“dogid=1&dogname=dog1” 这种格式才能自动封装。

 

转载于:https://www.cnblogs.com/shyroke/p/7778496.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值