美文网首页
SpringMVC中的@RequestBody注解

SpringMVC中的@RequestBody注解

作者: 何甜甜在吗 | 来源:发表于2017-12-31 13:21 被阅读0次

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

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

    <!--将json字符串转成java对象-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
            <property name="messageConverters">
                <list>
                    <ref bean="mappingJacksonHttpMessageConverter"/>
                </list>
            </property>
        </bean>
    
        <!--json转化器,可以将结果转化-->
        <bean id="mappingJacksonHttpMessageConverter"
              class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json;charset=utf-8</value>
                </list>
            </property>
        </bean>
    

    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注解

          本文链接:https://www.haomeiwen.com/subject/amywgxtx.html