Spring @RequestMapping 注解

@RequestMapping 是最常注解之一。会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。

Request Mapping 基础用法

在 Spring MVC应用程序中,RequestDispatcher(Front Controller 之下)这个servlet负责将进入的HTTP请求路由到控制器的处理方法。

对 Spring MVC 配置的时候, 需要指定请求与处理方法之间的映射关系

要配置 Web 请求的映射,就需要你用上 @RequestMapping 注解。

@RequestMapping 注解可以在控制器类的级别和/或其中的方法的级别上使用。

@RequestMapping 来处理多个 URI:统一资源标志符(Uniform Resource Identifier)

带有 @RequestParam 的 @RequestMapping

@RequestParam 注解配合 @RequestMapping 一起使用,可以将请求的参数同处理方法的参数绑定在一起。

@RequestParam 注解使用的时候可以有一个值,也可以没有值。这个值指定了需要被映射到处理方法参数的请求参数

  1. @RequestMapping(value = "/id")  
  2.     String getIdByValue(@RequestParam("id") String personId) {  
  3.         System.out.println("ID is " + personId);  
  4.         return "Get ID from query string of URL with value element";  
  5.     }  

在代码的第2行,id 这个请求参数被映射到了 thegetIdByValue() 这个处理方法的参数 personId 上。

  1.  @RequestMapping(value = "/name")  
  2.     String getName(@RequestParam(value = "person", required = false) String personName) {  
  3.         return "Required element of request param";  
  4.     }  

@RequestParam 的 defaultValue 取值就是用来给取值为空的请求参数提供一个默认值的。

用 @RequestMapping 处理 HTTP 的各种方法

Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。(默认HTTP GET类型)

为了能降一个请求映射到一个特定的 HTTP 方法,你需要在 @RequestMapping 中使用 method 来声明 HTTP 请求所使用的方法类型,如下所示:

  1. @RequestMapping(method = RequestMethod.GET)  
  2.     String get() {  
  3.         return "Hello from get";  
  4.     }  

用 @RequestMapping 来处理生产和消费对象

使用 @RequestMapping 注解的 produces 和 consumes 这两个元素来缩小请求映射类型的范围。

为了能用请求的媒体类型来产生对象, 你要用到 @RequestMapping 的 produces 元素再结合着 @ResponseBody 注解。

你也可以利用 @RequestMapping 的 comsumes 元素再结合着 @RequestBody 注解用请求的媒体类型来消费对象。

使用 @RequestMapping 处理动态 URI

@RequestMapping 注解可以同 @PathVaraible 注解一起使用,用来处理动态的 URI,URI 的值可以作为控制器中处理方法的参数。你也可以使用正则表达式来只处理可以匹配到正则表达式的动态 URI。

  1.  @RequestMapping(value = "/fetch/{id}", method = RequestMethod.GET)  
  2.     String getDynamicUriValue(@PathVariable String id) {  
  3.         System.out.println("ID is " + id);  
  4.         return "Dynamic URI parameter fetched";  
  5.     }  

在这段代码中,方法 getDynamicUriValue() 会在发起到 localhost:8080/home/fetch/10 的请求时执行。这里 getDynamicUriValue() 方法 id 参数也会动态地被填充为 10 这个值。

@RequestMapping 快捷方式

组合注解可以更好的表达被注解方法的语义。它们所扮演的角色就是针对 @RequestMapping 的封装,而且成了定义端点的标准方法。

例如,@GetMapping 是一个组合注解,它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。

方法级别的注解变体有如下几个:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

 @GetMapping("/person")  

  1.     public @ResponseBody ResponseEntity < String > getPerson() {  
  2.         return new ResponseEntity < String > ("Response from GET", HttpStatus.OK);  
  3.     }  
  4.  @PostMapping("/person")  
  1.     public @ResponseBody ResponseEntity < String > postPerson() {  
  2.         return new ResponseEntity < String > ("Response from POST method", HttpStatus.OK);  
  3.     }  

1、@controller 控制器(注入服务)

  • 用于标注控制层,相当于struts中的action层

2、@service 服务(注入dao)

  • 用于标注服务层,主要用来进行业务的逻辑处理

3、@repository(实现dao访问)

  • 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的

<bean id="" class=""/>)

  • 泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值