Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • 数据结构与算法

  • 算法设计与分析

  • Java

  • Python

  • 设计模式

  • 计算机网络

  • Spring笔记

  • SpringMVC笔记

    • SpringMVC简介
    • HelloWorld
    • RequestMapping注解
      • SpringMVC获取请求参数
      • 域对象共享数据
      • SpringMVC的视图
      • RESTful
      • HttpMessageConverter
      • 文件上传和下载
      • 拦截器
      • 异常处理器
      • 注解配置SpringMVC
      • SpringMVC执行流程
    • SpringBoot笔记

    • SpringSecurity

    • Elasticsearch笔记

    • RabbitMQ笔记

    • Docker笔记

    • MySQL

    • Redis

    • Mybatis

    • MybatisPlus

    • Nginx

    • Kubernetes笔记

    • Git

    • Software

    • 微服务笔记

    • bug

    • BackEndNotes
    • SpringMVC笔记
    Geeks_Z
    2023-01-15
    目录

    RequestMapping注解

    三、@RequestMapping注解

    1、@RequestMapping注解的功能

    从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。

    SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。

    2、@RequestMapping注解的位置

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

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

    @Controller
    @RequestMapping("/test")
    public class RequestMappingController {
    
    	//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
        @RequestMapping("/testRequestMapping")
        public String testRequestMapping(){
            return "success";
        }
    
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    3、@RequestMapping注解的value属性

    @RequestMapping注解的value属性通过请求的==请求地址==匹配请求映射

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

    @RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射

    <a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-->/testRequestMapping</a><br>
    <a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a><br>
    
    1
    2
    @RequestMapping(
            value = {"/testRequestMapping", "/test"}
    )
    public String testRequestMapping(){
        return "success";
    }
    
    1
    2
    3
    4
    5
    6

    4、@RequestMapping注解的method属性

    @RequestMapping注解的method属性通过请求的==请求方式==(get或post)匹配请求映射

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

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

    <a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a><br>
    <form th:action="@{/test}" method="post">
        <input type="submit">
    </form>
    
    1
    2
    3
    4
    @RequestMapping(
            value = {"/testRequestMapping", "/test"},
            method = {RequestMethod.GET, RequestMethod.POST}
    )
    public String testRequestMapping(){
        return "success";
    }
    
    1
    2
    3
    4
    5
    6
    7

    注:

    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部分会讲到

    5、@RequestMapping注解的params属性(了解)

    @RequestMapping注解的params属性通过请求的请求参数匹配请求映射

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

    "param":要求请求映射所匹配的请求必须携带param请求参数

    "!param":要求请求映射所匹配的请求必须不能携带param请求参数

    "param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value

    "param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value

    <a th:href="@{/test(username='admin',password=123456)">测试@RequestMapping的params属性-->/test</a><br>
    
    1
    @RequestMapping(
            value = {"/testRequestMapping", "/test"}
            ,method = {RequestMethod.GET, RequestMethod.POST}
            ,params = {"username","password!=123456"}
    )
    public String testRequestMapping(){
        return "success";
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

    注:

    若当前请求满足@RequestMapping注解的value和method属性,但是不满足params属性,此时页面回报错400:Parameter conditions "username, password!=123456" not met for actual request parameters: username={admin}, password={123456}

    6、@RequestMapping注解的headers属性(了解)

    @RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射

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

    "header":要求请求映射所匹配的请求必须携带header请求头信息

    "!header":要求请求映射所匹配的请求必须不能携带header请求头信息

    "header=value":要求请求映射所匹配的请求必须携带header请求头信息且header=value

    "header!=value":要求请求映射所匹配的请求必须携带header请求头信息且header!=value

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

    7、SpringMVC支持ant风格的路径

    ?:表示任意的单个字符

    *:表示任意的0个或多个字符

    **:表示任意的一层或多层目录

    注意:在使用**时,只能使用/**/xxx的方式

    8、SpringMVC支持路径中的占位符(重点)

    原始方式:/deleteUser?id=1

    rest方式:/deleteUser/1

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

    <a th:href="@{/testRest/1/admin}">测试路径中的占位符-->/testRest</a><br>
    
    1
    @RequestMapping("/testRest/{id}/{username}")
    public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){
        System.out.println("id:"+id+",username:"+username);
        return "success";
    }
    //最终输出的内容为-->id:1,username:admin
    
    1
    2
    3
    4
    5
    6

    上次更新: 2024/03/29, 08:56:31
    HelloWorld
    SpringMVC获取请求参数

    ← HelloWorld SpringMVC获取请求参数→

    最近更新
    01
    并行训练
    03-29
    02
    tensor维度转换
    03-26
    03
    ResNet源码解读
    03-23
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 Geeks_Z | MIT License
    京公网安备 11010802040735号 | 京ICP备2022029989号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式