SpringMVC框架 -- 请求参数的获取及接受

本文详细介绍了SpringMVC中四种主要的请求参数获取方式,包括直接方法参数获取、@RequestParam注解、@RequestBody注解以及通过HttpServletRequest对象。同时,文章还提供了Controller层接收前端传递参数的具体实例,如ajax传递数组对象的处理方法。
摘要由CSDN通过智能技术生成
一、SpringMVC中请求参数获取

1. 直接方法参数获取请求参数

可用于获取url路径和表单提交的请求参数,get/post请求方式都行,也可用于获得ajax简单类型参数。
前台提交参数.png后台直接方法参数获取.png
注意:

  • 请求参数名称要与方法形参名称一致,顺序无关但要区分大小写;
  • 如果方法接收多个参数,传入一个参数也行,其他默认为null;
  • 如果请求参数与方法参数类型不一致,会抛出转换异常。

2. @RequestParam注解方式获取请求参数

可用于获取url路径和表单提交的请求参数,get/post请求方式都行。

使用场景:

  • 简单类型的绑定或对象类型;
  • Content-Type: application/x-www-form-urlencoded编码的内容,提交方式get、post。

RequestParam接收参数.png
@RequestParam作用:把请求中指定名称的参数给控制器类中的形参赋值。

属性:

  • value: 请求中指定参数的名称,如:/user/find?id=123中的id;
  • required:请求参数中是否必须提供此参数。默认值为true,表示必须提供,如果不提供将报错;
  • defaultValue:指定默认值,传递参数为null或不传递时使用该默认值。

注意:

  • 参数类型需要保证一致;
  • 不指定注解的value属性时,等同于第一种方式获取请求参数;
  • 通过在后台方法接收请求数据时,使用包装类型没有传入参数不会报错。

3. RequestBody注解方式获取请求参数

使用场景:常用来处理Content-Type不是application/x-www-form-urlencoded编码的内容,如:application/json, application/xml等。

常用于获取请求体参数,如ajax,仅能使用post方式提交请求参数。
RequestBody接收请求体的参数.png
ajax提交请求.png

注意:

  • required:是否必须有请求体,默认值是true,当取值为true时get请求方式会报错,如果取值为false,get 请求得到为null;
  • 使用时机:当返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。

补充:

  • @RequestBody,作用:在处理器方法形参上使用,把请求的json格式数据,转换成java对象;
  • @ResponseBody,作用:在处理器方法返回值上使用,或者方法上使用,把响应的java对象,转换成json格式数据。

4. 通过 HttpServletRequest获取请求

常用于参数较多,且无法封装为对象的情况下,如ajax中传递请求参数。
ajax传递复杂参数.jpg
HTTPServletRequest获取请求参数.png
注意:

  • 这是最基本的获取参数的方式,get/post请求都适用,通常在filter,intercepter中也是可以通过HttpServletRequest对象来获取请求参数;
  • 除了获取常见的请求参数之外,HttpServletRequest可以获取请求头的完整信息。

二、Controller层接收前端传递参数

1. ajax传递数组对象

  • JS代码:
// 删除
$("#manager-del").click(function () {

    var managerArray = new Array();
    $("input:checkbox[name='manaCheck']:checked").each(function () {
        managerArray.push($(this).val());
    });

    // 传递到controller层是个字符串数组
    var managerStr = managerArray.toString();
    $.get(base + "/manager/deleteByUuid", {"managerStr": managerStr}, function (result) {
    }
});
  • Controller层代码:
/**
 * 删除管理员账号(根据uuid)
 */
@GetMapping("/deleteByUuid")
public boolean deleteByUuid(String[] managerStr) {
    try {
        managerService.deleteByUuid(managerStr);
        return true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

Tips
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值