SpringMVC @RequestMapping详解

1.@RequestMapping概述

Spring MVC使用@RequestMapping注解配置请求路径,它可以指定哪个类(或者方法)作为请求的处理器。

1.1 @RequestMapping可以标注的位置
  • 标注在方法上

    @Controller
    public class RequestMappingController {
    	@RequestMapping("/testRequest")
    	public String testRequest(){
        return "success";
    }
    
  • 标注在类和方法上

    @Controller
    @RequestMapping(/user”)
    public class RequestMappingController {
    	@RequestMapping("/testRequest")
    	public String testRequest(){
        return "success";
    }
    

2.@RequestMapping的属性

属性名作用
value默认,请求路径,支持Ant风格
method请求方式,默认支持所有请求方式,枚举类型RequestMethod
params请求参数,可以指定必须提供的参数名;单个使用字符串,多个使用集合;
headers请求头
2.1 value属性

@RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求

@Controller
public class RequestMappingController {
    @RequestMapping(value = {"/testRequest","/test"})
    public String testRequest(){
        return "success";
    }
}

Ant风格

通配符
匹配任何单字符
*匹配0或者任意数量的字符
**匹配0或者更多的目录
URL路径说明
/project/*.a匹配项目根路径下所有在project路径下的.a文件
/app/p?ttern匹配项目根路径下 /app/pattern 和 /app/pXttern,但是不包括/app/pttern
/**/example匹配项目根路径下 /project/example, /project/foow/example, 和 /example
/project/**/dir/file.匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html,/project/foow/bar/dir/file.pdf
/**/*.jsp匹配项目根路径下任何的.jsp 文件
2.2 method属性
  • @RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求
  • 浏览器向服务器发送请求,请求方式有很多GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS、TRACE。可以使用 method 属性来约束请求方式。
@Controller
public class RequestMappingController {
    @RequestMapping(value = "/testRequest",method = RequestMethod.GET)
    //多种请求方式:method = {RequestMethod.GET,RequestMethod.POST}
    public String testRequest(){
        return "success";
    }
}
2.3 header属性

@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射

@RequestMapping注解的headers属性是一个字符串类型的数组

四种表达式设置请求头信息和请求映射的匹配关系

  • header:要求请求映射所匹配的请求必须携带header请求头信息"

  • !header:要求请求映射所匹配的请求必须不能携带header请求头信息

  • header=value:要求请求映射所匹配的请求必须携带header请求头信息且header=value.

  • header!=value:要求请求映射所匹配的请求必须携带header请求头信息且header!=value

@RequestMapping(value = "/test",headers = "Host = localhost:8081")
    public String test(){
        return "success";
    }

说明:

  • headers=“Referer=http://localhost:8080/test/” :

    表示需要有请求头Referer=http://localhost:8080/SpringMVCDemo/才返回响应,否则报404错误。可以有效防止外站盗链接。

  • 设置headers = “Host = localhost:8081”,那么http://localhost:8080/……请求访问,则会报404

2.4 params属性
  • @RequestMapping注解的params属性通过请求的请求参数匹配请求映射
  • @RequestMapping注解的params属性是一个字符串类型的数组

四种表达式设置请求参数和请求映射的匹配关系

  • “param”:要求请求映射的请求必须为包含 param的请求参数

  • “!param”:要求请求映射的请求是不能包含param的请求参数

  • “param=value”:要求请求映射的请求必须包含 param 的请求参数,且 param 参数的值必须为 value

  • “param!=value”: 要求请求映射的请求是必须包含 param 的请求参数,其值不能为 value。

@RequestMapping(value = "/test",params = {"username","password"})
    public String test(){
        return "success";
    }

注意:我们设置了params属性,就意味着该请求映射的请求必须包含username,password才能够请求成功,否则报错404

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值