@RequestMapping注解

本文介绍了@RequestMapping注解的使用,包括定义浏览器请求方式,如GET、POST等。还说明了注解的位置,注解在方法上时,URL相对于web根目录;注解在类上时,类的注解相对于web根目录,方法上的相对于类上的路径,并给出了相应示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

@RequestMapping(path = "/user")

@RequestMapping(path = "/login", method=RequestMethod.GET)

org.springframework.web.bind.annotation.RequestMethod来定义浏览器请求的方式。

RequestMethod.

  • GET

  • POST

  • PUT

  • DELETE

注解的位置

  • 注解在方法上

@Controller

public class UserController {

    @RequestMapping("/login")

    public String login() {

        return "success";

    }

}

@RequestMapping注解在login方法上,类UserController没有加注解,此时的url相对于web根目录

这时的方法 login() 能处理的 URL 请求路径是基于 Web 应用的,也就是 http://localhost/SpringMVC/login

 

  • 注解在类上

@Controller

@RequestMapping("/user")

public class UserController {

    @RequestMapping("/login")

    public String login() {

        return "success";

    }

}

@RequestMapping注解在类上,此时类的注解是相对于web根目录,方法上的是相对于类上的路径

此时的方法login()能处理额URL请求路径是 http://localhost/SpringMVC/user/login

<think>嗯,用户想了解@RequestMapping注解。首先,我应该确认他们是否具备Spring MVC的基础知识。不过可能他们已经有了,所以直接开始解释。 首先,@RequestMapping的基本作用是映射HTTP请求到控制器方法。需要提到它可以应用在类和方法上,这样能区分不同层级的URL路径。 接下来,需要说明支持的HTTP方法,比如GET、POST等,但注意到Spring 4.3之后有更具体的注解,像@GetMapping,这时候应该建议使用这些更简洁的注解,同时说明@RequestMapping的method属性。 然后,处理请求参数和头部信息,这部分用户可能需要知道如何更精确地匹配请求,比如通过参数是否存在或特定值来限制映射条件。 路径变量,也就是@PathVariable,这里要举例子说明如何捕获URL中的变量,比如/user/{id},然后在方法参数中获取。 关于produces和consumes,这部分可能用户不太熟悉,需要解释它们的作用,比如设置响应的Content-Type或者指定处理请求的媒体类型。 最后,Ant风格和正则表达式,这部分高级特性可以简要提及,让用户知道有更灵活的路径匹配方式。 记得要结构清晰,分点说明,每个部分都给出示例代码,这样用户更容易理解。还要注意使用正确的LaTeX格式,虽然这个回答中可能用不到太多数学公式,但如果有变量或代码块的话,需要正确标注。同时,保持语言口语化,避免太技术化的术语,让解释更易懂。</think>我来为您详细解释Spring框架中的`@RequestMapping`注解,按照由浅入深的逻辑分步说明: 1. **基础定位** √ 作用:将HTTP请求映射到MVC控制器的处理方法 √ 适用位置:可标注在`类`或`方法`上 √ 示例: ```java @Controller @RequestMapping("/user") // 类级别路径 public class UserController { @RequestMapping("/profile") // 方法级别路径 public String profile() { return "user_profile"; } } ``` 此时完整路径为:`/user/profile` 2. **HTTP方法限定** √ 通过`method`参数指定接受的请求类型 √ Spring 4.3+推荐使用衍生注解: - @GetMapping ≡ @RequestMapping(method=GET) - @PostMapping - @PutMapping - @DeleteMapping √ 传统写法示例: ```java @RequestMapping(value = "/create", method = RequestMethod.POST) ``` 3. **参数匹配** √ 通过`params`条件筛选请求: ```java @RequestMapping(value = "/search", params = "keyword") // 必须包含keyword参数 @RequestMapping(value = "/filter", params = "type=admin") // 参数值精确匹配 ``` 4. **头部匹配** √ 通过`headers`条件筛选: ```java @RequestMapping(headers = "Content-Type=application/json") // 匹配指定请求头 @RequestMapping(headers = "!Cache-Control") // 不包含指定请求头 ``` 5. **路径变量(Path Variables)** √ 使用`{}`定义动态路径参数 √ 通过`@PathVariable`绑定到方法参数 ```java @GetMapping("/detail/{userId}") public String userDetail(@PathVariable Long userId) { // 使用userId查询用户 } ``` 6. **内容协商** √ `produces`:声明响应类型 √ `consumes`:限制请求类型 ```java @PostMapping(value = "/save", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.TEXT_HTML_VALUE) ``` 7. **高级路径匹配** √ 支持Ant风格模式: - `?` 匹配单个字符 - `*` 匹配路径段中的任意字符 - `**` 匹配多级路径 √ 示例: ```java @GetMapping("/images/*.jpg") // 匹配所有jpg图片请求 @GetMapping("/docs/**/manual") // 匹配多级路径下的manual ``` **最佳实践建议**: 1. 优先使用`@GetMapping`等衍生注解代替`method`参数 2. 类级别路径前缀推荐使用复数名词(如`/products`) 3. 路径变量命名建议使用小写+下划线风格 4. 对RESTful接口推荐设置明确的`produces/consumes` 常见组合用法示例: ```java @RestController @RequestMapping("/api/v1/products") public class ProductApi { @GetMapping(produces = "application/json") public List<Product> listAll() { ... } @PostMapping(consumes = "application/json") public ResponseEntity<?> create(@RequestBody Product product) { ... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值