关于@RequestMapping

@RequestMapping

源码
package org.springframework.web.bind.annotation;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {

	String name() default "";

	@AliasFor("path")
	String[] value() default {};

	@AliasFor("value")
	String[] path() default {};

	RequestMethod[] method() default {};

	String[] params() default {};

	String[] headers() default {};

	String[] consumes() default {};

	String[] produces() default {};
}
具体使用
  • 控制器中方法不能对应同一请求路径
  • 标识位置
    • 标识一个类:设置映射请求的请求路径的初始信息
    • 表示一个方法:设置映射请求的请求路径的具体信息
    • 如以下请求路径为 “/text/target”
@Controller
@RequestMapping(value = "/text")
public class controller {

    @RequestMapping(value = "/target")
    public String toTarget(){
        return "target";
    }
}
  • value属性

    • 通过请求地址匹配请求映射

    • 数据类型为字符串型数组,可以匹配多个请求路径(满足其中一个即可)

      @AliasFor("value")
      String[] path() default {};
      
    • 必须设置value属性(其他属性都可以不设置)

  • method属性

    • 通过请求方式(get或post等)匹配请求映射

      public enum RequestMethod {
      
         GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
      
      }
      
    • 数据类型为字符串型数组,可以匹配多个请求路径(满足其中一个即可)

      RequestMethod[] method() default {};
      
    • 不设置默认任何请求方式都允许

    • 派生注解(代替method)

      • 处理get方式的请求映射:@GetMapping
      • 处理post方式的请求映射:@PostMapping
      • 处理put方式的请求映射:@PutMapping
      • 处理delete方式的请求映射:@DeleteMapping
  • params属性

    • param:要求请求映射所匹配的请求必须携带param参数
    • !param:要求请求映射所匹配的请求不能携带param参数
    • param = value:要求请求映射所匹配的请求必须携带param参数,且参数为value
    • param != value:要求请求映射所匹配的请求必须携带param参数,但是参数不为value
  • headers属性

    • header:要求请求映射所匹配的请求必须携带header参数
    • !header:要求请求映射所匹配的请求不能携带header参数
    • header = value:要求请求映射所匹配的请求必须携带header参数,且参数为value
    • header != value:要求请求映射所匹配的请求必须携带header参数,但是参数不为value

风格

SpringMVC支持ant风格
  • ?:任意单个字符
  • *:任意的0个或多个字符
  • **:任意的一层或多层目录(只能使用/**/XXX的形式)
SpringMVC支持占位符
@PostMapping(value = "/getAllStuInfo{Page}")
public CommonResult getAllStuInfo(@PathVariable("Page")Integer page) {    
    return "getAllStuInfo";
}

@PathVariable:获取占位符值的单一方式,必须含value值

含占位符请求方式
原始方式rest风格功能
/queryBook?id=1/book/1查询1号图书 GET
/deleteBook?id=1/book删除1号图书 DELETE
/updateBook?id=1…/book/1更新1号图书 PUT
/addBook/book/1增加图书 POST
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
选项A、B、C都是正确的,选项D是错误的。 @RequestMapping注解是Spring MVC框架中用于处理请求映射的注解,可以用于标记控制器方法或控制器类。通过@RequestMapping注解,可以将请求和处理请求的控制器方法管理起来,建立映射关系。 A、@RequestMapping注解的value参数属性通过请求的请求地址匹配请求映射。value属性指定了请求的路径,可以是一个字符串或字符串数组。例如: ``` @RequestMapping(value = "/user/list", method = RequestMethod.GET) public String list(Model model) { // do something return "user/list"; } ``` 这个例子中,@RequestMapping注解的value属性指定了请求的路径为"/user/list",即当用户访问"/user/list"时,会调用list()方法。 B、@RequestMapping标识一个方法,设置映射请求请求路径的具体信息。通过@RequestMapping注解,可以将控制器方法与请求路径建立映射关系。例如: ``` @RequestMapping(value = "/user/list", method = RequestMethod.GET) public String list(Model model) { // do something return "user/list"; } ``` 这个例子中,@RequestMapping注解标记了list()方法,指定了请求路径为"/user/list",即当用户访问"/user/list"时,会调用list()方法。 C、@RequestMapping注解的作用就是将请求和处理请求的控制器方法管理起来,建立映射关系。通过@RequestMapping注解,可以将请求和控制器方法之间建立映射关系,从而让请求能够正确地调用相应的控制器方法。例如: ``` @RequestMapping(value = "/user/list", method = RequestMethod.GET) public String list(Model model) { // do something return "user/list"; } ``` 这个例子中,@RequestMapping注解将请求路径"/user/list"与list()方法建立了映射关系,即当用户访问"/user/list"时,会调用list()方法。 D、@RequestMapping标识一个类,设置映射请求的请求路径的初始信息。这个说法是错误的。@RequestMapping注解通常用于标记控制器方法,而不是控制器类。如果要为控制器类设置请求路径的初始信息,可以使用@RequestMapping注解标记控制器类。例如: ``` @Controller @RequestMapping("/user") public class UserController { // do something } ``` 这个例子中,@RequestMapping注解标记了控制器类UserController,指定了请求路径的初始信息为"/user",即当用户访问"/user/xxx"时,会调用UserController中相应的方法。 因此,本题答案为A、B、C。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matcha Latte

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值