1、注解的功能
将请求和处理的关系关联起来,建立映射关系
注:thymeleaf用@{}包裹起来的路径会自动添加上下文路径
2、注解的位置
(1)如果标识一个类:设置映射请求的请求路径的初始信息
(2)如果标识一个方法:设置映射请求路径的具体信息
3、value属性
value属性通过请求的请求地址匹配请求映射
value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
value属性值必须设置,至少通过请求地址匹配请求映射
4、method属性
method属性通过请求的请求方式(get或者post)匹配请求映射
method属性是一个RequestMethod类型的数组,表示该请求能够匹配多种请求方式的请求
若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:某种请求方式不被支持
5、派生注解
对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
get请求:GetMapping
post请求:PostMapping
put请求:PutMapping
delete请求:DeleteMapping
但是目前浏览器只支持get和post,若在form表单提交的时候,为method设置了其他请求方式的字符串(put或者delete),则按照默认的请求方式get处理
若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter
6、params属性
params属性通过请求的请求参数匹配映射,与value和method不同的是,params的属性数组里必须全部满足才行
params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系
- “param”:要求请求映射所匹配的请求必须携带param请求参数
- “!param“:要求请求映射所匹配的请求必须不能携带param请求参数
- ”param=value“:要求请求映射所匹配的请求必须携带param请求参数且param=value
- ”param != value":要求请求映射所匹配的请求必须携带param请求参数但是param != value
7、headers属性
headers属性通过请求的请求头信息匹配请求映射,使用方法同params,不满足则报404错误
8、SpringMVC支持ant风格的路径(模糊查询)
?:表示任意的单个字符
:表示任务的0个或者多个字符
*表示任意的一层或者多层目录
注:在使用*的时候,只能使用/*/xxx的方式
9、SpringMVC支持路径中的占位符(重点)
原始方式:/deleteUser?id=1
rest方式:/deleteUser/1
SpringMVC路径中的占位符常用语restful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性通过占位符{xxx}来表示传输的数据,再通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参
@RequestMapping(value = "/liuwei/{username}/{password}")
public String index(@PathVariable String username, @PathVariable String password){
System.out.println(username + password);
return "hello";
}