• @RequestBody和@ResponseBody的用法以及Stringify()的作用


    转载地址:https://blog.csdn.net/beidaol/article/details/104172885

    首先,在项目的前后交互中json数据格式比较常用,普遍认为json格式比较简单,易于解析

    如果我们在前端发送一个ajax请求的话

    可以看到是用json字符串格式向后台传请求参数,那么后台需要采用@RequestBody来处理请求的json格式数据,将json数据转换为java对象,否则springmvc就不能解析导致传空参的结果

    一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。而 @ResponseBody就可以理解成将java的对象转换成json字符串的格式给前端解析(json数据格式解析比较简单)

    如果加上@ResponseBody注解,就不会走视图解析器,不会返回页面,目前返回的json数据。如果不加,就走视图解析器,返回页面

    现在在开发项目有喜欢用key/value的格式传给后台。此方法比较常用。在ajax的data中写 ‘name=我&age=12’这个就不用就可以不用加@RequestBody

    这里看下项目中请求的格式可以采用qs.stringify()方法将对象或者数组转换为一个key/value的格式。这个时候后台接受就可以不用加@RequestBody。在这里需要注意的是,JSON中同样存在stringify()方法,但是两者之间的区别是很明显的,json的stringify()是返回json字符串‘{"uid":"cs11","pwd":"000000als","username":"cs11","password":"000000als"}’但是qs.stringify()是返回key/vlue的拼接: uid=cs11&pwd=000000als&username=cs11&password=000000als

    总结:

    客户端请求的数据是json字符串,springmvc不能直接解析,加@requestBody解析成对象,客户端请求的是key/value(‘name=我&age=12’)的拼接不需要加@requestBody,@responseBody返回json字符串,如果是ajax请求,我们想到得到json对象的话(为了方便根据key取value)

    在ajax中增加如下:

    dataType: "json"   

    参考博客:

    https://blog.csdn.net/suwu150/article/details/78333452

    https://www.cnblogs.com/cnblog-long/p/6547380.html

    1.为什么要进行json数据交互

    json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。
    比如:webservice接口,传输json数据.

    2.springmvc进行json交互

    • 请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便
    • 请求key/value、输出json。此方法比较常用。

    3.环境准备

    3.1加载json转的jar包
    springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转),如下:
    jackson-core-asl-1.9.11.jar
    jackson-mapper-asl-1.9.11.jar
    @RequestBody作用:
    @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。
    本例子应用:
    @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象
    @ResponseBody作用:
    该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端
    本例子应用:
    @ResponseBody注解实现将controller方法返回对象转换为json响应给客户端
    3.2配置json转换器
    在注解适配器中加入messageConverters

    注意:如果使用<mvc:annotation-driven /> 则不用定义上边的内容。

    4.json交互测试

    4.1输入json串,输出是json串
    4.1.1jsp页面
    使用jquery的ajax提交json串,对输出的json结果进行解析。
    使用jduery别忘记引入jquery-1.4.4.min.js

     

     4.1.2controller

    4.1.3测试结果

    4.2输入key/value,输出是json串
    4.2.1jsp页面
    使用jquery的ajax提交key/value串,对输出的json结果进行解析。

     

     4.2.2controller

     4.2.3测试
    后台控制台输出了"前台传过来的商品名:手机",且查看http数据可以看到json数据的反馈。

  • 相关阅读:
    Windows 环境下配置 git bash 的 HOME 默认路径
    SQL Server 2008 r2 输入SQL语句不能自动提示的解决办法
    搭建调用 WebService 的 ASP.NET 网站 (VS2010, C#)
    【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
    使用 hexdump dump 文件内容
    调用 WebService 浏览器提示 500 (Internal Server Error) 的原因及解决办法
    PHP的文件格式应该以UTF-8无BOM编码
    继电器电路
    ROS零门槛教程系列(二)——Linux常用指令:mkdir、tar、 unzip、cp、scp、mv、rm、find、apt、ssh
    ROS零门槛教程系列(一)——ubuntu安装
  • 原文地址:https://www.cnblogs.com/lidar/p/15956733.html
Copyright © 2020-2023  润新知