33.@RequestMapping注解

news2024/11/15 17:35:58

@RequestMapping注解

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

注解位置

  • @RequestMapping标识一个类:设置映射请求的请求路径的初始信息
  • @RequestMapping标识一个方法:设置映射请求路径的具体信息

SuccessController.java

package com.atguigu.SpringMVC.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/test")
public class SuccessController {
    @RequestMapping("/testRequestMapping")
    //此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
    public String testRequestMapping(){
        return "success";
    }
}

value属性

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

SuccessController.java

package com.atguigu.SpringMVC.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SuccessController {
    @RequestMapping(value = {"/testRequestMapping","/testRequestMapping1"})
    //此时value属性中的两个请求路径都可以访问到
    public String testRequestMapping(){
        return "success";
    }
}

method属性

  • @RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射
  • @RequestMapping注解的method属性是一个RequestMethod类型数组,表示该请求映射能够匹配多种请求方式的请求

若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错 405 - Request method ‘POST’ not supported

存在如下几种请求方式:GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE

注:

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

params属性(了解)

  • @RequestMapping注解的params属性通过请求的请求参数匹配请求映射
  • @RequestMapping注解的params属性是一个字符串类型数组,可以通过四种表达式设置请求参数和请求映射的匹配关系

四种表达式:

  • “param”:要求请求映射所匹配的请求必须携带param请求参数
  • “!param”:要求请求映射所匹配的请求必须不能携带param请求参数
  • “param=value”:要求请求映射所匹配的请求必须携带param请求参数且值为value
  • “param!=value”:要求请求映射所匹配的请求可以不携带param,如果携带则值不能为value

SuccessController.java

    @RequestMapping(value = {"/testRequestMapping","/testRequestMapping1"},
            method = {RequestMethod.GET},
            params = {"username"})
    //params属性需要在满足前面两个条件的前提下再满足params
    public String testRequestMapping(){
        return "success";
    }

index.html

    <a th:href="@{/testRequestMapping(username=admin)}">带参数请求</a>

带参数"username=admin"才能请求成功,如果满足前面条件,但是不满足param属性,此时页面回报错 400:Parameter conditions “username” not met for actual request parameters:

headers属性(了解)

  • @RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射
  • @RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信
    息和请求映射的匹配关系

四种表达式:

  • “header”:要求请求映射所匹配的请求必须携带header请求头信息
  • “!header”:要求请求映射所匹配的请求必须不能携带header请求头信息
  • “header=value”:要求请求映射所匹配的请求必须携带header请求头信息且header=value
  • “header!=value”:要求请求映射所匹配的请求必须携带header请求头信息且header!=value

SuccessController.java

    @RequestMapping(value = {"/testRequestMapping","/testRequestMapping1"},
            method = {RequestMethod.GET},
            params = {"username"},
            headers = {"referer"})
    //需要有"来源",不能是直接新标签输入地址访问
    public String testRequestMapping(){
        return "success";
    }

若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性,此时页面显示404错误,即资源未找到

ant风格的路径

  • ?:表示任意的单个(不能为空)字符

    • @RequestMapping(value = {"/testRequestMapping?"}):结尾带任意单个字符都可以访问到
  • *:表示任意的0个或多个字符

    • @RequestMapping(value = {"/testRequestMapping*"}):结尾带任意多个字符都可以访问到
  • **:表示任意层数的任意目录,在使用**时,只能使用/**/xxx的方式

    • @RequestMapping(value = {"/**/testRequestMapping"}):前面可以有任意层级的任意目录都可以访问到

注意:涉及到地址栏信息的特殊字符是不可以作为任意字符来访问的("?"、"/")

路径中的占位符

  • 原始方式:/deleteUser?id=1
  • RESTful方式:/user/delete/1

SpringMVC路径中的占位符常用于RESTful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参

index.html

    <a th:href="@{/placeholder/1/admin}">测试路径中的占位符</a>

SuccessController.java

    @RequestMapping(value = "/placeholder/{id}/{username}")
    //声明为值
    public String testPlaceholder(
            //通过@PathVariable以键值对方式获取到值并赋值给变量
            @PathVariable("id") Integer id,
            @PathVariable("username") String username){
        System.out.println("id为:"+id+",username为:"+username);
        return "success";
    }

控制台成功获取到值并输出

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

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

相关文章

SpringCloud全家通新人入门手册

一、架构图 二、springCloud全家桶组件库 三、Spring Cloud 实战项目全景规划 四、技术选型 第一阶段&#xff1a;搭建基础的微服务功能&#xff0c;实现微服务之间的通信&#xff1b; 1、服务治理&#xff1a;服务治理的重点是搭建基础的跨服务调用功能。我会把用户服务、优…

2023年国赛数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

让你专注于工作的电脑桌面日程提醒软件

在现代职场中&#xff0c;上班族们常常在繁忙的工作中会遇到各种各样的事情干扰。比如&#xff0c;当我们专注于完成重要的报告时&#xff0c;却又有同事来询问问题&#xff1b;在准备去会议事项时&#xff0c;手机却突然收到了一系列的短信和通知。这些干扰不仅浪费了我们的时…

Linux 内存管理 pt.1

今天我们来学习一下 Linux 操作系统核心之一&#xff1a;内存 跟 CPU 一样&#xff0c;内存也是操作系统最核心的功能之一&#xff0c;内存主要用来存储系统和程序的指令、数据、缓存等 关于内存的学习&#xff0c;我会尽量以通俗易懂的方式且分成多篇文章去讲解 那么今天在 pt…

电商商家花式整活,真蚌不住了

这年头&#xff0c;大数据永远比你自己更懂你&#xff0c;每个人手机里面的各种应用仿佛都是为自己量身定做的一般&#xff0c;总会准时准点推送你喜欢的内容。 我只是跟同事抱怨了一句“夏天太阳好晒”&#xff0c;转头淘宝就给我推防晒衣猜我喜欢&#xff1f;猜得很准&#…

echarts 饼图 值为0时页面显示undefined%的解决方案

当饼图的数据为0时&#xff0c;页面会出现 undefined% 的情况 值为0的数据&#xff1a; pieData: [{name: 分类一,value: 0,},{name: 分类二,value: 0,}, ], //饼图数据 页面显示为undefined% 我们可以通过 label 的 formatter 来进行自定义调整&#xff0c;具体点就是在 fo…

cesium学习记录08-鼠标绘制实体(点,线,矩形,圆,多边形)

上一篇学习了创建实体的一些基础知识&#xff0c;但有时还需要我们使用鼠标进行手动绘制&#xff0c;这一篇就来进行鼠标绘制实体的实现&#xff08;点&#xff0c;线&#xff0c;矩形&#xff0c;圆&#xff0c;多边形&#xff09;。 一、鼠标事件 既然是鼠标绘制&#xff…

Work Experience

上班工作体验感测算&#xff0c;纯属娱乐 这b班上的值不值测算版(1).xlsx https://download.csdn.net/download/spencer_tseng/88237617

Python开发环境(Visual Studio Code、Anaconda、PyInstaller、Enigma Virtual Box)

Python开发环境 [Anaconda、PyInstaller、Enigma Virtual Box] AnacondaAnaconda安装搭建Python环境Anaconda命令 Visual Studio CodeVisual Studio Code中Python设置Visual Studio Code中使用Qt Designer Python打包发布.exe可执行文件PyinstallerEnigma Virtual Box Anaconda…

Const的区别 学习笔记

C程序设计之const八大用法_哔哩哔哩_bilibili const优先修饰const左边&#xff0c;若左边没有东西&#xff0c;则修饰右边的东西 前两个a,b不是指针由于修饰的是int&#xff0c;是类型&#xff0c;所以a和b的值不能改变 c的类型的指针&#xff0c;const修饰的是int&#xff0…

Apinto 网关进阶教程,插件开发入门指南

Apinto 是基于Go语言&#xff0c;由 Eolink 自主研发的一款高性能、可扩展、易维护的云原生 API 网关。Apinto 能够帮助用户简单、快速、低成本、低风险地实现&#xff1a;系统微服务化、系统集成、向合作伙伴、开发者开放功能和数据。 通过 Apinto&#xff0c;企业能够专注于…

天锐绿盾加密软件——「文件数据防泄密系统」

文件加密功能 采用透明加解密技术&#xff0c; 企业内部文件自动加密&#xff0c;内部正常使用&#xff0c;不改变使用习惯。加密后的文件未经许可&#xff0c;私自外发拷贝到公司以外&#xff0c;都将显示为乱码无法使用&#xff0c;从源头上保障核心数据安全。 产品跨平台支持…

Vulhub之sick0s篇

靶场 靶机wp&#xff1a;【网络安全】sick0s 靶场实践之getshell - 知乎 靶机地址&#xff1a;https://download.vulnhub.com/sickos/sick0s1.1.7z 环境搭建 将虚拟机网络配置为nat与kali同一网络模式 kali扫描同一网段内存活的ip 访问目标端口web服务 3128端口是squid代理…

Python Pandas 处理Excel数据 制图

目录 1、饼状图 2、条形统计图 1、饼状图 import pandas as pd import matplotlib.pyplot as plt import numpy as np #from matplotlib.ticker import MaxNLocator # 解决中文乱码 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[font.sans-serif]Microsoft YaHei …

Android事件分发机制被我翻烂了

作者&#xff1a;积木zz 这次说下Android中的事件分发机制 从开始点击屏幕开始&#xff0c;就会产生从Activity开始到decorview一直到最里层的view一连串事件传递。每一层view或者viewgroup都会首先调用它的dispatchTouchEvent方法&#xff0c;然后判断是否就在当前一层消费掉事…

软件设计风格(干货)-架构师之路(九)

一、软件架构风格概念 Architecture架构&#xff0c;体系结构 软件体系结构风格是 描述某一特定应用领域中 系统组织方式 的惯用模式。架构风格定义一个系统家族&#xff0c;即 一个架构的定义、一个词汇表和一组约束。词汇表包含 一些构建和连接类型&#xff0c;而一组约束 …

监控 FTP 服务器

文件传输协议 &#xff08;FTP&#xff09; 用于在 TCP/IP 网络中的服务器和客户端之间传输文件&#xff0c;它是一种标准协议&#xff0c;广泛用于在各个垂直行业的组织之间从集中位置存储和分发数据。FTP协议的其他一些安全版本如下&#xff1a; SSH 文件传输协议 &#xff…

SpringBoot-1-Spring Boot实战:快速搭建你的第一个应用,以及了解原理

SpringBoot-1-Spring Boot实战&#xff1a;快速搭建你的第一个应用&#xff0c;以及了解原理 今日内容 SpringBootWeb入门 前言 我们在之前介绍Spring的时候&#xff0c;已经说过Spring官方(Spring官方)提供很多开源项目&#xff0c;点击projects&#xff0c;看到spring家族…

中国CV军团,危矣?!

大数据产业创新服务媒体 ——聚焦数据 改变商业 近期&#xff0c;云从科技发布了2023年半年报。应该说&#xff0c;云从科技交出的成绩单很不好。事实上&#xff0c;商汤、旷视等CV厂商的情况也好不到哪去。云从科技的处境有一定的代表性&#xff0c;因此&#xff0c;我们将通…

Python“牵手”拼多多商品评论数据采集方法,拼多多API申请步骤说明

拼多多平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范&#xff0c;拼多多API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问拼多多平台的数据&#xff0c;包括商品信息、店铺信息、物流信息&#xff0c;评论数据等&a…