SpringMVC 通过ajax 前后端数据交互的实现方法

2025-04-28 17:50

本文主要是介绍SpringMVC 通过ajax 前后端数据交互的实现方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价...

在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controller进行数据的接收,但是有的时候后端会出现数据无法接收到的情况,这个是因为我们的参数和前端ajax的contentType参数 类型不对应的情景,或者说contentType和后台controller 方法参数到底存在什么样的关系

普通的参数我们传递的时候往往是这样的两种情况:

contentType: "application/xhttp://www.chinasem.cn-www-form-urlencoded",
contentType: "application/json",

这样的两种方式有什么样的区别,

第一种方式:application/x-www-form-urlencoded 参数会解析为参数表,比如:

name=John+Doe&age=30&city=New+York

 通过ajax 传递,ajax写法如下:

           	let params={
            	    "username":"张三",
            	    "password":"123456",
            	}
            	$.ajax({
            		url: "dologin4",
            		contentType: "application/x-www-form-urlencoded",
            		headers: {  'Authorization': "****",'Access-Control-Allow-Origin':'*'},
            		type: 'post',
            		data: params,
            		success: function(result) {
            			console.log(result)
            		},
            		error: function(data) {
            			console.log('接口不通');
         javascript   		}
            	});

这样的形式,后台接受的时候,使用:request.getParameter()@RequestParam,比如:

@RequestMapping("/dologin")
	public ModelAndView dologin(@RequestParam String username,@RequestParam String password) throws Exception {
		System.out.println(username);
		System.out.println(password);
		ModelAndView mav = new ModelAndView();
		mav.addObject("info", "欢迎你");
		mav.setViewName("success");
		return mav;
	}
	@ResponseBody
	@RequestMapping("/dologin2")
	public Map<String,Object> dologin2(HttpServletRequest request,HttpServletResponse response) throws Exception {
		Stwww.chinasem.cnring username=request.getParameter("username");
		System.out.println(username);
		Map<String,Object> map=new HashMap<>();
		map.put("aa", "1111");
		return map;
	}

适合 x-www-form-urlencoded 的情况:

  • 传统HTML表单提交
  • 简单的键值对数据
  • 需要向后兼容老系统
  • 文件上传(结合multipart/form-data

第二种方式:contentType: "application/json", 整个China编程body作为单一数据流处理,比如:

{
  "name": "John Doe",
  "age": 30,
  "city": "New York",
  "hobbies": ["reading", "swimming"]
}

通过ajax 传递,ajax写法如下:

           function dologin(){
            	let params={
            	    "username":"张三",
            	    "password":"123456",
            	}
            	$.ajax({
            		url: "dologin4",
            		contentType: "application/json",
            		headers: {  'Authorization': "****",'Access-Control-Allow-Origin':'*'},
            		type: 'post',
            		data: JSON.stringify(params),
            		success: function(result) {
            			console.log(result)
            		},
            		error: function(data) {
            			console.log('接口不通');
            		}
            	});
            }

Java后台接受前台传入参数的代码如下:@RequestBody

@ResponseBody
	@RequestMapping("/dologin4")
	public Map<String,Object> dologin4(HttpServletRequest request,HttpServletResponse response) throws Exception {
		String uu=request.getParameter("username");
		System.out.println(uu);
	    StringBuilder jsonBuilder = new StringBuilder();
	    try (BufferedReader reader = request.getReader()) {
	        String line;
	        while ((line = reader.readLine()) != null) {
	            jsonBuilder.append(line);
	        }
	    }
	    String jsonString = jsonBuilder.toString();
	    ObjectMapper mapper = new ObjectMapper();
	    Map<String, Object> jsonMap = mapper.readValue(jsonString, Map.class);  
	     String username = (String) jsonMap.get("username");
		System.out.println(username);
		Map<String,Object> map=new HashMap<>();
		map.put("aa", "1111");
		return map;   
	}
	@ResponseBody
	@RequestMapping("/dologin3")
	public Map<String,Object> dologin3(@RequestBody Map<String,Object> reqMap) throws Exception {
		String username=reqMap.get("username").toString();
		System.out.println(username);
		Map<String,Object> map=new HashMap<>();
		map.put("aa", "1111");
		return map;
	}

适合 application/json 的情况:

  • RESTful API通信
  • 复杂数据结构
  • 需要明确数据类型
  • 前后端分离架构
  • 移动js应用服务器通信

两种情景是不一样的,如果你前端传入的是json格式,那么后端你用:

   String uu=request.getParameter("username");
    System.out.println(uu);

这样是无法接收到数据的,接收到的参数一直为null,因为json是整体作为一个流传入到后台的

这篇关于SpringMVC 通过ajax 前后端数据交互的实现方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154416

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1