springmvc参数为对象,数组的操作

 更新时间:2021年08月20日 08:48:32   作者:shuair  
这篇文章主要介绍了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不能在同一个方法中出现多次

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java TCP协议通信超详细讲解

    Java TCP协议通信超详细讲解

    TCP/IP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它会保证数据不丢包、不乱序。TCP全名是Transmission Control Protocol,它是位于网络OSI模型中的第四层
    2022-09-09
  • Java中的Timer与TimerTask源码及使用解析

    Java中的Timer与TimerTask源码及使用解析

    这篇文章主要介绍了Java中的Timer与TimerTask源码及使用解析,在Java中,经常使用Timer来定时调度任务,Timer调度任务有一次性调度和循环调度,循环调度有分为固定速率调度(fixRate)和固定时延调度(fixDelay),需要的朋友可以参考下
    2023-10-10
  • java字符串的大写字母右移实现方法

    java字符串的大写字母右移实现方法

    下面小编就为大家带来一篇java字符串的大写字母右移实现方法。小编觉得听不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Springboot集成百度地图实现定位打卡的示例代码

    Springboot集成百度地图实现定位打卡的示例代码

    本文主要介绍了Springboot集成百度地图实现定位打卡的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • java File类的基本使用方法总结

    java File类的基本使用方法总结

    这篇文章主要介绍了java File类的基本使用方法总结,为大家分享了java实现上传代码,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • java音乐播放器课程设计

    java音乐播放器课程设计

    这篇文章主要为大家详细介绍了java音乐播放器的课程设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java泛型类与泛型方法的定义详解

    Java泛型类与泛型方法的定义详解

    这篇文章主要介绍了Java泛型类与泛型方法的定义,结合实例形式详细分析了java泛型类与泛型方法定义、用法及相关操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Java异常处理操作实例小结

    Java异常处理操作实例小结

    这篇文章主要介绍了Java异常处理操作,结合实例形式总结分析了java异常处理常见操作情况与相关处理技巧,需要的朋友可以参考下
    2019-07-07
  • Java监听器三种实现方法代码解析

    Java监听器三种实现方法代码解析

    这篇文章主要介绍了Java监听器三种实现方法代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 不到十行实现javaCV图片OCR文字识别

    不到十行实现javaCV图片OCR文字识别

    识别图片中的文字,会省很多时间,本文介绍了javaCV图片OCR文字识别,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论