[toc]

@RequestMapping注解

映射请求注解**@RequestMapping**—为控制器指定可以处理哪些 URL请求。

在控制器的方法中都可以使用。

  • 标记在类上:提供初步的请求映射信息。相对于 WEB 应用的根目录
  • 标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。

作用:DispatcherServlet 截获请求后,就通过控制器上 @RequestMapping 提供的映射信息确定请求所对应的处理方法。

@RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求!

1. value属性

请求 URL

1
2
3
4
5
6
7
8
/**
* map.put("hello",cn.justweb.HelloWorldController.hello);
* */
@RequestMapping(value = "/hello" )
public String hello(){
System.out.println("Hello justweb!");
return "success";
}

2. method属性

请求方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 请求方式:
* GET 查询
* POST 插入
* DELETE 删除
* PUT 修改
* 注意method是数组
*/

@RequestMapping(value = "/requestMethod" ,method = {RequestMethod.GET,RequestMethod.DELETE})
public String requestMethod(){
System.out.println("Hello justweb!");
return "success";
}

3. params属性(了解)

请求参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   /***
* @RequestMapping params
* param映射的请求参数
*
* 支持简单的表达式:
*
* param1 当前请求中必须包含param1这个参数
* !param2 当前请求中不能包含param2这个参数
* param3 = value 当前请求中param3这个参数的值必须是value
* param4!=value4: 当前请求中param4这个参数的值不能是value4
*
* */

// http://localhost:8080/user/testRequestParams?username=**任意都可以访问
@RequestMapping(value = "/testRequestParams",method = RequestMethod.GET,params={"username"})
public String testRequestParams(){
System.out.println("params测试");
return "success";
}

4. headers属性(了解)

请求头的映射条件

1
2
3
4
5
6
7
8
/**
* 防盗链
* */
@RequestMapping(value = "/testHeaders",headers ={"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.367"})
public String testHeaders(){
System.out.println("headers测试");
return "success";
}

他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。

5. @RequestMapping支持Ant路径风格

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* ant 蚂蚁风格----匹配方式:
*
* *:匹配任意多个字符
* **:匹配多级路径,每一级路径内容任意多个字符 也可以是空
* ?:匹配任意一个字符
* 注意区分springaop的切入点表达式
* */
@RequestMapping("/testAntStyle/*/justweb/**/hello/??")
public String testAntStyle(){
System.out.println("testant");
return "success";
}

6. @RequestMapping映射请求占位符PathVariable注解

  1. 带占位符的URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
  2. 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过 @PathVariable(“xxx“) 绑定到操作方法的入参中。
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @RequestMapping 支持占位符的URL
* @PathVariable:将占位符对应的URL中具体的值映射到方法的形参中。
* @PathVariable(value = "username")
* 请求路径:/mm/dd/taoge/18
* */
@RequestMapping("/mm/dd/{username}/{age}")
public String testPlaceholder(@PathVariable(value = "username") String lastname,@PathVariable Integer age){
System.out.println("占位符的URL");
System.out.println( "lastname = " + lastname );
System.out.println( "age = " + age );
return "success";
}