请求响应(后端必备)

一、请求

1.简单参数

  • 原始方式:

在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取

@RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){String name = request.getParameter("name");String ageStr = request.getParameter("age");int age = Integer.parseInt(ageStr);System.out.println(name + age);return "OK";}
  • SpringBoot方式

简单参数:参数名与形参变量名相同,定义形参即可接收参数

//Springboot方式@RequestMapping("/simpleParam")public String simpleParam(String name,Integer age){System.out.println(name + age);return "OK";}

 如果方法形参名与请求参数名称不匹配,可以使用@RequestParam完成映射

注意事项:@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。该参数是可选的,可以设置为false

  @RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name = "name") String username, Integer age){System.out.println(username + age);return "OK";}

2.实体参数

  • 简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

3.数组集合参数

  • 数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数 
 @RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "OK";}
  • 数组集合参数:通过注解RequestParam绑定参数
@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "OK";}

4.日期参数

  • 使用@DateTimeFormat注解完成日期参数格式转换
@RequestMapping("/dateParam")public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){System.out.println(updateTime);return "OK";}

5.Json参数

  • Json数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识
@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user) {System.out.println(user);return "OK";}

6.路径参数

  • 通过请求URL直接传递参数,使用{...}来标识该路径参数,需要使用@PathVariable获取路径参数
 @RequestMapping("/path/{id}")public String pathParam(@PathVariable Integer id) {System.out.println(id);return "OK";}

获取多个路径参数

  @RequestMapping("/path/{id}/{name}")public String pathParam(@PathVariable Integer id,@PathVariable String name) {System.out.println(id);System.out.println(name);return "OK";}

二、响应

1.@ResponseBody

  • 类型:方法注解、类注解
  • 位置:Controller方法上
  • 作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应
  • 说明:@RestController=@Controller+@ResponseBody

2.统一响应结果

  • 统一响应结果封装类
public class Result {private Integer code; //1 成功  0 失败private String msg; //提示信息private Object data; //数据 datepublic Result(Integer code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public Result() {}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static Result success(Object data){return new Result(1,"success",data);}public static Result success(){return new Result(1,"success",null);}public static Result error(String msg){return new Result(0,msg,null);}@Overridepublic String toString() {return "Result{" +"code=" + code +", msg='" + msg + '\'' +", data=" + data +'}';}
}
@RestController
public class ResponseController {@RequestMapping("/hello")public Result hello(){System.out.println("Hello,world");return Result.success("hello,world");}@RequestMapping("/getAddr")public Result getAddr(){Address addr = new Address();addr.setProvince("广东");addr.setCity("深圳");return Result.success(addr);}@RequestMapping("/listAddr")public Result listAddr(){ArrayList<Object> list = new ArrayList<>();Address addr = new Address();addr.setProvince("广东");addr.setCity("深圳");Address addr2 = new Address();addr2.setProvince("湖南");addr2.setCity("长沙");list.add(addr);list.add(addr2);return Result.success(list);}
}

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

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

相关文章

什么叫价内期权?直接带你了解期权价内期权怎么使用?!

今天带你了解什么叫价内期权&#xff1f;直接带你了解期权价内期权怎么使用&#xff1f;&#xff01;价内期权是具有内在价值的期权。期权持有人行权时&#xff0c;对看涨期权而言&#xff0c;行权价格低于标的证券结算价格&#xff1b;对看跌期权而言&#xff0c;标的证券结算…

js 请求blob:https:// 图片

方式1 def get_file_content_chrome(driver, uri):result driver.execute_async_script("""var uri arguments[0];var callback arguments[1];var toBase64 function(buffer){for(var r,nnew Uint8Array(buffer),tn.length,anew Uint8Array(4*Math.ceil(t/…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域&#xff0c;随着业务逻辑复杂度的提升和系统规模的不断扩大&#xff0c;传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战&#xff0c;组件化开发作为一种高效、灵活的开发模式&#xff0c;受到了越来越多开发者的青睐。本文将结合实践&…

Java基础及进阶

JAVA特性 基础语法 一、Java程序的命令行工具 二、final、finally、finalize 三、继承 class 父类 { //代码 }class 子类 extends 父类 { //代码 }四、Vector、ArrayList、LinkedList 五、原始数据类型和包装类 六、接口和抽象类 JAVA进阶 Java引用队列 Object counter ne…

PostgreSQL行级安全策略探究

前言 最近和朋友讨论oracle行级安全策略(VPD)时&#xff0c;查看了下官方文档&#xff0c;看起来VPD的原理是针对应用了Oracle行级安全策略的表、视图或同义词发出的 SQL 语句动态添加where子句。通俗理解就是将行级安全策略动态添加为where 条件。那么PG中的行级安全策略是怎…

使用UDP通信接收与发送Mavlink2.0协议心跳包完整示例

1.克隆mavlink源码 https://github.com/mavlink/mavlink.git 2.进入mavlink目录,安装依赖 python3 -m pip install -r pymavlink/requirements.txt 3.生成Mavlink的C头文件 mavlink % python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated…

1-5岁幼儿胼胝体的表面形态测量

摘要 胼胝体(CC)是大脑中的一个大型白质纤维束&#xff0c;它参与各种认知、感觉和运动过程。尽管CC与多种发育和精神疾病有关&#xff0c;但关于这一结构的正常发育(特别是在幼儿阶段)还有很多待解开的谜团。虽然早期文献中报道了性别二态性&#xff0c;但这些研究的观察结果…

【Linux网络】select{理解认识select/select与多线程多进程/认识select函数/使用select开发并发echo服务器}

文章目录 0.理解/认识回顾回调函数select/pollread与直接使用 read 的效率差异 1.认识selectselect/多线程&#xff08;Multi-threading&#xff09;/多进程&#xff08;Multi-processing&#xff09;select函数socket就绪条件select的特点总结 2.select下echo服务器封装套接字…

C++ 类和对象 赋值运算符重载

前言&#xff1a; 在上文我们知道数据类型分为自定义类型和内置类型&#xff0c;当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的&#xff0c;那我想给类比较大小那该怎么办呢&#xff1f;这时候运算符重载就出现了 一 运算符重载概念&…

安全防御:防火墙基本模块

目录 一、接口 1.1 物理接口 1.2 虚拟接口 二、区域 三、模式 3.1 路由模式 3.2 透明模式 3.3 旁路检测模式 3.4 混合模式 四、安全策略 五、防火墙的状态检测和会话表技术 一、接口 1.1 物理接口 三层口 --- 可以配置IP地址的接口 二层口&#xff1a; 普通二层…

车载终端_RTK定位|4路摄像头|驾驶辅助系统ADAS定制方案

现代车辆管理行业的发展趋势逐渐向智能化和高效化方向发展&#xff0c;车载终端成为关键的工具之一。在这个背景下&#xff0c;一款特别为车队管理行业设计的车载终端应运而生。该车载终端采用8寸多点触控电容屏&#xff0c;搭载联发科四核处理器&#xff0c;主频2.0GHz&#x…

如何安装node.js

Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。 主要特点和优势&#xff1a; 非阻塞 I/O 和事件驱动&#xff1a;能够高效处理大量并发连接&#xff0c;非常适合构建高并发的网络应用&#xff0c;如 Web 服务器、实时聊天应用等。 例如&#xff0c;在…

网络安全——防御(防火墙)带宽以及双机热备实验

12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区上网用户限制流量不超过100M&#xff0c;其中销售部人员在其…

排序相关算法--3.选择排序

之前涉及的堆排序就是选择排序的一种&#xff0c;先进行选择。 基本选择排序&#xff1a; 最简单&#xff0c;也是最没用的排序算法&#xff0c;时间复杂度高并且还是不稳定的排序方法&#xff0c;项目中很少会用。 过程&#xff1a; 在一个长度为 N 的无序数组中&#xff0c;…

智慧公厕系统助力城市卫生管理

在当今快速发展的城市环境中&#xff0c;城市卫生管理面临着诸多挑战。其中&#xff0c;公共厕所的管理一直是一个重要但又常被忽视的环节。然而&#xff0c;随着科技的不断进步&#xff0c;智慧公厕系统的出现为城市卫生管理带来了全新的解决方案&#xff0c;成为提升城市品质…

OrangePi AIpro 浅上手

OrangePi AIpro 浅上手 OrangePi AIpro 介绍开发版介绍硬件规格顶层视图和底层视图接口详情图 玩转 OrangePi AIPro烧录镜像串口调试连接 WiFissh 连接配置下载源 使用感受优点&#xff1a;缺点或需注意的点&#xff1a; OrangePi AIpro 介绍 开发版介绍 OrangePi AIpro是香橙…

【大语言模型】私有化搭建-企业知识库-知识问答系统

下面是我关于大语言模型学习的一点记录 目录 人工智能学习路线 MaxKB 系统(基于大语言模型的知识问答系统) 部署开源大语言模型LLM 1.CPU模式(没有好的GPU&#xff0c;算力和效果较差) 2.GPU模式&#xff08;需要有NVIDIA显卡支持&#xff09; Ollama网络配置 Ollama前…

【问卷系统】TDucKX更新速览

TDuck是一款在线表单问卷收集工具&#xff0c;开源地址&#xff1a;https://gitee.com/TDuckApp一款免费的表单问卷系统&#xff1b;可快速创建问卷或业务表单&#xff0c;采用无代码理念支持开发自定义组件。采用SpringBootVueElementUI技术栈&#xff0c;功能强大界面清新&am…

Catena-x标准解读:CX-0007 Minimal Data Provider Service Offering v1.0.2 最小数据提供商服务产品

为了更好地理解&#xff0c;最小数据提供者服务也将被称为“上传工具”。 对于数据供应工具来说&#xff0c;数据主权的概念尤为重要。数据主权是Catena-X网络的核心价值观之一。每个参与者都应该尽可能多地控制自己的数据。这包括 他总是确切地知道他在与谁交换数据。参与者…