EastChilde 2021-07-16 15:08 采纳率: 0%
浏览 157

HttpServletRequest的接收形式,为什么不用json字符串的接收形式

有个问题,有人知道吗,在javaweb登录的时候,登录接口的用户名和密码很多是使用HttpServletRequest的接收形式,为什么不用json字符串的接收形式

@RequestMapping(value="/user" ,method=RequestMethod.POST)
@ResponseBody
public String login(@RequestBody String user){}

为什么基本上用的是下面这种方式

@RequestMapping(value="/user" ,method=RequestMethod.POST)
@ResponseBody
public String login(HttpServletRequest request){
    String username = request.getParameter("username");
    String password = request.getParameter("password");
}
  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-07-16 15:30
    关注

    采用什么方式接收参数,看参数的传递方式的。能从request中获取参数,是因为提交的是formdata参数类型。并不是所有的参数传递都能从request中获取。

    注解@RequestBody接收的参数是来自requestBody中,即请求体。
    一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
    就application/json类型的数据而言,使用注解@RequestBody可以将body里面所有的json数据传到后端,后端再进行解析。
    GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
    POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用。
    HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

    如有帮助,望【采纳】支持一下。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月16日