springMVC-@RequestMapping

一、基本介绍

@RequestMapping注解的作用是将HTTP请求映射到具体的处理方法上。它可以用于控制器类方法上,用于定义请求的URL路径、请求方法、请求参数、请求头等信息,以便框架能够正确地将请求分派到相应的处理方法进行处理。

二、使用方法

1. 定义URL路径--value属性

通过指定@RequestMapping的value属性,可以将请求映射到指定的URL路径上。

@RequestMapping 注解可以修饰方法,还可以修饰类。当同时修饰类和方法时, 请求的 url 就是组合: /类请求值/方法请求值 。

在类级别上,@RequestMapping注解用于指定控制器类中所有处理方法的公共请求映射前缀。例如:

@Controller
@RequestMapping("/example")
public class ExampleController {
    // ...
}

上述代码中,所有在ExampleController类中的处理方法,都会以"/example"作为请求映射前缀。

在方法级别上,@RequestMapping注解用于指定具体的HTTP请求映射路径和请求方法。例如:

@Controller
@RequestMapping("/example")
public class ExampleController {
    
    @RequestMapping(value = "/hello")
    public String hello() {
        // 处理请求路径为/example/hello的逻辑
        ...
    }
    @RequestMapping(value = "/submit")
    public String submit() {
        // 处理请求路径为/example/submit的逻辑
        ...
    }
}

上述代码中,hello()方法被映射到请求路径为"/example/hello",submit()方法被映射到请求路径为"/example/submit"。

@RequestMapping 支持 Ant 风格资源地址

1. ?:匹配文件名中的一个字符

2. *:匹配文件名中的任意字符

3. **:匹配多层路径

举例:

/user/*/createUser: 匹配 /user/aaa/createUser、/user/bbb/createUser 等 URL

/user/**/createUser: 匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL

/user/createUser??: 匹配 /user/createUseraa、/user/createUserbb 等 URL

2. 指定请求方法--method属性

通过指定@RequestMapping的method属性,可以限定请求的HTTP方法。

请求简写形式
GET@RequestMapping(method = RequestMethod.GET)@GetMapping()
POST@RequestMapping(method = RequestMethod.POST)@PostMapping()
PUT@RequestMapping(method = RequestMethod.PUT)@PutMapping()
DELETE@RequestMapping(method = RequestMethod.DELETE)@DeleteMapping()

注意:

1.如果不使用method属性指定请求方法,SpringMVC 控制器默认支持 GET 和 POST 两种方法,即该url的GET请求 和 POST请求都会映射到该方法。

2.当明确指定了 method , 则需要按指定方式请求, 否则会报错。

例如,@RequestMapping(value = "/hello", method = RequestMethod.GET)将请求映射到GET方法,并且路径为"/hello"。

@Controller
public class ExampleController {
   
    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String hello() {
        // 处理GET请求路径为/hello的逻辑
        ...
    }
    @RequestMapping(value = "/submit",method = RequestMethod.POST)
    public String submit() {
        // 处理POST请求路径为/submit的逻辑
        ...
    }
}

3. 指定请求参数的条件--params属性

在@RequestMapping注解中,params属性可以用来指定请求参数的条件。

① param1: 表示请求必须包含名为 param1 的请求参数

@RequestMapping(value = "/example", params = "id")
public String exampleMethod(@RequestParam("id") int id) {
    // 方法体
}

使用@RequestMapping注解的params属性指定了请求参数为id。这意味着只有当请求中包含名为id的参数时,该方法才会被调用。在这个例子中,我们我们还使用@RequestParam注解来指定id参数的名称和类型。

② !=param1: 表示请求不能包含名为 param1 的请求参数

@RequestMapping(value = "/example", params = "!=id")
public String exampleMethod() {
    // 方法体
}

使用@RequestMapping注解的params属性指定了请求不能包含名为id的参数。这意味着只有当请求中不包含名为id的参数时,该方法才会被调用。

③ param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1

@RequestMapping(value = "/example", params = "id!=100")
public String exampleMethod() {
    // 方法体
}

使用@RequestMapping注解的params属性指定了请求不能包含名为id的参数等于100。这意味着只有当请求中包含有 bookId 参数,并且值不为100时该方法生效。

④ {"param1=val", "param2"}: 请求必须包含名为 param1 和 param2 的两个请求参数, 且 param1 参数的值必须为 val

@RequestMapping(value = "/example", params = {"id=100","name"})
public String exampleMethod() {
    // 方法体
}

4. 其他功能

@RequestMapping注解还支持其他属性,如headers、consumes和produces等,用于进一步限定请求的头信息等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@RequestMapping`是Spring MVC框架中的一个重要注解,用于将HTTP请求映射到控制器的方法上。这个注解用于简化RESTful风格的Web服务开发,使得路由和处理逻辑更加清晰和模块化。下面是一些关于`@RequestMapping`实验小结的关键点: 1. **路径映射**:`@RequestMapping`用于指定一个或多个HTTP请求方法(GET, POST, PUT, DELETE等),以及对应的URL路径。例如,`@RequestMapping(value = "/users", method = RequestMethod.GET)`表示该方法处理所有发送到"/users"路径的GET请求。 2. **请求参数**:可以通过`@RequestParam`或`@PathVariable`注解处理请求参数,如查询参数、路径变量等。如`@RequestParam(name="id") Long userId`会从请求中获取名为"id"的查询参数。 3. **返回类型**:`@ResponseBody`可以用来标记返回值为JSON或XML响应体,而`@ModelAttribute`用于处理表单提交的模型属性。 4. **异常处理**:可以使用`@ExceptionHandler`注解来捕获特定的异常,并提供定制的错误处理。 5. **分组和扫描器**:为了方便管理,可以通过`@RequestMapping`的`@ControllerAdvice`或`@Controller`的`@RequestMapping(basePath = "/api/v1")`来对多个控制器进行分组或定义统一的路径前缀。 相关问题-- 1. `@RequestMapping`如何处理不同类型的HTTP请求? 2. 如何在Spring MVC中使用`@RequestParam`和`@PathVariable`? 3. `@ResponseBody`和`@ModelAttribute`的区别是什么? 4. 如何在Spring MVC中实现全局异常处理? 5. 分组和扫描器在Spring MVC中的应用场景是什么?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值