温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springmvc参数为对象和数组的示例分析

发布时间:2021-08-21 09:02:21 来源:亿速云 阅读:143 作者:小新 栏目:开发技术

这篇文章主要介绍springmvc参数为对象和数组的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

参数为对象

1、提交表单

2、表单序列化,使用ajax提交

var data = $("#addForm").serialize(); $.ajax({          url : "addReportDo",   //请求url          type : "POST",  //请求类型  post|get          data : data,          dataType : "text",  //返回数据的 类型 text|json|html--          success : function(result){  //回调函数 和 后台返回的 数据              alert(result);          }      });

3、也可以这样写

 var data = {          title: $("#title").val(),          note: $("#note").val()      };

4、如果结构复杂,使用@RequestBody

需要引用jackson

<dependency>     <groupId>com.fasterxml.jackson.core</groupId>     <artifactId>jackson-databind</artifactId>     <version>2.9.5</version> </dependency>   <dependency>     <groupId>com.fasterxml.jackson.core</groupId>     <artifactId>jackson-annotations</artifactId>     <version>2.9.5</version> </dependency>   <dependency>     <groupId>com.fasterxml.jackson.core</groupId>     <artifactId>jackson-core</artifactId>     <version>2.9.5</version> </dependency>

springmvc.xml配置

<!--Spring3.1开始的注解 HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">     <!-- json转换器 -->     <property name="messageConverters">         <list>             <ref bean="mappingJackson2HttpMessageConverter" />         </list>     </property> </bean>   <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">     <property name="supportedMediaTypes">         <list>             <value>text/html;charset=UTF-8</value>             <value>text/json;charset=UTF-8</value>             <value>application/json;charset=UTF-8</value>         </list>     </property> </bean>

js写法

var goods1 = {     goodsNumber: "001",     goodsName: "商品A" } var goods2 = {     goodsNumber: "002",     goodsName: "商品B" } var goodsList = [goods1,goods2]; var data = {     title: $("#title").val(),     note: $("#note").val(),     goodsList: goodsList }; console.log(data); $.ajax({     url : "addReportDo",   //请求url     type : "POST",  //请求类型  post|get     data : JSON.stringify(data),     contentType : "application/json",     dataType : "text",  //返回数据的 类型 text|json|html--     success : function(result){  //回调函数 和 后台返回的 数据         alert(result);     } });

注意ajax的两个属性,data属性变为JSON.stringify(data),增加contentType属性。

controller代码写法

@ResponseBody @RequestMapping("addReportDo") public String addReportDo(@RequestBody Report report){     System.out.println(report);     return "ok"; }

在参数前面加上@RequestBody即可。

5、传递数组

js写法

var array = ["a","b","c"]; var data = {     array : array }; console.log(data); $.ajax({     url : "addReportDo",   //请求url     type : "POST",  //请求类型  post|get     data : data,     dataType : "text",  //返回数据的 类型 text|json|html--     success : function(result){  //回调函数 和 后台返回的 数据         alert(result);     } });

controller写法

@ResponseBody @RequestMapping("addReportDo") public String addReportDo(@RequestParam("array[]")  String[] array){     System.out.println(Arrays.toString(array));     return "ok"; }

也可以用List接收

@ResponseBody @RequestMapping("addReportDo") public String addReportDo(@RequestParam("array[]") List<String> list){    System.out.println(list);    return "ok"; }

springmvc接受复杂对象(对象数组)

前端:

将请求头改为

contentType:"application/json;charset=UTF-8"

后端:

自定义一个对象,将参数封装进该对象中

@Data public class CaseBodyEntity {     String token;     CaseBasicModel caseBasic;     String[] keywords;     CaseInsurantAndProductModel[] caseInsurantAndProductModels;     CaseExperienceModel[] caseExperiences;     CaseAssessModel[] caseAssesses; }

使用使用POST方式接受请求,@RequestBody接受请求参数,对象为自定义的接受对象

@ApiOperation("添加或更新案例,后台")     @PostMapping("/addOrUpdateCase")     public JSONObject addOrUpdateCase(             @RequestBody CaseBodyEntity caseBodyEntity     ) {         ...     }

@RequestBody和@RequestParam的区别

  • @RequestParam,主要处理contentType为application/x-www-form-urlencoded的数据(默认);@ResponseBody:主要处理contentType不为application/x-www-form-urlencoded的数据,例如:application/json;charset=UTF-8

  • @RequestParam:要指明前端传过来的参数名并与其对应;@RequestBody:直接对象接收,属性名要与前端传过来的数据的key值对应

  • 使用@RequestParam:Content-Type为application/x-www-form-urlencoded,参数在FormData中;使用@RequestBody:Content-Type为application/json,参数在Request PayLoad中

  • 可以使用多个@RequestParam获取数据;@RequestBody不能在同一个方法中出现多次

以上是“springmvc参数为对象和数组的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI