SpringMVC中的@RequestBody注解

如果运气差的话,那就用努力来弥补,实力强的话,可以打败运气的。
周四的时候走在路上,没有接到面试电话,在打过去就打不通了,还有一个电话面试不知道是不是要等到明年。
起风了 唯有努力生存

这几天一直在和前端的同学合作写使用cookie记住密码的功能,遇到了前端确实已经传数据过来,但我后台拿到的数据为null。原因是前端传的是json数据格式,不是form-data格式,我原以为只有在配置文件中加上这段话,就能自动将json转化为对象


    
        
            
                
            
        
    

    
    
        
            
                text/html;charset=UTF-8
                application/json;charset=utf-8
            
        
    

MappingJackson2HttpMessageConverter需要和@RequestBody一起使用。当时和前端说我没有错,真是蜜汁自信啊

介绍一下@RequestBody的作用,第一次使用这个注解
1)
该注解用于读取Request请求的body部分,使用自己配置的MappingJackson2HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上
这里把解析以后的数据绑定到了Administrator对象上了
2)在把MappingJackson2HttpMessageConverter返回的对象数据绑定到Controller中的方法参数上
用法:

public String save (@RequestBody Administrator administrator, HttpServletRequest httpServletRequest)

顺便在介绍一下@ResponseBody注解
作用:将controller中方法返回的对象,通过MappingJackson2HttpMessageConverter转化为指定的格式,写入到response对象的body数据区

3)当用get、post方式提交时,根据request header Content-Type的值来判断:
①application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
②multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
③其他格式, 必须(其他格式包括application/json, application/xml等)使用@RequestBody来处理
我这里前端js的header为:

xhr.setRequestHeader("Content-type", "application/json");

所以我在controller中必须使用@RequestBody注解了

顺便在介绍一下@ResponseBody注解
作用:将controller中方法返回的对象,通过MappingJackson2HttpMessageConverter转化为指定的格式,写入到response对象的body数据区

你可能感兴趣的:(SpringMVC中的@RequestBody注解)