鍍金池/ 問答/Java  Linux  數(shù)據(jù)庫/ 后臺只能接收get請求,使用post傳值接收的數(shù)據(jù)為null,這是咋地了?

后臺只能接收get請求,使用post傳值接收的數(shù)據(jù)為null,這是咋地了?

問題描述

后臺只能接收get請求,使用post傳值接收的數(shù)據(jù)為null

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

打斷點(diǎn)看了一下post請求傳過來的值為null
使用postman測試的,本以為是測試軟件的問題,之后自己寫了一個form表單測試,結(jié)果相同,
使用post傳值不能接收到數(shù)據(jù)

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

@RequestMapping(value = "login.do", method = RequestMethod.GET)
@ResponseBody
public ServerResponse<User> login(String username,String password, HttpSession session){
    ServerResponse<User> response = iUserService.login(username,password);
    if(response.isSuccess()){
        session.setAttribute(Const.CURRENT_USER,response.getData());
    }

    return response;
}

你期待的結(jié)果是什么?實(shí)際看到的錯誤信息又是什么?

username 和 password 應(yīng)該可以接收到前端傳過來的值
但是實(shí)際上并沒有接收到,值為null

回答
編輯回答
尤禮

@RequestMapping(value = "login.do", method = RequestMethod.GET) 你這邊寫要求的是get請求啊

2017年10月9日 11:40
編輯回答
別硬撐

雖然不清楚為什么但是重置了tomcat問題就解決了

2018年2月23日 05:43
編輯回答
吢丕

請求頭的問題可以讓前端把content-type改成json,或者后端用jackson來處理,不要用Spring自帶的RequestMappingHandler,接下來前后端互相甩鍋時間到

2017年7月14日 06:28
編輯回答
任她鬧

請求頭問題,用postman的時候經(jīng)常這樣 就是因?yàn)檎埱箢^的問題

2017年8月26日 06:57
編輯回答
心沉

這個其實(shí)是前端的問題。
猜測你前端傳的數(shù)據(jù)是json格式的。
json格式的數(shù)據(jù),后臺這樣是接收不到的。用@ResquestBody(不是@ResponseBody)可以接收,但不能正常接收多個字段,如果想接收,應(yīng)該需要自己定義個類什么的。

正確的做法應(yīng)該是更改前臺的請求數(shù)據(jù)格式。

let params = new FormData();
params.append('username', 'test');
params.append('password', 'test');
let config = {
    headers: {'content-type': 'application/x-www-form-urlencoded'}
};  //添加請求頭

axios.post('login.do', params, config).then((response) => {
    console.log(response.data);
})
2017年3月21日 13:52