本文介绍了在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;
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; //返回对象集合,通用写法,既可以返回字符串也可以返回对象集合
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: