请求映射掌握:探讨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";
    }
}


相关文章
|
4月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = "/test", produces = "application/json; charset=UTF-8")`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
155 0
|
2天前
|
JSON 前端开发 Java
Spring MVC 核心组件与请求处理机制详解
本文解析了 Spring MVC 的核心组件及请求流程,核心组件包括 DispatcherServlet(中央调度)、HandlerMapping(URL 匹配处理器)、HandlerAdapter(执行处理器)、Handler(业务方法)、ViewResolver(视图解析),其中仅 Handler 需开发者实现。 详细描述了请求执行的 7 步流程:请求到达 DispatcherServlet 后,经映射器、适配器找到并执行处理器,再通过视图解析器渲染视图(前后端分离下视图解析可省略)。 介绍了拦截器的使用(实现 HandlerInterceptor 接口 + 配置类)及与过滤器的区别
|
3月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
277 5
|
4月前
|
JSON 前端开发 Java
Spring MVC常用的注解
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中 的所有响应请求的方法都是以该地址作为父路径。 @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。 @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。 @Controller:控制器的注解,表示是表现层,不能用用别的注解代替 @RestController : 组合注解 @Conntroller + @ResponseBody @GetMapping , @PostMapping , @Put
|
8月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
677 2
|
7月前
|
XML 安全 Java
Spring Boot中使用MapStruct进行对象映射
本文介绍如何在Spring Boot项目中使用MapStruct进行对象映射,探讨其性能高效、类型安全及易于集成等优势,并详细说明添加MapStruct依赖的步骤。
219 0
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
前端开发 Java 关系型数据库
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
167 0
|
前端开发 Java Go
Spring MVC 和 Spring Boot 的区别
Spring MVC 和 Spring Boot 的区别
302 0
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
280 1