最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC 通過(guò)ajax 前后端數(shù)據(jù)交互的實(shí)現(xiàn)方法

 更新時(shí)間:2025年04月28日 11:33:35   作者:我是大頭鳥(niǎo)  
這篇文章主要介紹了SpringMVC 通過(guò)ajax 前后端數(shù)據(jù)交互的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

在前端的開(kāi)發(fā)過(guò)程中,經(jīng)常在html頁(yè)面通過(guò)ajax進(jìn)行前后端數(shù)據(jù)的交互,SpringMVC的controller進(jìn)行數(shù)據(jù)的接收,但是有的時(shí)候后端會(huì)出現(xiàn)數(shù)據(jù)無(wú)法接收到的情況,這個(gè)是因?yàn)槲覀兊膮?shù)和前端ajax的contentType參數(shù) 類(lèi)型不對(duì)應(yīng)的情景,或者說(shuō)contentType和后臺(tái)controller 方法參數(shù)到底存在什么樣的關(guān)系

普通的參數(shù)我們傳遞的時(shí)候往往是這樣的兩種情況:

contentType: "application/x-www-form-urlencoded",
contentType: "application/json",

這樣的兩種方式有什么樣的區(qū)別,

第一種方式:application/x-www-form-urlencoded 參數(shù)會(huì)解析為參數(shù)表,比如:

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

 通過(guò)ajax 傳遞,ajax寫(xiě)法如下:

           	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('接口不通');
            		}
            	});

這樣的形式,后臺(tái)接受的時(shí)候,使用: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 {
		String username=request.getParameter("username");
		System.out.println(username);
		Map<String,Object> map=new HashMap<>();
		map.put("aa", "1111");
		return map;
	}

適合 x-www-form-urlencoded 的情況:

  • 傳統(tǒng)HTML表單提交
  • 簡(jiǎn)單的鍵值對(duì)數(shù)據(jù)
  • 需要向后兼容老系統(tǒng)
  • 文件上傳(結(jié)合multipart/form-data

第二種方式:contentType: "application/json", 整個(gè)body作為單一數(shù)據(jù)流處理,比如:

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

通過(guò)ajax 傳遞,ajax寫(xiě)法如下:

           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后臺(tái)接受前臺(tái)傳入?yún)?shù)的代碼如下:@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通信
  • 復(fù)雜數(shù)據(jù)結(jié)構(gòu)
  • 需要明確數(shù)據(jù)類(lèi)型
  • 前后端分離架構(gòu)
  • 移動(dòng)應(yīng)用與服務(wù)器通信

兩種情景是不一樣的,如果你前端傳入的是json格式,那么后端你用:

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

這樣是無(wú)法接收到數(shù)據(jù)的,接收到的參數(shù)一直為null,因?yàn)閖son是整體作為一個(gè)流傳入到后臺(tái)的

相關(guān)文章

  • 淺談spring aop的五種通知類(lèi)型

    淺談spring aop的五種通知類(lèi)型

    這篇文章主要介紹了淺談spring aop的五種通知類(lèi)型,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 關(guān)于IDEA無(wú)法預(yù)覽Markdown文件的解決思路

    關(guān)于IDEA無(wú)法預(yù)覽Markdown文件的解決思路

    在IntelliJ IDEA中,有時(shí)Markdown文件無(wú)法預(yù)覽可能是因?yàn)槲募P(guān)聯(lián)設(shè)置不正確或配置信息錯(cuò)誤,首先,檢查IDE的File Types設(shè)置,確保.md和.markdown后綴已正確注冊(cè),其次,對(duì)照官方配置信息,調(diào)整Markdown設(shè)置
    2024-09-09
  • Java中OSS存儲(chǔ)桶未創(chuàng)建導(dǎo)致的XML錯(cuò)誤的解決方法

    Java中OSS存儲(chǔ)桶未創(chuàng)建導(dǎo)致的XML錯(cuò)誤的解決方法

    在Java開(kāi)發(fā)中,集成對(duì)象存儲(chǔ)服務(wù)(OSS)時(shí),開(kāi)發(fā)者常會(huì)遇到一個(gè)令人困惑的錯(cuò)誤提示,This XML file does not appear,此錯(cuò)誤看似與XML文件格式或樣式表有關(guān),實(shí)則源于 OSS存儲(chǔ)桶未創(chuàng)建,本文將通過(guò) 真實(shí)場(chǎng)景還原、逐步排查過(guò)程和代碼級(jí)解決方案,需要的朋友可以參考下
    2025-06-06
  • Java多線程中的Interrupt簡(jiǎn)析

    Java多線程中的Interrupt簡(jiǎn)析

    這篇文章主要介紹了Java多線程中的Interrupt簡(jiǎn)析,Interrupt 的其作用是"中斷"線程, 但實(shí)際上線程仍會(huì)繼續(xù)運(yùn)行, 這是一個(gè)非常容易混淆的概念,Interrupt 的真正作用是給線程對(duì)象設(shè)置一個(gè)中斷標(biāo)記, 并不會(huì)影響線程的正常運(yùn)行,需要的朋友可以參考下
    2023-09-09
  • 深入理解Java設(shè)計(jì)模式之外觀模式

    深入理解Java設(shè)計(jì)模式之外觀模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之外觀模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • Java實(shí)現(xiàn)將markdown轉(zhuǎn)換為html

    Java實(shí)現(xiàn)將markdown轉(zhuǎn)換為html

    最近因?yàn)轫?xiàng)目需求需要將AI輸出的結(jié)果導(dǎo)出到word中, 但AI輸出的格式為markdown格式,所以本文我們就來(lái)看看如何使用Java實(shí)現(xiàn)先將markdown轉(zhuǎn)換為html吧
    2025-11-11
  • java發(fā)送http的get、post請(qǐng)求實(shí)現(xiàn)代碼

    java發(fā)送http的get、post請(qǐng)求實(shí)現(xiàn)代碼

    下面小編就為大家?guī)?lái)一篇java發(fā)送http的get、post請(qǐng)求實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • lambdaQueryWrapper多條件嵌套查詢方式

    lambdaQueryWrapper多條件嵌套查詢方式

    這篇文章主要介紹了lambdaQueryWrapper多條件嵌套查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • 如何解決Eclipse找不到或無(wú)法加載主類(lèi)問(wèn)題

    如何解決Eclipse找不到或無(wú)法加載主類(lèi)問(wèn)題

    這篇文章主要介紹了如何解決Eclipse找不到或無(wú)法加載主類(lèi)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 深入理解java long 存儲(chǔ)時(shí)間戳

    深入理解java long 存儲(chǔ)時(shí)間戳

    存儲(chǔ)時(shí)間打算用時(shí)間戳來(lái)存儲(chǔ),打算用long類(lèi)型來(lái)代表時(shí)間戳,這篇文章主要介紹了深入理解java long 存儲(chǔ)時(shí)間戳,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10

最新評(píng)論

涞水县| 清丰县| 建阳市| 南澳县| 会东县| 康保县| 白银市| 肥西县| 兰西县| 宁晋县| 陵水| 敦煌市| 宜良县| 徐闻县| 资溪县| 闸北区| 忻州市| 巴中市| 辉县市| 司法| 铜梁县| 沛县| 崇信县| 南雄市| 安徽省| 定日县| 东港市| 华宁县| 昔阳县| 淮滨县| 南通市| 上林县| 金堂县| 大丰市| 青神县| 华安县| 三穗县| 乌兰察布市| 广汉市| 牙克石市| 全南县|