本文共 2242 字,大约阅读时间需要 7 分钟。
你可以使用@RequestMapping注解来将请求URL映射到整个类上或某个特定的方法上,即@RequestMapping 既可以定义在类上,也可以定义方法上
一般来说,类级别的注解负责将一个特定(或符合某种模式)的请求路径映射到一个控制器上,同时通过方法级别的注解来细化映射,即根据特定的HTTP请求方法(GET、POST 方法等)、HTTP请求中是否携带特定参数等条件,将请求映射到匹配的方法上
@RequestMapping 一共有五种映射方式:
1、标准URL 映射
标准URL 映射是最简单的一种映射,例如:
@RequestMapping("/hello")
或
@RequestMapping({"/hello","/world"})
2、Ant 风格的 URL 映射
Ant 通配符有三种:
通配符
说明
?
匹配任何单字符
*
匹配任意数量的字符(含 0 个)
**
匹配任意数量的目录(含 0 个)
例如:
(1)@RequestMapping("/?/hello/")
(2)@RequestMapping("/*/hello")
(3)@RequestMapping("/**/hello")
3、占位符URL 映射
URL 中可以通过一个或多个 {} 占位符映射
例如:@RequestMapping("/user/{userId}/show")
可以通过@PathVariable("") 注解将占位符中的值绑定到方法参数上
/*** 如果 URL 中的 userId 是纯数字,那么使用 @PathVariable* 做绑定时,可以根据自己的需求将方法参数类型设置为 Long、* Integer、String*/@RequestMapping("/user/{userId}/show")public ModelAndView show(@PathVariable("userId") Long userId) {// 创建 ModelAndView 对象,并设置视图名称ModelAndView mv = new ModelAndView("show");// 添加模型数据mv.addObject("msg", "User ID:" + userId);return mv;}
注意:@PathVariable("") 不能简写为 @PathVariable。因为在正常编译时,Java 类反射对象不包含方法的参数名称。如果在编
译时将Debug 打开(javac -debug=no),方法的参数名称才会记录到类中,此时才能简写,但不建议简写。
编译时,打开Debug 的方法:
打开Eclipse,Project->Properties->Java Compiler,勾选上
Add variable attributes to generated class files … 即可
4、限制请求方法的URL 映射
在HTTP 请求中最常用的请求方法是 GET、POST,还有其他的一些方法,如:DELET、PUT、HEAD 等
限制请求方法,例如:
@RequestMapping(value="/hello", method=RequestMethod.POST)
如需限制多个请求方法,以大括号包围,逗号隔开即可,例如:method={RequestMethod.GET,RequestMethod.POST}
5、限制请求参数的URL 映射,例如:@RequestMapping(value="/user/show", params="userId")
即请求中必须带有userId 参数;参数的限制规则如下:
(1)params="userId" 请求参数中必须包含 userId
(2)params="!userId" 请求参数中不能包含 userId
(3)params="userId!=1" 请求参数中必须包含 userId,但不能为 1
(4)params={"userId","userName"} 必须包含 userId 和 userName 参数
可以通过@RequestParam("") 注解将请求参数绑定到方法参数上
@RequestMapping(value="/user/show",params="userId")public ModelAndView show(@RequestParam("userId") Long userId) { // 创建 ModelAndView 对象,并设置视图名称 ModelAndView mv = new ModelAndView("show"); // 添加模型数据 mv.addObject("msg", "User ID:" + userId); return mv;}
要注意@PathVariable("") 和 @RequestParam("") 的不同:
@PathVariable("") 是将 URL 中占位符处的值绑定到方法参数上
@RequestParam("") 是将 URL 后的请求参数绑定到方法参数上
推荐一个模拟发送请求的Chrome 插件 Advanced REST Client,非常好用!
转自:https://blog.csdn.net/siwuxie095/article/details/79407097