003 传参

文章目录

  • 传参
    • http 状态码
    • 传参方式
      • (1)URL请求参数 key 与 方法中的形参名一致
      • (2)URL请求参数 key与@RequestParam("id") 中的别名一致
      • (3) 形参是POJO类,URL 参数 key 与pojo类的 set方法一致
      • (4)参数属于URL一部分,作为路径上的变量
    • ReceiveAddress.java
    • 通过反射生成对象,并给对象赋值
    • 传参

传参

http 状态码

(1)200: 响应成功

(2)404 :资源找不到 - 路径错误(URL错了)

(3)405: 请求方式没有对应好(type=Method Not Allowed, status=405)

(4)400: 请求的参数与服务器类型不匹配

(5)500: 服务器后端代码出错了(出现了Exception)

JavaBean : 实体类 (1)无参构造函数(2)属性有get,set方法

传参方式

(1)URL请求参数 key 与 方法中的形参名一致

  // http://localhost:8080/app/fun1?username=smith&userAge=20@GetMapping("fun1")@ResponseBodypublic String fun1(String username,Integer userAge){System.out.println(username);System.out.println(userAge);return "fun1";}

(2)URL请求参数 key与@RequestParam(“id”) 中的别名一致

@RequestParam: URL请求参数 key与@RequestParam(“id”) 中的别名一致

//  http://localhost:8080/app/fun2?id=101&username=小林&telno=18943049303  
@GetMapping("fun2")@ResponseBodypublic String fun2(@RequestParam("id") Integer addrId,@RequestParam("telno")Long receiveUserTelno,@RequestParam("username")String receiveUsername){String result = "addrId:" + addrId + "receiveUsername:" + receiveUsername + "receiveUserTelno :"+receiveUserTelno;return result;}

(3) 形参是POJO类,URL 参数 key 与pojo类的 set方法一致

参数是pojo类, 要有(1)构造函数 (2)get,set

URL 参数 key 与pojo类的 set方法一致(set方法名去除set单词后,首字母小写)

底层执行原理

(1)通过反射创建ReceiveAddress对象

(2)通过反射调用set方法赋值

   @GetMapping("fun3")@ResponseBodypublic ReceiveAddress fun3(ReceiveAddress address){ // javabean (pojo): 无参构造函数 + get,setreturn address;}

(4)参数属于URL一部分,作为路径上的变量

参数属于URL一部分,作为路径上的变量

//URL : http://localhost:8080/app/receiveAddress/103

  @GetMapping("{addrId}")  @ResponseBody // 返回json数据public ReceiveAddress getById(@PathVariable("addrId") Integer addrId){        return null;}

ReceiveAddress.java


package com.example.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;@TableName("receive_address")
public class ReceiveAddress implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "addr_id", type = IdType.AUTO)private Integer addrId;private Long receiveUserTelno;private String username;private Integer custId;/*** 地址的省份*/private String addrProvince;/*** 地址的城市*/private String addrCity;/*** 地址的区域*/private String addrArea;/*** 地址的街道*/private String addrStreet;/*** 详细地址*/private String addrDetail;/*** 状态*/private Integer status;/*** 版本号,用于做乐观锁*/private Integer version;/*** 数据添加的时间*/private LocalDateTime createTime;/*** 数据修改时间*/private LocalDateTime updateTime;public ReceiveAddress(Integer addrId, Long receiveUserTelno, String receiveUsername, Integer custId, String addrProvince, String addrCity, String addrArea, String addrStreet, String addrDetail, Integer status, Integer version, LocalDateTime createTime, LocalDateTime updateTime) {System.out.println("调用ReceiveAddress 的有参构造函数>>>>>>>>>>>>>>>.");this.addrId = addrId;this.receiveUserTelno = receiveUserTelno;this.username = receiveUsername;this.custId = custId;this.addrProvince = addrProvince;this.addrCity = addrCity;this.addrArea = addrArea;this.addrStreet = addrStreet;this.addrDetail = addrDetail;this.status = status;this.version = version;this.createTime = createTime;this.updateTime = updateTime;}public Integer getAddrId() {return addrId;}public void setAddrId(Integer addrId) {this.addrId = addrId;}public Long getReceiveUserTelno() {return receiveUserTelno;}public void setReceiveUserTelno(Long receiveUserTelno) {this.receiveUserTelno = receiveUserTelno;}public String getReceiveUsername() {return username;}public void setReceiveUsername(String receiveUsername) {System.out.println(".................调用了setReceiveUsername");this.username = receiveUsername;}public Integer getCustId() {return custId;}public void setCustId(Integer custId) {this.custId = custId;}public String getAddrProvince() {return addrProvince;}public void setAddrProvince(String addrProvince) {this.addrProvince = addrProvince;}public String getAddrCity() {return addrCity;}public void setAddrCity(String addrCity) {this.addrCity = addrCity;}public String getAddrArea() {return addrArea;}public void setAddrArea(String addrArea) {this.addrArea = addrArea;}public String getAddrStreet() {return addrStreet;}public void setAddrStreet(String addrStreet) {this.addrStreet = addrStreet;}public String getAddrDetail() {return addrDetail;}public void setAddrDetail(String addrDetail) {this.addrDetail = addrDetail;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}public Integer getVersion() {return version;}public void setVersion(Integer version) {this.version = version;}public LocalDateTime getCreateTime() {return createTime;}public void setCreateTime(LocalDateTime createTime) {this.createTime = createTime;}public LocalDateTime getUpdateTime() {return updateTime;}public void setUpdateTime(LocalDateTime updateTime) {this.updateTime = updateTime;}@Overridepublic String toString() {return "ReceiveAddress{" +"addrId=" + addrId +", receiveUserTelno=" + receiveUserTelno +", receiveUsername=" + username +", custId=" + custId +", addrProvince=" + addrProvince +", addrCity=" + addrCity +", addrArea=" + addrArea +", addrStreet=" + addrStreet +", addrDetail=" + addrDetail +", status=" + status +", version=" + version +", createTime=" + createTime +", updateTime=" + updateTime +"}";}
}

通过反射生成对象,并给对象赋值

/*ReceiveAddress address1. 创建对象2. 属性赋值new : 创建对象构造函数的作用: 初始化对象 initial*///        ReceiveAddress address = new ReceiveAddress();
//        address.setReceiveUsername("smith");//  (1)通过反射创建ReceiveAddress 对象  -- 前提:ReceiveAddress 有无参构造函数ReceiveAddress address =   ReceiveAddress.class.newInstance();  // 会调用 无参构造函数//(2) 通过反射调用set方法 setReceiveUsername(String)Method method =  ReceiveAddress.class.getMethod("setReceiveUsername",String.class);method.invoke(address,"dd");

传参


package com.example.controller;import com.example.entity.ReceiveAddress;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;import java.util.Locale;/*** 请求的相关参数*/
@Controller
public class HelloController {// http://localhost:8080/app/fun1?username=smith&userAge=20@GetMapping("fun1")@ResponseBodypublic String fun1(String username,Integer userAge){System.out.println(username);System.out.println(userAge);return "fun1";}@GetMapping("fun2")@ResponseBodypublic String fun2(@RequestParam("id") Integer addrId,@RequestParam("telno")Long receiveUserTelno,@RequestParam("username")String receiveUsername){String result = "addrId:" + addrId + "receiveUsername:" + receiveUsername + "receiveUserTelno :"+receiveUserTelno;return result;}// http://localhost:8080/app/fun3?addrId=101&receiveUsername=%E5%B0%8F%E7%8E%8B&receiveUserTelno=18943049303// 实参的key 与 pojo的属性名相同// 面向对象 + 反射/*** (1)通过反射创建ReceiveAddress 对象  -- 前提:ReceiveAddress 调用无参构造函数* (2)通过反射set方法,参数赋值*/@GetMapping("fun3")@ResponseBodypublic ReceiveAddress fun3(ReceiveAddress address){ // javabean (pojo): 无参构造函数 + get,setreturn address;}/*Customer (custId,custName,custPwd --- getters,setters)URL : ....?custId=101&custName=smith&custPwd=abc123*/@GetMapping("{addrId}")  //URL :  http://localhost:8080/app/receiveAddress/103@ResponseBody // 返回json数据public ReceiveAddress getById(@PathVariable("addrId") Integer addrId){return null;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MXNet安装流程详解:跨平台、全版本兼容

一、 MXNet简介 1.1 MXNet的特点 MXNet是一种高效、灵活、可扩展、跨平台的深度学习框架,具有以下显著特点: - 高效:MXNet采用了多种并行处理技术,可以利用CPU和GPU的计算能力,有效地加速了模型训练和推理的速度。 …

Ruoyi-vue-pro Vue + nginx 二级目录部署到云服务器

http://www.your-server.com/ 这是一级目录,由于项目多,一般会通过二级域名http://oa.your-server.com/或二级目录http://www.your-server.com/oa来发布,本篇记录一下二级目录发布。先看效果 1、router/index.js配置base export default new …

【Linux】进程间通信——匿名管道|命名管道

目录 什么是进程间通信 管道 匿名管道 什么是进程间通信 进程间通信,顾名思义就是两个进程互相通信。 可是进程是独立的,该如何通信呢? 类比你和你的朋友在网上聊天,你们两个人也是独立的,是如何通信的呢&#xf…

linux常见使用命令

查看CPU内存 cat /proc/cpuinfo 动态查看 top 部分版本中没有,需要自行安装的命令 dstat 查看内核版本号 uname -r 系统版本的全部信息 uname -a 查看所有关于网络的相关信息 netstat -anp 查看8080端口是否被占用 netstat -anp | grep 8080 指定进程名字都有那些连…

Meta Earth:模块化公链的技术革新与市场潜力解析

随着加密货币市场逐渐回暖,投资者和技术爱好者都在寻找下一个重大机遇,特别是在比特币ETF获批和比特币减半事件的到来,全球加密货币市场正迎来新一轮的牛市周期。在此背景下,模块化公链技术作为区块链领域的一大创新点&#xff0c…

详解 node/浏览器 事件循环中的微任务的优先级

关于事件循环机制,可以参考这篇文章 node 环境中的微任务 这里面补充一个,node 中微任务是有优先级的,常见的微任务有,其中 process.nextTick 的优先级最高,会优先执行,剩下的按照进入微任务队列的顺序&a…

pinia数据持久化

下载 pnpm i pinia 在 main.ts/js文件里面进行配置 import { createApp } from vue import App from ./App.vue import router from ./router // ① 引入createPinia方法从pinia import { createPinia } from pinia const app createApp(App) const pinia createPinia…

2024年第五届计算机视觉与信息技术国际会议(CVIT 2024)即将召开!

2024年第五届计算机视觉与信息技术国际会议(CVIT 2024)将于2024年8月16-18日在北京举行。CVIT 2024由北方工业大学主办,国内外的专家学者将齐聚一堂,共同分享最新的技术突破、研究方法和应用案例,共同推动计算机视觉与…

开启未来之门:Victoria VR 与 OpenAI 整合,引领 Web3 AI+AR 风潮

加密市场一直是科技创新的前沿阵地。虚拟现实(VR)技术和人工智能(AI)被认为是引领未来的重要技术之一,Web3 自然不会缺席这场足以改变人们生活方式的变革! 2月份,Apple Vision Pro 的发售迅速引…

Python爬虫网络实践:去哪儿旅游数据爬取指南

Python爬虫网络实践:去哪儿旅游数据爬取指南 在这个博客中,我们将探索如何使用 Python 来进行网络数据抓取,并以抓取旅游数据为例进行演示。我们将通过一个简单的示例来说明如何利用 Python 中的常用库进行网页抓取,从而获取旅游…

快速理解JS中的原型和原型链

快速理解JS中的原型和原型链 在我们学习JS的过程中,我们总会接触到一些词:“原型”,“原型链”。那么今天我就来带大家来学习学习原型和原型链的知识吧! 在开始之前,我们明确一下我们接下来想要学习的目标&#xff1a…

新型[datahelper@onionmail.org].datah 勒索病毒来袭:如何筑起安全防线?

在数字化时代,网络安全问题日益凸显,其中勒索病毒成为了一种非常严重的威胁。[datahelperonionmail.org].datah勒索病毒就是其中的佼佼者,它以其复杂的加密手段和恶劣的勒索行为,给用户带来了巨大的损失。本文将从病毒的运行机制、…

JS中的JSON(秒懂如何操作JSON)

目录 一、JSON介绍 1.概念 2.主要特点 3.优点 4.使用JSON的原因 使用 XML 使用 JSON 二、JSON语法 三、JSON使用 1.JSON的序列化 2.解析(parse) JSON 3.序列化(Stringify)JSON 四、JSON实例 1.用户信息 2.本地存储 五、JSON应用…

C++计算器类成员的实现

请编程完成如下任务: 根据类的定义,完成该类成员函数的实现。 编写main()函数,分别以默认值和输入的值num创建对象c1和c2,调用成员函数对c1的数据成员增加1,c2的数据成员减少1,然后分别输出c1和c2的数据成员。 函数接…

mapbox 工作问题暂时记录

mapbox 工作问题暂时记录 mapbox样式修改1.2.3.4. mapbox样式修改 1. mapbox直接用class名无法修改样式, 可以添加 :deep 来修改样式 2. map.value.getStyle().layers这行代码可以获取页面中所有图层,可以判断图层id来做相应操作 3. map.value.setLayoutProperty(layer.id…

ModuleNotFoundError: No module named ‘mlxtend‘

from mlxtend.plotting import plot_decision_regions 报错信息: ModuleNotFoundError: No module named mlxtend Jupyter和Spyder报错原因:因为anaconda下没有这个模块,需要安装mlxtend 解决方案: 1.打开anaconda(或终端) 2. 点击路径点…

Python爬虫之Scrapy框架基础

Scrapy爬虫框架介绍 文档 英文文档中文文档 什么是scrapy 基于twisted搭建的异步爬虫框架. scrapy爬虫框架根据组件化设计理念和丰富的中间件, 使其成为了一个兼具高性能和高扩展的框架 scrapy提供的主要功能 具有优先级功能的调度器去重功能失败后的重试机制并发限制ip使用次…

完全可定制的富文本编辑器:逻辑清晰,插件赋能 | 开源日报 No.218

ianstormtaylor/slate Stars: 28.8k License: MIT slate 是一个完全可定制的框架,用于构建富文本编辑器。 可以构建类似 Medium、Dropbox Paper 或 Google Docs 的富文本编辑器通过一系列插件实现所有逻辑,避免代码复杂度受到 Draft.js、Prosemirror 和…

1.grpc-教程(golang版)

目录 一、介绍 二、环境准备 三、Golang中使用grpc 1.编写protobuf文件 2.服务端 3.客户端 四、proto文件详解 1.proto语法 2.数据类型 基本数据类型 数组类型 map类型 嵌套类型 编写风格 3.多服务 4.多个proto文件 五、流式传输 1.普通rpc 2.服务器流式 …

基于SVM的时间序列预测模型matlab代码

整理了基于SVM的时间序列预测模型matlab代码, 包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型的进行评价。SVM模型在数据集上表现非常好。 Mean squared error 0.000180613 (regression) Squared correlation coefficient 0.995639 (regression) Mea…