后台只能接收get请求,使用post传值接收的数据为null,这是咋地了?

新手上路,请多包涵

问题描述

后台只能接收get请求,使用post传值接收的数据为null

问题出现的环境背景及自己尝试过哪些方法

打断点看了一下post请求传过来的值为null
使用postman测试的,本以为是测试软件的问题,之后自己写了一个form表单测试,结果相同,
使用post传值不能接收到数据

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

@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;
}

你期待的结果是什么?实际看到的错误信息又是什么?

username 和 password 应该可以接收到前端传过来的值
但是实际上并没有接收到,值为null

阅读 9.5k
5 个回答

@RequestMapping(value = "login.do", method = RequestMethod.GET) 你这边写要求的是get请求啊

这个其实是前端的问题。
猜测你前端传的数据是json格式的。
json格式的数据,后台这样是接收不到的。用@ResquestBody(不是@ResponseBody)可以接收,但不能正常接收多个字段,如果想接收,应该需要自己定义个类什么的。

正确的做法应该是更改前台的请求数据格式。

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);
})

请求头问题,用postman的时候经常这样 就是因为请求头的问题

请求头的问题可以让前端把content-type改成json,或者后端用jackson来处理,不要用Spring自带的RequestMappingHandler,接下来前后端互相甩锅时间到

新手上路,请多包涵

虽然不清楚为什么但是重置了tomcat问题就解决了?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题