解決SpringBoot在后臺接收前臺傳遞對象方式的問題
問題描述
前臺傳遞對象,不管是通過ajax請求方式,還是axios請求方式。后臺應該怎么接收對象處理呢?
比如前臺傳遞
ajax方式:
$.ajax({
url: "后臺的方式",
async: false,
type: "POST",
dataType : "json",
data: JSON.stringify(formParamObj),
contentType:'application/json;charset=utf-8',
success: function (data) {
if (data.isSuccess) {
//成功處理方式
} else if ("403" == data) {
//失敗方式處理
}
}
});
axios方式:
let params = {
key1:value1,
key2:value2
}
axios.post/get(url,params).then(res=>{
//處理結果
})
解決方案:
在方法的參數前面添加注解@RequestBody就可以解決
@PostMapper("/xxx/xxxx")
public List getProgramList(@RequestBody Program program){
System.out.println(program);
return null;
}
落地測試:
可以通過postman工具進行測試
補充:關于SpringBoot自定義注解(解決post接收String參數 null(前臺傳遞json格式))
今天遇到個問題,接口方面的,請求參數如下圖為json格式(測試工具使用google的插件postman)

后臺用字符串去接收為null
解決方案有以下幾種
1.使用實體接收(一個參數,感覺沒必要)
2.使用map接收(參數不清晰,不想用)
3.自定義注解(本文采用)
第一步:

創(chuàng)建兩個類代碼如下:
package com.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestJson {
String value();
}
package com.annotation;
import java.io.BufferedReader;
import javax.servlet.http.HttpServletRequest;
import org.springframework.core.MethodParameter;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import com.alibaba.fastjson.JSONObject;
public class RequestJsonHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(RequestJson.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
RequestJson requestJson = parameter.getParameterAnnotation(RequestJson.class);
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
BufferedReader reader = request.getReader();
StringBuilder sb = new StringBuilder();
char[] buf = new char[1024];
int rd;
while ((rd = reader.read(buf)) != -1) {
sb.append(buf, 0, rd);
}
JSONObject jsonObject = JSONObject.parseObject(sb.toString());
String value = requestJson.value();
return jsonObject.get(value);
}
}
第二步:啟動類添加如下代碼

第三步:后臺請求(使用下圖方式接受就可以了)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Java Predicate及Consumer接口函數代碼實現解析
這篇文章主要介紹了Java Predicate及Consumer接口函數代碼實現解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
@FeignClient的使用和Spring?Boot的版本適配方式
這篇文章主要介紹了@FeignClient的使用和Spring?Boot的版本適配方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
解決mybatis-generator生成Mapper文件沒有Selective結尾的問題
這篇文章主要介紹了解決mybatis-generator生成Mapper文件沒有Selective結尾的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
關于MyBatis 查詢數據時屬性中多對一的問題(多條數據對應一條數據)
這篇文章主要介紹了MyBatis 查詢數據時屬性中多對一的問題(多條數據對應一條數據),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

