spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)

这篇具有很好参考价值的文章主要介绍了spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 一、@RequestMapping注解的功能
  • 二、@RequestMapping注解的位置
  • 三、@RequestMapping注解的value属性
  • 四、@RequestMapping注解的method属性
  • 五、@RequestMapping注解的params属性
  • 六、@RequestMapping注解的header属性
  • 七、SpringMVC支持ant分格的路径
  • 八、SpringMVC支持路径中的占位符

一、@RequestMapping注解的功能

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

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

二、@RequestMapping注解的位置

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

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

package com.mcode.api.controller;

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

/**
 * ClassName: RequestMappingController
 * Package: com.mcode.api.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/3 - 10:32 PM
 * @Version: v1.0
 */
@Controller
@RequestMapping("/test")
public class RequestMappingController {

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

三、@RequestMapping注解的value属性

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

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

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

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a{
          display: block;
        }
    </style>
</head>
<body>
   <a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-->/testRequestMapping</a>
   <a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a>
</body>
</html>
package com.mcode.api.controller;

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

/**
 * ClassName: RequestMappingController
 * Package: com.mcode.api.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/3 - 10:32 PM
 * @Version: v1.0
 */
@Controller
//@RequestMapping("/test")
public class RequestMappingController {

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

四、@RequestMapping注解的method属性

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

@RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求,若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错

405:Request method 'POST' not supported

spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a{
          display: block;
        }
    </style>
</head>
<body>
   <a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-->/testRequestMapping</a>
   <a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a>
   <form th:action="@{/test}" method="post">
       <input type="submit" value="提交">
   </form>
</body>
</html>
package com.mcode.api.controller;

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

/**
 * ClassName: RequestMappingController
 * Package: com.mcode.api.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/3 - 10:32 PM
 * @Version: v1.0
 */
@Controller
//@RequestMapping("/test")
public class RequestMappingController {

    @RequestMapping(value = {"test", "testRequestMapping"},
            method = RequestMethod.GET)
    public String testRequestMapping() {
        return "success";
    }
}

注:

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

五、@RequestMapping注解的params属性

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

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

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

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

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

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

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a{
          display: block;
        }
    </style>
</head>
<body>
   <a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-->/testRequestMapping</a>
   <a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a>
   <form th:action="@{/test}" method="post">
       <input type="submit" value="提交">
   </form>
   <a th:href="@{/test(username='admin',password=123456)}">测试@RequestMapping的params属性-->/test</a><br>
</body>
</html>
package com.mcode.api.controller;

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

/**
 * ClassName: RequestMappingController
 * Package: com.mcode.api.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/3 - 10:32 PM
 * @Version: v1.0
 */
@Controller
//@RequestMapping("/test")
public class RequestMappingController {

    @RequestMapping(value = {"test", "testRequestMapping"},
            method = RequestMethod.GET,
            params = {"username", "password!=123456"})
    public String testRequestMapping() {
        return "success";
    }
}

注:

若当前请求满足@RequestMapping注解的value和method属性,但是不满足params属性,此时页面回报错400:

Parameter conditions "username, password!=123456" not met for actual

request parameters: username={admin}, password=

六、@RequestMapping注解的header属性

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

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

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

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

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

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

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

七、SpringMVC支持ant分格的路径

?:表示任意的单个字符

@RequestMapping(value = "/a?a/testAnt")

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

@RequestMapping("/a*a/testAnt")

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

@RequestMapping("/**/testAnt")

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

八、SpringMVC支持路径中的占位符

原始方式:/deleteUser?id=1

rest方式:/deleteUser/1

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

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a{
          display: block;
        }
    </style>
</head>
<body>
   <a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-->/testRequestMapping</a>
   <a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a>
   <form th:action="@{/test}" method="post">
       <input type="submit" value="提交">
   </form>
   <a th:href="@{/test(username='admin',password=123456)}">测试@RequestMapping的params属性-->/test</a><br>
   <a th:href="@{/testRest/1/admin}">测试路径中的占位符-->/testRest</a><br>
</body>
</html>
package com.mcode.api.controller;

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

/**
 * ClassName: RequestMappingController
 * Package: com.mcode.api.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/3 - 10:32 PM
 * @Version: v1.0
 */
@Controller
//@RequestMapping("/test")
public class RequestMappingController {
    @RequestMapping("/testRest/{id}/{username}")
    public String testRest(@PathVariable("id") String id, @PathVariable("username") String username) {
        System.out.println("id:" + id + ",username:" + username);
        return "success";
    }
}

spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)文章来源地址https://www.toymoban.com/news/detail-623628.html

到了这里,关于spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring-mvc的参数传递与常用注解的解答及页面的跳转方式---综合案例

    目录 一.slf4j--日志 二.常用注解        2.1.@RequestMapping       2.2.@RequestParam       2.3.@RequestBody       2.4.@PathVariable 三.参数的传递 3.1 基础类型 3.2 复杂类型 3.3 @RequestParam 3.4  @PathVariable 3.5 @RequestBody 3.6 增删改查  四.返回值            4.1 void 返回值   4.2 String

    2024年02月09日
    浏览(51)
  • Spring中的@Value注解详解

    概述 本文配置文件为yml文件 在使用spring框架的项目中,@Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中,我们常用的功能相对简单。本文使您系统地了解@Value的用法。 @Value 注解可以用来将外部的值动态注入到 Bean

    2024年02月06日
    浏览(51)
  • spring5源码篇(12)——spring-mvc请求流程

    spring-framework 版本:v5.3.19 总体流程在 DispatchServelt#doDispatch 方法 首先会获取根据url去映射对应的处理器(即接口执行方法) 看到对应的 getHandler 方法 为方便阅读,进入debug。可以看到springmvc默认为我们注册了三个handlerMapping。 springMvc中的各个组件如处理器映射器,处理器适配

    2024年02月15日
    浏览(41)
  • Spring-MVC的crud增删改查--详细讲解

    目录 一.前言 二.crud---配置文件  2.1 pom.xml文件 2.2 web.xml文件  2.3 spring-context.xml 2.4 spring-mvc.xml 2.5 spring-MyBatis.xml  2.6 jdbc.properties数据库配置文件 2.7 generatorConfig.xml  2.8 日志文件log4j 三.后台          3.1 pageBean.java  3.2 pageTag 3.3 切面类 3.4 biz层 3.5 web层 四.前端  4.1 list.jsp 4

    2024年02月09日
    浏览(47)
  • Spring MVC:@RequestMapping

    @RequestMapping , 是 Spring Web 应用程序中最常用的注解之一,主要用于映射 HTTP 请求 URL 与处理请求的处理器 Controller 方法上。使用 @RequestMapping 注解可以方便地定义处理器 Controller 的方法来处理不同的 HTTP 请求,从而实现 Web 应用程序的路由功能。 @RequestMapping 注解可用于方法级

    2024年02月11日
    浏览(37)
  • servlet -> spring-mvc -> spring-boot-> spring-security目录

    springMVC 启动源码 spring-boot注册servlet 3.多种方式注册servlet spring-boot自动注入DispatchServlet spring-security核心配置解读(粗) spring-security源码解读(新)

    2024年02月09日
    浏览(44)
  • Spring、Spring-MVC、Mybatis、Mybatis-generator整合核心配置文件记录

    Spring、Spring-MVC、Mybatis、Mybatis-generator整合核心配置xml文件记录 spring-mybatis.xml

    2024年01月22日
    浏览(56)
  • Spring-MVC使用JSR303及拦截器,增强网络隐私安全

    目录 一、JSR303 ( 1 )  是什么 ( 2 )  作用 ( 3 )  常用注解 ( 4 )  入门使用 二、拦截器 2.1  是什么 2.2  拦截器与过滤器的区别 2.3  应用场景 2.4 基础使用 2.5 用户登录权限控制 给我们带来的收获 JSR 303是Java规范请求(Java Specification Request)的一部分, 它定义了一套标准的Jav

    2024年02月09日
    浏览(43)
  • Spring MVC是什么?详解它的组件、请求流程及注解

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解Spring MVC是什么,它的优缺点与九大组件,以及它的请求流程与常用的注解。 目录 一、Spring MVC是什么? 二、Spring MVC的优缺点 1、优点 2、缺点 三、Spring MVC的九

    2024年02月12日
    浏览(43)
  • 【SpringMVC】@RequestMapping注解(详解)

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

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包