当前位置: 首页 > news >正文

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.lryc.cn/news/339216.html

相关文章:

  • QT写Windows按键输出(外挂)
  • Stable Diffusion之文生图模型训练
  • SpringBoot整合支付宝沙箱支付
  • 探索进程控制第一弹(进程终止、进程等待)
  • 在mac环境下使用shell脚本实现tree命令
  • 递归时间复杂度分析方法:Master 定理
  • 实例名不规范导致mds创建失败
  • OpenGL中的纹理过滤GL_NEAREST和GL_LINEAR
  • vue 性能优化
  • 互联网大厂ssp面经(操作系统:part1)
  • Android Activity 启动涉及几个进程
  • 说说你对链表的理解?常见的操作有哪些?
  • 每天五分钟深度学习:逻辑回归算法的损失函数和代价函数是什么?
  • llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署
  • C语言游戏实战(11):贪吃蛇大作战(多人对战)
  • 腾讯测试岗位的面试经历与经验分享【一面、二面与三面】
  • 手机移动端网卡信息获取原理分析
  • 无人新零售引领的创新浪潮
  • SD-WAN提升企业网络体验
  • Docker搭建Let‘s Encrypt
  • 单链表讲解
  • DFS算法系列 回溯
  • Linux C应用编程:MQTT物联网
  • 企业常用Linux文件命令相关知识+小案例
  • Istio介绍
  • 代码随想录算法训练营第四十七天|leetcode115、392题
  • 将Ubuntu18.04默认的python3.6升级到python3.8
  • Python和Java哪个更适合后端开发?
  • Python+pytest接口自动化之cookie绕过登录(保持登录状态)
  • 什么数据集成(Data Integration):如何将业务数据集成到云平台?