除GET和POST还有哪些发送和接收参数的方法?

通常情况下,我们可以使用GET或POST来发送请求和数据,但GET和POST两种方法所携带的数据都是比较简单的数据,接下来在我们这个基础上,列举5种比较负责的参数传递方法,并对这些参数如何发送,后台改如何接收做详细的讲解。

常见的参数种类有:

除GET和POST还有哪些发送和接收参数的方法?

·普通参数

·POJO类型参数

·嵌套POJO类型参数

·数组类型参数

·集合类型参数

普通参数

普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数。

如果形参与地址参数名不一致该如何解决呢?

发送请求与参数,示例代码如下:

http://localhost/commonParamDifferentName?name=张三&age=18

后台接收参数:

@RequestMapping("/commonParamDifferentName")@ResponseBodypublic String commonParamDifferentName(String userName, int age) {    System.out.println("普通参数传递 userName ==> " + userName);    System.out.println("普通参数传递 age ==> " + age);    return "{'module':'common param different name'}";}

因为前端给的是name ,后台接收使用的是userName ,两个名称对不上,导致接收数据失败:

使用@RequestParam注解,可以避免接受数据失败。

@RequestMapping("/commonParamDifferentName")    @ResponseBody    public String commonParamDifferentName(@RequestPaam("name") String userName, int age) {    System.out.println("普通参数传递 userName ==> " + userName);    System.out.println("普通参数传递 age ==> " + age);    return "{'module':'common param different name'}";}

注意:写上@RequestParam注解框架就不需要自己去解析注入,能提升框架处理性能。

POJO数据类型

简单数据类型一般处理的是参数个数比较少的请求,如果参数比较多,那么后台接收参数的时候就比较复杂,这个时候我们可以考虑使用POJO数据类型。

POJO参数:请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数此时需要使用前面准备好的POJO类,先来看下User

public class User {    private String name;    private int age;    //setter...getter...略}

发送请求和参数:

后台接收参数:

//POJO参数:请求参数与形参对象中的属性对应即可完成参数传递@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User user){    System.out.println("pojo参数传递 user ==> "+user);    return "{'module':'pojo param'}";}

注意:

POJO参数接收,前端GET和POST发送请求数据的方式不变。 请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

嵌套POJO类型参数

如果POJO对象中嵌套了其他的POJO类,如:

public class Address {    private String province;    private String city;    //setter...getter...略}public class User {    private String name;    private int age;    private Address address;    //setter...getter...略}

嵌套POJO参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数发送请求和参数:

后台接收参数:

//POJO参数:请求参数与形参对象中的属性对应即可完成参数传递@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User user){    System.out.println("pojo参数传递 user ==> "+user);    return "{'module':'pojo param'}";}

注意:

请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

数组类型参数

举个简单的例子,如果前端需要获取用户的爱好,爱好绝大多数情况下都是多个,如何发送请求数据和接收数据呢?

数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接收参数,发送请求和参数的示例代码如下:

后台接收参数:

//数组参数:同名请求参数可以直接映射到对应名称的形参数组对象中  @RequestMapping("/arrayParam")  @ResponseBody  public String arrayParam(String[] likes) {    System.out.println("数组参数传递 likes ==> " + Arrays.toString(likes));    return "{'module':'array param'}";}

集合类型参数

数组能接收多个值,那么集合是否也可以实现这个功能呢? 发送请求和参数:

后台接收参数

//集合参数:同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据@RequestMapping("/listParam")@ResponseBodypublic String listParam(List < String > likes) {    System.out.println("集合参数传递 likes ==> " + likes);    return "{'module':'list param'}";}

运行会报错,

错误的原因是:SpringMVC将List看做是一个POJO对象来处理,将其创建一个对象并准备把前端的数 据封装到对象中,但是List是一个接口无法创建对象,所以报错。 解决方案是:使用@RequestParam注解

//集合参数:同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据@RequestMapping("/listParam")@ResponseBodypublic String listParam(@RequestParam List < String > likes) {    System.out.println("集合参数传递 likes ==> " + likes);    return "{'module':'list param'}";}

集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系。对于简单数据类型使用数组会比集合更简单些。

版权声明

1 本文地址:https://www.sunlonger.com/jijin/1237402.html 转载请注明出处。
2 本站内容除隼龙儿财经签约编辑原创以外,部分来源网络由互联网用户自发投稿及AIGC生成仅供学习参考。
3 文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
4 文章版权归原作者所有,部分转载文章仅为传播更多信息服务用户,如信息标记有误请联系管理员。
5 本站禁止以任何方式发布转载违法违规相关信息,如发现本站有涉嫌侵权/违规及任何不妥内容,请第一时间联系我们申诉反馈,经核实立即修正或删除。


本站仅提供信息存储空间服务,部分内容不拥有所有权,不承担相关法律责任。
上一篇 2024年06月18日
下一篇 2024年06月18日

相关推荐

  • 以下是几种构建指数基金组合的常用方法: 一、核心

    以下是几种构建指数基金组合的常用方法:一、核心 - 卫星策略1.核心资产配置●选择宽基指数基金作为核心资产,如沪深300指数基金。沪深300涵盖了沪深两市规模大、流动性好的300只股票,能代表A股市场的整体表现。这部分资产通常占组合的较大比例,比如60% - 70%。其作用是获取

    2024-10-28 22:02:12
    0 0
  • A500投资锦囊,来了

    风险提示:基金有风险,投资须谨慎。本观点仅代表当时观点,今后可能发生改变,仅供参考,不构成投资建议或保证,亦不作为任何法律文件。基金过往业绩并不预示其未来表现,基金管理人管理的其他基金的业绩并不构成基金业绩表现的保证。我国基金运作时间较短,不能反映股市发展

    2024-10-28 22:02:07
    0 0
  • 李稻葵谈理财:假如有10万元,会先买1万元保险,再买8万元基金

    近日,清化大学中国经济思想与实践研究院院长李稻葵做客央视财经频道《对话》栏目,对当前宏观经济运行情况发表最新见解。现场,李稻葵被问假如有10万元,该如何分配。李稻葵表示:“首先有个小前提,就是这10万元钱我5年之内不需要急用。首先,我想至少拿出1万元钱买保险,我

    2024-10-28 22:01:57
    0 0
  • 指数基金的三种配置方法

    1976年6月,先锋领航发行了旗下第一款指数基金产品,甚至其名称都叫做First Index Investment Trust(现已改名为Vanguard 500 Index Fund ETF——标普500ETF先锋领航)。这只产品的“第一”,不仅预示着先锋领航指数基金业务的开端,同时也标志着全球指数基金产品0的突破。投

    2024-10-28 21:23:17
    0 0
  • 基金投资:稳健获利的策略选择

    在当今的金融市场中,基金投资已成为众多投资者的热门选择。然而,如何进行有效的基金投资却是一门需要深入研究的学问。基金投资的风险、流动性和收益性一直是投资者关注的焦点。过高的风险可能导致本金的大幅损失,而缺乏流动性则可能在急需资金时陷入困境,当然,追求高收益

    2024-10-28 21:23:13
    0 0
  • 权益理财三季度跑输主流指数和权益型基金,施罗德交银理财欲推新品布局红利策略丨机警理财日报

    南财理财通课题组 黄桂煊榜单排名来自理财通AI全自动化实时排名,如您对数据有疑问,请在文末联系助理进一步核实。权益类理财三季度涨8.98%,跑输主流指数和权益型基金2024年三季度,A股出现V型反转,上证指数在第二季度末跌破3000点之后持续下行,9月20日最低至2700点,9月底

    2024-10-28 21:23:09
    0 0

发表回复

8206

评论列表(0条)

    暂无评论