@RequestParam、@PathVariable、@RequestBody

1、中文翻译

        RequestParam-请求参数、PathVariable-路径变量、RequestBody请求体

2、作用:

        Controller中获取前端传递的参数

3、从注解本身角度分析

3.1、@PathVariable:路径变量

        通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中,获取动态参数链接(post请求路径与get请求路径均可解析)

3.2、@RequestParam:请求参数

作用:就是把请求中的指定名称的参数传递给控制器中的形参赋值 

        1、可解析前端get请求路径后以问号拼接的参数

        2、使用@RequestParam注解获取的参数与request.getParameter()获取的参数一致(todo:具体原理后期再详细解释)

属性:1. value / name:请求参数中的名称 (必写参数)
           2. required:请求参数中是否必须提供此参数,默认值是true,true为必须提供
           3. defaultValue:默认值

3.3、@RequestBody:请求体

        主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)

例如前端post请求,contentType: 'application/json;charset=UTF-8',  请求体为json

$(function(){var user = {name : 'manmanlai',age : 18};$.ajax({type : 'POST',contentType: 'application/json;charset=UTF-8',url : 'http://127.0.0.1/testPostParam',data : JSON.stringify(user),dataType : 'json',success : function(result) {console.log(result);},error : function(e){console.log(e.status);}});
});

controller中接收参数直接以自己定义的对象接收

 自定义的user对象中需要有前端传递的参数属性

4、从前端请求角度分析

4.1 get请求

        1、get请求参数是在请求路径后面以?拼接,多个参数之间用&拼接,最终组成query。

        2、controller接收get请求的参数

                可以直接使用参数名进行接收无需加任何注解

                可以使用@RequesrParam接收

                可以用request.getParameter()接收

                可以直接封装一个对象不需要加任何注解直接放在参数中,前端传递的参数会自动映射。

4.2 post请求

post请求体类型contentType分为:

        1、application/x-www-form-urlencoded(form表单提交)

        2、multipart/form-data(form表单中有文件上传)

        3、application/json(序列化后的json字符串)

        4、text/xml(面向数据不经常使用)

4.2.1 application/x-www-form-urlencoded(form表单提交)

        这个是表单的默认提交数据类型

        参数最终在请求体中的

controller中参数

      可以直接使用参数名进行接收无需加任何注解,

      可以使用@RequesrParam接收参数

      可以用request.getParameter()接收

      可以直接封装一个对象不需要加任何注解直接放在参数中,前端传递的参数会自动映射。

4.2.2 multipart/form-data(form表单中有文件上传,同时还有参数)

congtroller中接收

      可以直接使用参数名进行接收无需加任何注解,

      可以使用@RequesrParam接收参数

      可以用request.getParameter()接收

      可以直接封装一个对象不需要加任何注解直接放在参数中,前端传递的参数会自动映射。

4.2.3 application/json(序列化后的json字符串)

        

controller中接收参数

        使用注解@RequestBody 加自定义对象接收json

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

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

相关文章

四连杆机构运动学仿真 | 【Matlab源码+理论公式文本】

【程序简介】💻🔍 本程序通过matlab实现了四连杆机构的运动学仿真编程,动态展现了四连杆机构的运动动画,同时给出了角位移、角速度和角加速度的时程曲线,除了程序本身,还提供了机构运动学公式推导文档&…

【Exception系列】SocketTimeoutException

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Spring Boot】创建你的第一个 Spring Boot 应用

创建你的第一个 Spring Boot 应用 1.环境配置2.步骤详解3.项目结构分析3.1 入口类 DemoApplication3.2 控制器 PathVariableController3.3 控制器 BasicController3.4 模型 User 4.运行 Spring Boot 目前已经成为了 Java 开发领域的框架范式。本篇博客,我将带领大家…

java小型人事管理系统

开发工具: MyEclipseJdkTomcatSQLServer数据库 运行效果视频: https://pan.baidu.com/s/1hshFjiG 定制论文,联系下面的客服人员

软考80-上午题-【面向对象技术3-设计模式】-结构型设计模式03

一、外观模式 1-1、意图 为子系统中的一组接口提供一个一致的界面。 Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 1-2、结构 Facade 知道哪些子系统类负责处理请求:将客户的请求代理给适当的子系统对象。Subsvstem classes …

2023年中国抗DDoS市场规模现状及竞争格局,公有云抗DDoS是主要增长点

分布式拒绝服务(DDoS)是在DoS基础之上产生的一种新的攻击方式,具有多对一的攻击模式。它通过制造伪造的流量,使得被攻击的服务器、网络链路或是网络设备(如防火墙、路由器等)负载过高,无法处理正…

个人简历主页搭建系列-03:Hexo+Github Pages 介绍,框架配置

今天的更新内容主要是了解为什么选择这个网站搭建方案,以及一些前置软件的安装。 Why Hexo? 首先我们了解一下几种简单的网站框架搭建方案,看看对于搭建简历网站的需求哪个更合适。 在 BuiltWith(网站技术分析工具)上我们可以…

鸿蒙开发实现弹幕功能

鸿蒙开发实现弹幕功能如下: 弹幕轮播组件:BannerScroll import type { IDanMuInfoList, IDanMuInfoItem } from ../model/DanMuData //定义组件 Component export default struct BannerScroll {//Watch 用来监视状态数据的变化,包括&#…

OPENCV(0-1之0.2)

OPENCV-0.2 学习安排图像基础像素访问和修改像素值 色彩空间转换RGB到灰度的转换RGB到HSV的转换 图像操作裁剪缩放旋转和翻转 图像滤波平滑和模糊图像边缘检测 图像变换仿射变换透视变换 总结 官方文档 学习安排 图像基础 像素:了解像素的概念,包括像素…

2025武忠祥考研数学,视频百度网盘+基础全程课程PDF

“得数学者的天下”,25考研首先要开始的就是数学复习,而数学复习首先要开始的必然是高数! 很多同学选择了跟着武忠祥老师学习高数,但是具体要怎么学?用什么书?怎么刷题?快来看看以 下的武忠祥…

[自研开源] MyData 数据集成之数据过滤 v0.7.2

开源地址:gitee | github 详细介绍:MyData 基于 Web API 的数据集成平台 部署文档:用 Docker 部署 MyData 使用手册:MyData 使用手册 试用体验:https://demo.mydata.work 交流Q群:430089673 概述 本篇基于…

操作系统镜像文件(win,centos)

下载镜像 下载地址 MSDN, 我告诉你 - 做一个安静的工具站 如果想要在vm中全屏的建议下载待spl的镜像文件,不然会搞不起来全屏 找到自己写想要的镜像文件,这边我选了win7 复制圈起来的路径,到迅雷中新建下载即可 安装window可能需要密钥 …