本文介绍了在Spring MVC中如何处理jQuery AJAX发送的JSON数据,包括基本类型参数和复杂对象参数的接收与返回。通过示例展示了控制器中不同方法的实现,以及前端如何序列化数据并设置请求头进行POST请求。 摘要生成于 ,由 DeepSeek-R1 满血版支持,              com.fasterxml.jackson.core         jackson-databind         2.4.2     

1.controller中参数是几个单独的基本类型参数,不是对象或者引用类型的

spring MVC-controller java后端--如下3种写法是一致的效果。

    @RequestMapping(value="/testJson1")   
    @ResponseBody//此注解不能省略 否则ajax无法接受返回值 
    public  Map<String,Object> testJson1( String name,String password,String age) {
    	Map<String, Object> result = null;  
        // 打印接收的JSON格式数据
        System.out.println("pname=" + name + ",password="
                + password + ",page=" + age);       
        // 返回JSON格式的响应
        result = new HashMap<String, Object>();  
        result.put("msg", "name="+name);  
        return result;  //返回对象集合,通用写法,既可以返回字符串也可以返回对象集合
    @RequestMapping(value="/testJson2",method=RequestMethod.POST)   
    @ResponseBody//此注解不能省略 否则ajax无法接受返回值(省略这句话返回的是视图jsp页面) 
    public  String testJson2( String name,String password,String age) {
    	Map<String, Object> result = null;  
        // 打印接收的JSON格式数据
        System.out.println("pname=" + name + ",password="
                + password + ",page=" + age);       
        // 返回JSON格式的响应
        result = new HashMap<String, Object>();  
        result.put("msg", "name="+name);  
        return "sssss"+name;  //返回字符串
    @RequestMapping(value="/testJson")
    @ResponseBody
    public  User testJson(User user) {
        // 打印接收的JSON格式数据
        System.out.println("pname=" + user.getName() + ",password="
                + user.getPassword() + ",page" + user.getAge());       
        // 返回JSON格式的响应
        return user;

jQuery  ajax 前端

    function testJson2() {
        //获取输入的值pname为id
        alert($("#name").val());
        var name = $("#name").val();
        var password = $("#password").val();
        var age = $("#age").val();
        var user={ name : name,password : password,age : age};
        $.ajax({
            //请求路径
            url : "${pageContext.request.contextPath }/testJson1.do",
            //请求类型	
            type : "post",
            //data表示发送的数据
            data:user, 
            /*dataType : "json", */ //代表返回的数据类型。这句话不需要,只有在get请求的情况并且返回的是json(如果返回字符串也可以不用写)的情况才用,其他情况可以不写。
            //成功响应的结果
            success : function(data) {
            	console.log(data);

2.controller中参数结构带有复杂类型,如嵌套类型,数组,list集合。

spring MVC-controller java后端

    @RequestMapping(value="/testJson3")
    @ResponseBody
    public  Map<String,Object> testJson3(@RequestBody  User user) {
    	Map<String, Object> result = null;  
        // 打印接收的JSON格式数据
    	System.out.println("pname=" + user.getName() + ",password="
                + user.getPassword() + ",page" + user.getAge()+ ",aihao" + user.getAihao());      
        // 返回JSON格式的响应
        result = new HashMap<String, Object>();  
        result.put("msg", "name="+user.getName());  
        return result;  //返回对象集合,通用写法,既可以返回字符串也可以返回对象集合

jQuery  ajax 前端

 function testJson() {
        //获取输入的值pname为id
        alert($("#name").val());
        var name = $("#name").val();
        var password = $("#password").val();
        var age = $("#age").val();
        var user={ name : name,password : password,age : age,aihao:[1,2,3]};
        $.ajax({
            //请求路径
            url : "${pageContext.request.contextPath }/testJson3.do",
            //请求类型	
            type : "post",
            //data表示发送的数据
            data : JSON.stringify(user),  
            /* data:user, */
            contentType: 'application/json;charset=UTF-8',  
            /*dataType : "json", */ //代表返回的数据类型。这句话不需要,只有在get请求的情况并且返回的是json(如果返回字符串也可以不用写)的情况才用,其他情况可以不写。
            //成功响应的结果
            success : function(data) {
            	console.log(data);				

这里面差别是:

            data : JSON.stringify(user),  //json序列化
            contentType: 'application/json;charset=UTF-8',  

            JAVA User 对象包含的属性有数组 [aihao]。

jdk1.8,spring版本为4.3.3,jackson版本为2.8.9,lombok版本为1.18.10 如果你没有用lombok插件,将下面的@Data注解去掉,添加get和set方法也可以。 applicationContext-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
1、ajax发送请求参数设置 $.ajax({ global: false,/*默认为true,是否为该请求触发全局Ajax事件处理程序。设置为false,以防止触发诸如ajaxStart或ajaxStop之类的全局处理程序。这可以用来控制各种Ajax事件。*/ cache: false,/* 默认为true,浏览器缓存请求页面,如果设置为false,它将强制浏览器不缓存请求的页面。...
import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import org.spring function sign_up_fuction() { var userName = document.getElementById("sign_up_userName").value; var userPassword = document.getElementById("sign_up_userPassword").value; // var ...
function checkPower(optpurview, callbackfunc) { $.ajax({ url : '${BASE_PATH}/user/checkPower', type : 'POST', async: false, //同步执行 data : { optpurview : optpurview dataType : 'JSON'
public int id { get; set; } public string scoreitem { get; set; } public int score { get; set; } C# Lamda 表达式 GroupBy实现数据统计分组 qq_52296653: