SpringMVC的@RequestMapping注解

news2025/1/13 2:53:51

SpringMVC的@RequestMapping注解

  • @RequestMapping注解的功能
  • @RequestMapping注解的位置
  • @RequestMapping注解的value属性
  • @RequestMapping注解的method属性
  • @RequestMapping注解的params属性
  • @RequestMapping注解的headers属性
    • 什么是headers属性


@RequestMapping注解的功能

从注解名称上我们可以看到,@RequestMapping注解的作用是将请求和处理请求的方法关联起来,建立映射关系
SpringMVC接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求


@RequestMapping注解的位置

@RequestMapping标识一个类:设置映射请求的请求路径的初始信息
@RequestMapping标识一个方法:设置映射请求请求路径的具体信息
在这里插入图片描述


@RequestMapping注解的value属性

1.@RequestMapping注解的value属性通过请求的请求地址匹配映射
2.@RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
3.@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射

代码展示

	@RequestMapping(value = "/target")
    public String toTarget(){
        return "target";
    }

或者value也可以是:

@RequestMapping(value = {"/testRequestMapping","test"})
    public String toTarget(){
        return "target";
    }

运行结果:

在这里插入图片描述


@RequestMapping注解的method属性

1.@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射
2.@RequestMapping注解的method属性是一个RequestMethod类型的数组。表示该请求映射能够匹配多种请求方式的请求
3.若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:Request method "POST’ not supported
注:
1.对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
处理get请求的映射–>GetMapping
处理post请求的映射–>PostMapping
处理put请求的映射–>PutMapping
处理delete请求的映射–>DeleteMapping
2.常用的请求方式有get,post,put,delete
但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理
若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter,在restful部分会讲到

默认提交是get提交,假如我们发出一个post请求,会有什么反映

Controller:

 	@GetMapping("/testGetMapping")
    public String testGetMapping(){
        return "success";
    }

html:

<form th:action="@{/testGetMapping}" method="post">
    <input type="submit" value="测试RequestMapping注解的method属性-->POST">
</form>

运行结果
在这里插入图片描述

解决办法:
在这里插入图片描述
将页面的post请求变为get请求
或者
给Controller程序里的的@RequestMapping中method属性赋值
在这里插入图片描述

get和post的区别

get请求是将参数的值以这种在这里插入图片描述形式来请求指定的页面信息,并返回实体主体,一般用于查询操作

POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。 POST请求可能会导致新的资源的建立和/或已有资源的修改。
一般用于增删改操作


@RequestMapping注解的params属性

@RequestMapping注解的params属性通过请求的请求参数匹配请求映射
@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系
“param”:要求请求映射所匹配的请求必须携带param请求参数"lparam":要求请求映射所匹配的请求必须不能携带param请求参数
“param=value”:要求请求映射所匹配的请求必须携带param请求参数且param=value
“param!=value”:要求请求映射所匹配的请求必须携带param请求参数但是param!=value

代码样例:

html:

<a th:href="@{/testParamsAndHeaders(username='admin',password=123)}">测试RequestMapping注解的param属性-->/testParamsAndHeaders</a>

Controller:

    @RequestMapping(
            value = "/testParamsAndHeaders",
            params = {"username","password!=123456"}
    )
    public String testParamsAndHeaders(){
        return "success";
        
    }

运行结果:
在这里插入图片描述
若不满足条件:
在这里插入图片描述
偏偏要将该密码改为123456
在这里插入图片描述


@RequestMapping注解的headers属性

什么是headers属性

在这里插入图片描述
这些属性全部可以当作head属性来使用


@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射
@RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系
“header”:要求请求映射所匹配的请求必须携带header请求头信息
“!header”:要求请求映射所匹配的请求必须不能携带header请求头信息
“header=value”:要求请求映射所匹配的请求必须携带header请求头信息且header=value
“header!=value”:要求请求映射所匹配的请求必须携带header请求头信息且header!=value
若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性,此时页面显示404错误,即资源未找到

代码测试:

Controller:

    @RequestMapping(
            value = "/testParamsAndHeaders",
            params = {"username","password!=123456"},
            headers = {"Host=localhost:8084"}
    )
    public String testParamsAndHeaders(){
        return "success";
        
    }

Html:

<a th:href="@{/testParamsAndHeaders(username='admin',password=123)}">测试RequestMapping注解的head属性-->/testParamsAndHeaders</a>

运行结果:
在这里插入图片描述
在这里插入图片描述
404 --> value出错或者head出错
400 --> param出错
405 --> method请求方式出错

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

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

相关文章

二叉树23:验证二叉搜索树

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;344. 反转字符串 题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。…

26. 命名空间

前言&#xff1a;如果你接触过c/c/c#/java&#xff0c;那么对于python中的命名空间也是如此&#xff0c;只不过在些许地方存在细微差异&#xff0c;不过倒无伤大雅。 1. 定义 命名空间(Namespace)是从名称到对象的映射&#xff0c;大部分的命名空间都是通过 python 字典来实现…

lamda表达式

lamda表达式可以看作是一个匿名函数。编译器在编译的时候&#xff0c;会将lamda表达式处理成一个仿函数类&#xff0c;类名是类名是不重复的随机名称&#xff08;因为一个作用域中可能存在多个仿函数&#xff09;&#xff0c;返回该仿函数的对象。 lamda既然可以看作是一个匿名…

文件操作(C语言)

目录 1、为什么使用文件 2、什么是文件 程序文件 数据文件 文件名 3、文件的打开和关闭 文件指针 文件的打开和关闭 4、文件的顺序读写 文件读写介绍 文件读写函数 fputc&#xff08;字符 输出/写 函数&#xff09; fgetc&#xff08;字符 输入/读 函数&#xff09; fputs&…

VMware Workstation安装:与 Device/Credential Guard 不兼容

VMware Workstation安装&#xff1a;与 Device/Credential Guard 不兼容 1、快速解决 安装最新版VMware Workstation&#xff0c;例如我安装的是VMware Workstation Pro 17&#xff1a; 是的&#xff0c;解决报错的办法&#xff0c;就是安装/升级VMware Workstation版本。 参…

Aspose.PDF 23.1.0 for .NET Crack

Aspose.PDF for .NET可以在 .NET 程序中生成、屏蔽、编辑甚至将 PDF 文件转换为多种格式&#xff0c;而无需依赖 Adob​​e Acrobat。它是.Net核心对PDF的创新处理&#xff0c;可以在跨平台软件中执行文档操作甚至任务管理。借助 API&#xff0c;用户可以创建、更改、呈现、保护…

Spring Cloud:网关Gateway

✨ Spring Cloud:网关Gateway微服务网关概述为什么需要微服务网关服务网关的介绍Getway基本介绍微服务架构中网关所处位置三大核心概念工作流程入门案例搭建新建模块**cloud-gateway-gateway9527**导入依赖application.yml主启动类实现动态路由测试Predicate 断言基本介绍Route…

详解信奥一本通1290:采药

1290&#xff1a;采药【题目描述】辰辰是个很有潜能、天资聪颖的孩子&#xff0c;他的梦想是称为世界上最伟大的医师。为此&#xff0c;他想拜附近最有威望的医师为师。医师为了判断他的资质&#xff0c;给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说&#xff1…

Fisco Bcos区块链三(webase中间件平台一键部署)

文章目录区块链开荒技术文档&#xff1a;https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/index.html4. Webase一键部署Java环境变量配置MySQL安装Ubuntu安装mysql数据库安装后设置密码&#xff1a;Python部署PyMySQL部署&#xff08;Python3.6&#xff09;拉取…

SpringBoot-过滤器的使用(在访问页面时过滤掉未登录的用户使其不能访问相应页面)

目录 概述 前端编写 页面展示 后端编写 编写接口 过滤器的编写 过滤器功能实验 概述 解决需求&#xff1a;在用户未登录的情况下访问未登录不可访问的页面时&#xff0c;请求将被过滤到&#xff0c;将用户退回登录页面。 技术选型 前端&#xff1a;Vue ElementUI 后端…

MySQL事务的四大特性以及并发事务问题

事务的四大特性ACID 【原子性&#xff08;Atomicity&#xff09;】&#xff1a;事务是不可分割的最小单元&#xff0c;要么全部成功&#xff0c;要么全部失败。&#xff08;eg&#xff1a;转账案例&#xff0c;转账过程中任何一步操作失败了&#xff0c;那么整个事务就失败了&a…

Python装饰器使用方法详解

文章目录1 装饰器背景知识1.1 基本概念1.2 应用场景2 简单的装饰器代码3 使用装饰器记录函数执行次数4 带参数的装饰器5 装饰器处理有返回值的函数1 装饰器背景知识 1.1 基本概念 装饰器&#xff08;Decorator&#xff09;是 Python 中一种函数或类&#xff0c;用来修饰其他函…

RabbitMQ部署

RabbitMQ部署1.单机部署1.1.下载镜像1.2.安装MQ1.3访问管理端2.集群部署2.1.集群分类2.2.设置网络1.单机部署 我们在Centos7虚拟机中使用Docker来安装&#xff0c;如未安装dockr&#xff0c;请参考《Centos7安装Docker》 1.1.下载镜像 方式一&#xff1a;在线拉取 docker …

C语言linux线程库pthread的简单使用教程

POSIX线程&#xff08;pthread&#xff09;库 POSIX线程库是用于C/C的基于标准的线程API。它允许产生一个新的并发流程。它在多处理器或多核系统上最为有效&#xff0c;在这些系统中&#xff0c;可以将流程安排在另一个处理器上运行&#xff0c;从而通过并行或分布式处理提高速…

flask框架全解

文章目录简介wsgiref安装配置文件方式一&#xff08;debug方式配置&#xff09;方式二&#xff08;环境变量方式&#xff0c;很少见&#xff09;方式三&#xff08;配置文件方式&#xff09;其他配置方式flask app路由组成写法动态路由的过滤查询字符串传参json和form等数据反向…

deepin系统如何安装惠普打印机

deepin系统如何安装惠普打印机 导读 想必现在有很多小伙伴对于deepin系统如何安装惠普打印机 安装惠普打印机的方法方面的知识都比较想要了解&#xff0c;那么今天小好小编就为大家… 想必现在有很多小伙伴对于deepin系统如何安装惠普p1007打印机 安装惠普打印机的方法方面的知…

【图卷积神经网络】02-谱域图卷积介绍

注&#xff1a;本文为第2章谱域图卷积介绍视频笔记&#xff0c;仅供个人学习使用 目录1、图卷积简介1.1 图卷积网络的迅猛发展1.2 回顾&#xff0c;经典卷积神经网络已在多个领域取得成功1.3 两大类数据1.4 经典卷积神经网络的局限&#xff1a;无法处理图数据结构1.5 将卷积扩展…

Python学习基础之快速入门

目录 首先我们下载最新的python版本&#xff1a;3.0 编写一个hello world 什么是python里面的IPO python运行有几种模式 编写一个温度转换器 在windows上执行python程序 官网&#xff1a;Welcome to Python.org Python 是一门易于学习、功能强大的编程语言。它提供了高效的…

保护视力台灯是白光还是暖光?盘点专业护眼的暖光护眼台灯

保护视力的灯光颜色是最接近太阳光最好&#xff0c;而白光与暖光主要是色温来控制的&#xff0c;低色温&#xff08;3000K以下&#xff09;&#xff0c;中性色温&#xff08;4000K左右&#xff09;&#xff0c;高色温&#xff08;5000K以上&#xff09;&#xff0c;低色温的光源…

在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patcher)

在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patcher) 请访问原文链接&#xff1a;https://sysin.org/blog/install-macos-13-on-unsupported-mac/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.s…