SpringMVC
@RequestMapping
@RequestMapping 标识一个类:设置映射请求的请求路径的初始信息
@RequestMapping 标识一个方法:设置映射请求的请求路径的具体信息
@RequestMapping的value值
@RequestMapping的value值是一个字符串数组形式的,能够匹配多个请求地址对应的请求
@RequestMapping的method方法
不设置method属性,就表示不以method属性为条件(任何的请求方式都能匹配)
@RequestMapping注解的method属性通过请求的请求方式(get/post)匹配请求映射
@RequestMapping的method属性是一个RequestMapping类型的数组,表示该请求映射能够匹配多种请求方式的请求
若当前请求的请求地址满足请求映射的value值,但是不满足method值,则浏览器报错405 Request method 'POST' not supported
@RequestMapping的派生注解
处理get请求的映射:@GetMapping
处理post请求的映射:@PostMapping
处理put请求的映射:@PutMapping
处理delete请求的映射:@DeleteMapping
处理get请求的映射:@GetMapping
form表单中的method如果填写的不是post或者get时,无论填写的是put或者其他的值,将按get值来算
当请求映射的值不为RequestMethod.GET或者RequestMethod.POST时,浏览器将报错---->405 方法不允许(Request method 'GET' not supported)
@RequestMapping的params属性
当请求参数不匹配时,浏览器报错400
@RequestMapping注解的params属性通过请求的请求参数匹配请求映射
@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数 和请求映射的匹配关系
"param":要求请求映射所匹配的请求必须携带param请求参数
"!param":要求请求映射所匹配的请求必须不能携带param请求参数
"param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value
"param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value
在idea中使用 " ? " 传递参数会报错,但并不影响运行和使用
<a th:href="@{/testparams(username='admin',password='123456')}"> 测试Request Mapping的params </a> <a th:href="@{/testparams?username=admin}"> 测试Request Mapping的params </a>
@RequestMapping注解的headers属性
通过请求的请求头信息匹配请求映射
"headers":要求请求映射所匹配的请求必须携带header请求头信息
"!headers":要求请求映射所匹配的请求必须不能携带header请求头信息
"headers=value":要求请求映射所匹配的请求必须携带header请求参数且header=value
"headers!=value":要求请求映射所匹配的请求必须携带header请求参数但是header!=value
当前请求满足@RequestMapping的method和value属性,但是不满足headers属性,此时页面显示404错误,表示资源未找到
@RequestMapping支持ant风格的路径(模糊风格)
?:表示任意的单个字符
*:表示0个或多个任意字符
**:表示任意的一层或者多层目录 使用时,只能使用/**/xxx的方式
SpringMVC支持路径中的占位符
在RequestMapping注解的value属性中,通过占位符{xxxxxxxxx}表示传输的数据,再通过@PateVariable注解
将占位符所表示的数据赋值给控制器方法的形参
redirect重定向视图:
转发可以获取请求域中的数据,重定向不可以