请求映射掌握:探讨Spring MVC中@RequestMapping注解的妙用

简介: 请求映射掌握:探讨Spring MVC中@RequestMapping注解的妙用

@RequestMapping

@RequestMappingSpring MVC 中的一个注解,用于将 HTTP 请求映射到控制器的处理方法,从而指定控制器中的方法如何处理来自客户端的 HTTP 请求。

语法

  • @RequestMapping 可用于类和方法级别。
  • 在类级别上使用时,它将为该类中所有处理方法提供通用的基础路径(统一前缀)。可以更好的按照功能模块进行区分,有利于模块化的管理维护。
  • 在方法级别上使用时,它将指定该方法可以处理的 HTTP 请求类型和路径,支持为同一个方法指定多个路径。
@RequestMapping(value = "deleteUser")
@RequestMapping(value = {"addUser", "saveUser"})

请求类型

  • @RequestMapping 支持与 HTTP 请求相关的方法,例如 GET、POST、PUT、DELETE 等。
  • 可以通过指定 method 属性来指定所需的 HTTP 请求方法类型。如果未指定,则默认支持所有请求方法类型。支持为同一个方法指定多个请求方式。
@RequestMapping(value = "hello", method = RequestMethod.POST)
@RequestMapping(value = "hello", method = {RequestMethod.POST, RequestMethod.PUT})
  • 当用户发起了 @RequestMapping 不支持的请求操作,SpringMVC 在服务器端抛出一个 405 错误 Method Not Allowed。

路径匹配

  • @RequestMapping 支持 Ant-style 路径模式和正则表达式路径模式,用于匹配 URL 路径。
  • Ant-style 路径模式中,可以使用通配符和占位符来表示变量。
  • 正则表达式路径模式中,可以使用标准的 Java 正则表达式语法来匹配 URL 路径。

请求参数和头部信息

  • @RequestMapping 还支持与请求参数和头部信息相关的条件匹配,例如请求参数名称、值、存在性和头部信息。
  • 可以通过指定 paramsheaders 属性来指定所需的请求参数和头部信息的条件,以便在控制器方法中进行条件性检查。

示例

package world.xuewei.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 用户控制器
 *
 * @author 薛伟
 * @since 2023/10/31 16:18
 */
@Controller
@RequestMapping("user")
public class UserController {
    @RequestMapping(value = "deleteUser")
    public String deleteUser(HttpServletRequest request, HttpServletResponse response) {
        System.out.println("UserController.deleteUser");
        return "/hello.jsp";
    }
    /**
     * 为同一个方法指定两个访问路径
     */
    @RequestMapping(value = {"addUser", "saveUser"}, method = RequestMethod.POST)
    public String saveUser(HttpServletRequest request, HttpServletResponse response) {
        System.out.println("UserController.saveUser");
        return "/hello.jsp";
    }
    /**
     * 为同一个方法指定多个请求方式
     */
    @RequestMapping(value = "updateUser", method = {RequestMethod.POST, RequestMethod.PUT})
    public String updateUser(HttpServletRequest request, HttpServletResponse response) {
        System.out.println("UserController.saveUser");
        return "/hello.jsp";
    }
}


相关文章
|
5天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
21 0
|
24天前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
12天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
36 4
SpringBoot必须掌握的常用注解!
|
14天前
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
54 2
|
14天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
29 1
|
9天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
8 0
|
21天前
|
存储 Java 数据管理
强大!用 @Audited 注解增强 Spring Boot 应用,打造健壮的数据审计功能
本文深入介绍了如何在Spring Boot应用中使用`@Audited`注解和`spring-data-envers`实现数据审计功能,涵盖从添加依赖、配置实体类到查询审计数据的具体步骤,助力开发人员构建更加透明、合规的应用系统。
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
161 2
|
6天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
18 2
 SpringBoot入门(7)- 配置热部署devtools工具