2 @RequestMapping注解

@RequestMapping注解的功能

  • 用于将请求和处理请求的控制器方法管理起来,建立映射关系
  • SpringMVC接收到请求后会通过映射关系来寻找控制器方法处理请求

@RequestMapping标识的位置

  • 标记在类上
    • 标记在类上的RequestMapping会为它的方法再加一层,设置的是映射请求路径的初始信息
  • 标记在方法上
    • 标记在方法上,就是设置映射请求路径的具体信息
  • 可能不太好理解,举个例子
    • 我有一个hello类,它是控制器组件,它一开始没有标记@RequestMapping,我在它的sayhello()中标记了@RequestMapping(“/sayhello”)
    • 我原先url="http://localhost:8080/sayhello"就能匹配到这个处理方法
    • 现在我在hello类上表示@RequestMapping(“/hello”)
    • 那我只有url="http://localhost:8080/hello/sayhello"才能匹配到这个处理方法了

@RequestMapping注解的属性

  • RequsetMapping中的属性设置的越多,请求匹配的越精确
  • value属性
    • @RequestMapping(value = {"/"}),这样写也是可以的@RequestMapping("/"),value属性是必须要设置的
    • 通过请求的请求路径匹配请求
    • 它是一个数组,表示一个RequestMapping(“value1,value2”)它可以匹配多个url,就是一个处理方法可以用来处理多个url的请求
  • method属性
    • 表示匹配请求方式,在value的基础上进一步匹配,一般请求默认都是get,除了表单可以设置post提交方式
    • 它也是一个枚举类数组(RequestMethod.GET,RequestMethod.POST,…),可以匹配多个请求方式
    • @RequestMapping(value = {"/"},method = {RequestMethod.GET}),同时满足value和method才能匹配到这个处理方法
  • 与method属性性质类似的@RequestMapping的派生注解
    • @GETMapping,POSTMapping…
    • 效果和设置method属性一样,只要给方法打上这些注解,然后设置它的value值就行,不用设置method了
  • param属性(在value和method的匹配上进行参数匹配,了解,不常用,网上搜吧)
  • header属性(请求头匹配,了解,不常用)
  • SpringMVC支持ant风格路径,可以使用特殊字符匹配,在value属性中使用
    • ?表示任意单个字符 如果是/? 那么就会匹配/a /b /c …
    • *表示任意0个或者多个字符(不包括?和/)
    • **表示任意层数的目录,在使用**的时候只能使用/**/xxx的格式 中间**就表示多层目录,**前后不能有任何其他字符
  • SpringMVC支持路径占位符(重点)
    • 通过路径中的占位符将参数传递给处理方法
      • 在url路径中用使用占位符 比如"/hello/{id}/{name}"
      • 如果请求路径是"/hello/1/张三",那么参数值为id=1,name=张三
      • 我们可以直接获取参数
        • @RequestMapping("/hello/{id}/{name}")
        • public String protal(@PathVariable("id") Integer id,@PathVariable("name") String username){
          • System.out.println(id);
          • System.out.println(username);
          • return "sucess";
        • }
      • 打印结果是1和张三,使用@PathVarialbe注解来指定参数的对应关系,比如username和路径中的占位符name对应
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值