@RequestMapping的参数和用法

2023-05-16

在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置

源码:

// 该注解说明可以在类和方法上使用
// 用于类上:表示类中的所有响应请求的方法都是以该地址作为父路径
// 用于方法上: 提供进一步的细分映射信息
@Target({ElementType.TYPE, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {

    String name() default "";

    @AliasFor("path")
    String[] value() default {};

    @AliasFor("value")
    String[] path() default {};

    RequestMethod[] method() default {};

    String[] params() default {};

    String[] headers() default {};

    String[] consumes() default {};

    String[] produces() default {};
}

注解中的属性除了 name() 返回的字符串,其它的方法均返回数组,也就是可以定义多个属性值,例如 value() 和 path() 都可以同时定义多个字符串值来接收多个URL请求

属性

value

指定请求的实际地址,指定的地址可以是URI Template 模式

@RequestMapping 中的 value 和 path 属性(这两个属性作用相同,可以互换,如果仅有这一个属性,则可以省略)

普通的具体值

    @RequestMapping("/test1")
    public String test1(){
        return "test";
    }

    @RequestMapping(value = "/test2")
    public String test2(){
        return "test";
    }

    // 多个请求映射到一个方法上
    @RequestMapping(value = {"/test3","/","/test4"})
    public String test3(){
        return "test";
    }

含有某变量的一类值(URI Template Patterns with Path Variables)

    // 请求路径:工程名/test1/path
    @RequestMapping("/test1/{path}")
    public String test1(@PathVariable String path){
        return "test";
    }

含正则表达式的一类值( URI Template Patterns with Regular Expressions)

@RequestMapping(value = "/list/{path:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")  
public BaseDTO list(@PathVariable String path) {
    // TODO
}

method

method 主要用来定义接收浏览器发来的何种请求。在Spring中,使用枚举类

org.springframework.web.bind.annotation.RequestMethod来定义浏览器请求的方式。

HTTP规范定义了多种请求资源的方式,最基本的有四种,分别为:GET(查)、POST(增)、PUT(改)、DELETE(删),而URL则用于定位网络上的资源相当于地址的作用,配合四种请求方式,可以实现对URL对应的资源的增删改查操作。

在实际应用中,很多人并没有按照这个规范做,因为使用GET/POST同样可以完成PUT和DELETE操作,甚至GET也可以完成POST操作,因为GET不需要用到表单,而POST却需要通过表单来发送。


    // 处理GET请求
    @RequestMapping(value = "/test2", method = RequestMethod.GET)
    public String test2(){
        return "test";
    }

    // 处理POST请求
    @RequestMapping(value = "/test2", method = RequestMethod.POST)
    public String test3(){
        return "test";
    }

由于在 RequestMapping 注解类中 method() 方法返回的是 RequestMethod 数组,所以可以给 method 同时指定多个请求方式,

   @RequestMapping(value = "/test2", method = {RequestMethod.GET, RequestMethod.POST})
    public String test3(){
        return "test";
    }

consumes

指定处理请求的 提交内容类型 (Content-Type),例如 application/json, text/html

    // 方法仅处理请求方式是GET和request Content-Type为“application/json”类型的请求
    @RequestMapping(value = "/test2", method = RequestMethod.GET, consumes = "application/json")
    public String test2(){
        return "test";
    }

produces

指定 返回的内容类型 ,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

@RequestMapping(value = "/list" , method = RequestMethod.POST,produces="application/json")
public JSONObject list(@PathVariable String communityId) {
   JSONObject object = new JSONObject();
   object.put("communityId",communityId);
   return object;
}

//@responseBody就是返回值是json数据,使用@responseBody,就可以省略produces属性
@RequestMapping(value = "/list" , method = RequestMethod.POST)
@ResponseBody
public JSONObject list(@PathVariable String communityId) {
   JSONObject object = new JSONObject();
   object.put("communityId",communityId);
   return object;
}

//返回值是json数据,字符编码为utf-8
@RequestMapping(value = "/list" , method = RequestMethod.POST,produces="application/json;charset=utf-8")
public JSONObject list(@PathVariable String communityId) {
   JSONObject object = new JSONObject();
   object.put("communityId",communityId);
   return object;
}

params

该属性表示请求参数,也就是追加在URL上的键值对,多个请求参数以&隔开,指定request中必须包含某些参数值时,才让该方法处理。

    // 设定必须包含username参数,且username=chen
    @RequestMapping(value = "/test", params = "username=chen")
    public String test1(){
        return "test1  chen";
    }

    // 设定必须包含username参数,且username=yang
    @RequestMapping(value = "/test", params = "username=yang")
    public String test2(){
        return "test1  yang";
    }

    // // 设定必须包含username参数,且username=zhao
    @RequestMapping(value = "/test", params = "username=zhao")
    public String test3(){
        return "test1  zhao";
    }

    //设定必须包含username 和age两个参数,且age参数不为10 (可以有多个参数)
    @RequestMapping(value = "/list" ,params = { "username","age!=10" })
    public String list() {
       return "test";
    }

headers

指定request中必须包含某些指定的header值,才能让该方法处理请求。

用于HTTP协义交互的信息被称为HTTP报文,客户端发送的HTTP报文被称为请求报文,服务器发回给客户端的HTTP报文称为响应报文,报文由报文头部和报文体组成。

请求头部(Request Headers):请求头包含许多有关客户端环境和请求正文的信息,例如浏览器支持的语言、请求的服务器地址、客户端的操作系统等。

响应头部(Rsponse Headers):响应头也包含许多有用的信息,包括服务器类型、日期、响应内容的类型及编码,响应内容的长度等等。

//仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.baidu.com/”的请求;
@RequestMapping(value = "/list" , headers="Referer=http://www.baidu.com/")
public String list() {
   return "test";
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@RequestMapping的参数和用法 的相关文章

  • vc++ 二进制文件的查找_在C ++中查找表示二进制数所需的总位数

    vc 43 43 二进制文件的查找 Problem statement 问题陈述 xff1a Find total Number of bits required to represent a number in binary 查找以二进制
  • 微信小程序 onLoad 和 onShow的区别

    onLoad 和 onShow的区别 onLoad 一个页面只会调用一次 接收页面参数 可以获取wx navigateTo和wx redirectTo及中的 query xff08 通俗点就是 你编辑好代码后 点击保存 这时候整个程序加载
  • Spring常用注解

    Spring 常用注解 Spring的一个核心功能是IOC xff0c 就是将Bean初始化加载到容器中 xff0c Bean是如何加载到容器的 xff0c 可以使用Spring注解方式或者Spring XML配置方式 Spring注解方式
  • Result Maps collection already contains value for com......Mapper.BaseResultMap问题的解决方法

    最近遇到了Result Maps collection already contains value for com klbc springboot springboot mapper StudentMapper BaseResultMap
  • RabbitMq同一队列多个消费者问题

    RabbitMQ只有Queue xff0c 如果多个消费者绑定同一个queue xff0c 那么一条消息 xff0c 只能被其中一个消费者取走 xff08 轮询 xff09 本质上 xff0c RabbitMq的消费者的消息确认机制 xff
  • python查看变量的数据类型

    首先需注意python并不区分short和long类型 xff0c python里面只有 在Python 3里 xff0c 只有一种整数类型 int xff0c 表示为长整型 内置的 type 函数可以用来查询变量所指的对象类型 gt gt
  • 使用Java通过Nginx反向代理服务器操作PostgreSQL数据库

    最近在做一个项目 xff0c 需要将Android App和服务器上的PostgreSQL进行连接 xff0c 但是Android Studio不能够直接通过JDBC进行连接 xff0c 所以选择通过Nginx作为中间服务器对Postgre
  • Linux下Java安装教程

    Windows下Java安装教程 Windows下Java安装教程 Windows下Java安装教程 一 Java安装步骤 步骤1 xff1a 下载Java并上传至服务器 usr local src目录下 https www oracle
  • 解决mariadb在导入sql备份文件因字符集问题导致的失败

    最近在windows7命令行 用 mariadb mysql 导入 用 mysqldump 备份的数据库sql 文件时出现了一些错误 xff0c 例如 xff1a ERROR at line 46 Unknown span class to
  • Docker容器中使用systemctl 的方法

    默认情况下 容器内不应该运行守护进程 xff0c 若想使用则需要一些操作 xff0c 详情如下 xff1a run 启动参数上 xff0c 加上 privileged 61 true xff0c 然后 xff0c 参数末尾 将 bin ba
  • IntelliJ IDEA开发工具安装教程(2022.2最新版)

    IntelliJ IDEA开发工具安装教程 xff08 2022 2最新版 xff09 下载官网网址 xff1a https www jetbrains com idea 一 下载安装 xff1a 1 xff0c 打开官网下载Intelli
  • 物联网系统和操作系统的差距_实时操作系统和分时操作系统之间的差异

    物联网系统和操作系统的差距 The types of operating systems are Time Sharing OS and Real Time operating system These can be differentia
  • 网页数据解析与爬取----Beautiful Soup

    目录 网页数据解析与爬取 Beautiful SoupBeautiful Soup 使用1 Beautiful Soup简介2 解析器3 准备工作4 节点选择器5 提取信息1 获取名称2 获取属性3 获取内容4 嵌套选择 6 关联选择1 子
  • FTP :身份验证、本地用户访问、虚拟用户访问实验

    ftp ftp文件共享 主要用于存储 xff0c 采用c s架构 xff0c 客户端可以通过登录server xff0c 去实现文件的上传 xff0c 删除的操作 ftp工作模式 主动传输模式 client使用N端口向ftp的server的
  • SQL server快捷键

    F5 选中文本调试或运行 Ctrl 43 K xff0c Ctrl 43 C xff1a 注释选定内容 Ctrl 43 K xff0c Ctrl 43 U xff1a 取消注释选定内容 Ctrl 43 K xff0c Ctrl 43 xff
  • 143-牛客网C++刷题9

    1 不定义第三个变量 xff0c 交换两个变量的数据 x 43 61 y y 61 x y x 61 y 2 常量可以是任何的基本数据类型 xff0c 可分为整型数字 浮点数字 字符 字符串和布尔值 3 在C 43 43 中 xff0c 可
  • GitHub|搭建个人静态页并绑定私有域名

    Ps xff1a 仅自学自用留档 xff0c 如有需要请自行找寻内容 xff01 使用Git在GitHub上搭建个人静态页并绑定域名 一 在GitHub创建特殊的个人仓库二 将仓库保存到本地并使用Git链接1 使用Git将仓库保存到本地文件
  • java Collection常用方法

    主要方法如下所述 然后我们来具体写一下这些方法 首先是add方法 span class token keyword public span span class token keyword static span span class to
  • java Collections基本概念和常用方法

    Collections是一个类 他在java的util包下 所以使用它是需要导包的 Collections是一个静态方法的集合类 他里面的方法都是静态的 Collections中的方法有很多 这里我们主要看三个 Collections的方法
  • 使用域控批量安装软件

    域自带的批量部署软件有多种方式 xff1a 1 xff0c 发布 xff0c 域服务器发布软件 xff0c 客户端到添加删除程序 添加新程序中点击安装 2 xff0c 分配指派到用户 xff0c 在客户端用户登录时自动安装 3 xff0c

随机推荐

  • XXL-JOB:com.fasterxml.jackson.databind.JsonMappingException: Unexpected character (‘o‘ (code 111))解决

    背景 项目中的xxl job admin版本为2 1 1 xff0c 一直运行的很好 xff0c 但是有一天被扫出安全漏洞 xff0c 然后 xff0c 我就把xxl job admin的springboot版本由1 5升级为2 2 1版本
  • Ubuntu部分图标缺失,包括部分系统图标

    ubuntu部分图标缺失 这里说的缺失不是指图标不会显示 xff0c 而是说图标虽然会显示 xff0c 但是显示不正确 比如显示为一个空白方块或者红色的 34 禁止 34 图标 简要列出部分缺失的图标 xff1a 文件夹图标wifi图标 x
  • python 添加图例_Python | 在图上添加图例

    python 添加图例 Adding legend is the best way to label data series plotted on a graph Matplotlib has an inbuilt defined func
  • java有哪些集合类型?集合类的特点

    Java属于入门容易 xff0c 天花板却极高的编程语言 java有哪些集合类型 对于java工程师来说技术的不断发展 需要不断学习java进阶知识 为了帮助大家巩固基础 xff0c 本文解答了java有哪些集合类型 集合类的特点是什么 x
  • MATLAB(一)基本操作与矩阵输入

    文章目录 前言一 Matlab视窗二 基本操作与矩阵输入1 把MATLAB当做计算机2 初等数学函数Exercise练习 2 嵌入函数3 特殊变量和常量4 MATLAB调用优先5 数字显示格式长Exercise练习 6 命令行终端7 部分函
  • MATLAB(六)图形界面_GUI_程式设计

    文章目录 前言MATLAB GUI Programs启动GUI程序对齐组件给按钮标上标签GUI脚本结构function untitled OpeningFcn对象的回调Set the axes for PlottingExercise练习P
  • Excel 精选28个技巧

    文章目录 前言1 一键求和2 一键插入柱形图3 单元格内强制换行4 快速移动资料5 快速生成下拉式功能表6 计算带单位的数据7 小写金额转大写8 快速输入 9 批量添加下划线10 文字随单元格大小变化11 图片随单元格大小变化12 快速提取
  • 调度算法——时间片轮转、优先级、多级反馈队列(例题详细!!!)

    文章目录 前言知识总览时间片轮转 xff08 RR Round Robin xff09 优先级调度算法多级反馈队列调度算法知识回顾与重要考点 前言 此篇文章是我在B站学习时所做的笔记 xff0c 大部分图片都是课件老师的PPT xff0c
  • 生产者-消费者问题(有例题!!!)

    文章目录 前言问题描述如何实现思考 xff1a 能否改变相邻P V操作的顺序 知识回顾与重要考点 前言 此篇文章是我在B站学习时所做的笔记 xff0c 大部分图片都是课件老师的PPT xff0c 方便复习用 此篇文章仅供学习参考 提示 xf
  • 计算机网络习题——循环冗余校验

    3 07 要发送的数据为1101011011 采用CRC的生成多项式是 P X 61 X 4 43 X 43 1 试求应添加在数据后面的余数 xff08 1 xff09 若要发送的数据在传输过程中最后一个1变成了0 xff0c 即变成了11
  • 计算机网络课后答案(谢希仁第八版)

    计算机网络课后答案 谢希仁第八版
  • linux系统 删除文件命令

    Linux系统下删除文件是一个非常高频的需求 xff0c 几乎每天都会遇到 xff0c 所以rm命令是一个非常常用Linux命令 rm命令是英文单词 remove 的缩写 xff0c 它主要作用是 xff1a 1 删除文件 xff1b 2
  • 常见的HTTP状态码列表

    HTTP状态码列表 状态码 状态码英文名称 中文描述 1xx xff08 信息性状态码 xff09 xff1a 请求已被接受 xff0c 需要继续处理 100 Continue 继续 客户端应继续其请求 101 Switching Prot
  • 二进制的加减法_二进制加减法

    二进制的加减法 1 二进制加法 1 Binary Addition Since binary numbers consist of only two digits 0 and 1 so their addition is different
  • SQL注入攻击方法

    SQL注入攻击是一种利用Web应用程序中存在的安全漏洞 xff0c 通过在输入框中插入恶意的SQL代码 xff0c 从而实现对数据库的非法操作 以下是一些常见的SQL注入攻击方法 xff1a 使用单引号 xff08 39 xff09 进行字
  • 利用Python+selenium技术,实现浏览器基本操作详解,代码有详细注释

    首先 xff0c 需要安装selenium库和对应的浏览器驱动程序 以Chrome浏览器为例 xff0c 可以使用以下命令安装selenium和chromedriver xff1a pip install selenium 然后 xff0c
  • &和&&的区别(简单易懂)

    amp xff08 按位与 xff09 和 amp amp xff08 逻辑与 xff09 的区别如下 xff1a 1 amp amp 具有短路功能 xff0c 而 amp 不具有短路功能 2 当 amp 运算符两侧的表达式的结果均为真时
  • Spring框架学习笔记

    一 什么是Spring框架 Spring框架是由于软件开发的复杂性而创建的 Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情 然而 xff0c Spring的用途不仅仅限于服务器端的开发 从简单性 可测试性和松耦
  • 人工智能——DBSCAN密度聚类(Python)

    目录 1 概述 1 1 概念 1 2 DBSCAN数据点分类 2 DBSCAN算法流程 2 1 DBSCAN算法流程 xff1a 2 2 举例 3 案例1 xff08 Python实现 xff09 3 1 案例 3 2 Python实现 3
  • @RequestMapping的参数和用法

    在Spring MVC 中使用 64 RequestMapping 来映射请求 xff0c 也就是通过它来指定控制器可以处理哪些URL请求 xff0c 相当于Servlet中在web xml中配置 源码 xff1a 该注解说明可以在类和方法