SpringMVC中@RequestMapping注解的详细说明

@RequestMapping 是Spring MVC中一个用于映射HTTP请求和控制器方法之间关系的注解。它用于定义控制器方法如何响应特定的HTTP请求,包括GET、POST、PUT、DELETE等。以下是@RequestMapping注解的详细说明:

  1. 基本用法:

    java 复制代码
    @RequestMapping("/example")
    public String handleRequest() {
        // 处理请求的业务逻辑
        return "viewName";
    }
    • @RequestMapping用于注解一个控制器方法,指定该方法应该处理的请求路径。在上述示例中,请求路径是/example
    • 控制器方法返回一个字符串,通常是视图名称。Spring MVC将查找名为"viewName"的视图并呈现它。
  2. HTTP方法映射:

    @RequestMapping可以指定控制器方法响应的HTTP方法,例如GET、POST、PUT、DELETE等。

    java 复制代码
    @RequestMapping(value = "/example", method = RequestMethod.GET)
    public String handleGetRequest() {
        // 处理GET请求的业务逻辑
        return "viewName";
    }
    • 使用method属性指定HTTP方法,如上例中的RequestMethod.GET
  3. 多个URL映射:

    @RequestMapping可以映射多个URL,以允许同一个控制器方法处理不同的请求路径。

    java 复制代码
    @RequestMapping(value = {"/example", "/alternate"})
    public String handleRequest() {
        // 处理请求的业务逻辑
        return "viewName";
    }
    • 在上述示例中,/example/alternate都将映射到handleRequest方法。
  4. 请求参数映射:

    @RequestMapping可以根据请求参数来映射请求。

    java 复制代码
    @RequestMapping(value = "/example", params = "paramName=paramValue")
    public String handleRequest() {
        // 处理请求的业务逻辑
        return "viewName";
    }
    • 使用params属性指定请求参数,如上例中的paramName=paramValue
  5. 请求头映射:

    @RequestMapping可以根据请求头信息来映射请求。

    java 复制代码
    @RequestMapping(value = "/example", headers = "Content-Type=application/json")
    public String handleRequest() {
        // 处理请求的业务逻辑
        return "viewName";
    }
    • 使用headers属性指定请求头信息,如上例中的Content-Type=application/json
  6. Ant风格路径:

    @RequestMapping支持使用Ant风格的路径表达式,允许更灵活的URL匹配。

    java 复制代码
    @RequestMapping(value = "/example/*/subpath")
    public String handleRequest() {
        // 处理请求的业务逻辑
        return "viewName";
    }
    • 在上述示例中,/example/*/subpath将匹配任何路径中包含/example/后跟任意字符串和/subpath的请求。
  7. 路径变量:

    @RequestMapping支持路径变量,允许从请求路径中提取参数。

    java 复制代码
    @RequestMapping("/example/{id}")
    public String handleRequest(@PathVariable("id") Long id) {
        // 使用路径变量id进行处理
        return "viewName";
    }
    • 在上述示例中,{id}是一个路径变量,它将从请求路径中提取,并作为方法参数传递给handleRequest方法。
  8. Consumes和Produces:

    @RequestMapping可以使用consumesproduces属性来限制请求的Content-Type和响应的Content-Type

    java 复制代码
    @RequestMapping(value = "/example", consumes = "application/json", produces = "application/json")
    public ResponseEntity<String> handleRequest() {
        // 处理JSON请求和响应
        return ResponseEntity.ok("Response JSON");
    }
    • 在上述示例中,@RequestMapping指定了只接受application/json类型的请求,并返回application/json类型的响应。

@RequestMapping是Spring MVC中用于定义请求映射的核心注解,非常灵活,可以根据多种条件来定义控制器方法的请求映射规则,以适应不同的应用需求。

相关推荐
再吃一根胡萝卜5 小时前
微服务治理的“四大护法”:从 Django 视角理解 Spring Cloud 核心组件
后端
再吃一根胡萝卜5 小时前
面试终极挑战:如何用 Django 经验,回答 Java 微服务实战问题?
后端
To_OC6 小时前
装完 ESLint 它一声不吭?我还以为代码写得多好
后端·node.js·eslint
凤山老林7 小时前
精细化流量治理:Spring Boot 动态特性开关与灰度发布体系
java·spring boot·后端
vipbic7 小时前
一个前端的 9 天重构:我是怎么用 Codex 重做航栈的
前端·javascript·后端
考虑考虑10 小时前
Excel导入时产生特殊字符处理
java·后端·java ee
IT_陈寒11 小时前
Redis的DEL命令竟然没删掉数据?我踩的这个坑你得知道
前端·人工智能·后端
用户9385156350711 小时前
Docker + Nginx + Node.js:从“我的电脑能跑,你的电脑跑不了”到一键部署
后端·nginx·docker
陆枫Larry11 小时前
两步验证(2FA )到底是什么?
后端
JavaGuide11 小时前
我用 Claude Code/ZCode+GLM-5.3 从零做了一款 Agent 游戏!
前端·后端