1.@RequestMapping概述
- 用于将请求和处理请求的控制器关联,建立映射关系
- 当SpringMVC接收到请求,就会找来映射关系种对应控制器方法处理此请求
- RequestMapping中一个value只能对应一个映射,否则将报错
1.1具体位置
- 可以写在类和方法上面
- 在类上面时,设置映射请求路径的初始信息
- 在方法上时,设置映射请求路径的具体信息
- 当存在多个具体信息路径相同时,即可以使模块较多时候用类上添加此注解用于做路径区分
1.2value属性
- value属性通过请求的请求地址匹配请求映射
- value属性是一个字符串类型数组,表示此映射能够匹配多个请求地址对应的请求
- value属性是必须设置的,最少要映射一个请求路径| 12
 3
 4
 
 | @RequestMapping(value = {"/test1","/test2"})public String index1(){
 return "valueTest";
 }
 
 |  
 
| 12
 
 | <a th:href="@{/test1}">测试value属性->test1路径</a><br><a th:href="@{/test2}">测试value属性->test2路径</a><br>
 
 |  
 
1.3method属性
- 通过请求方式来匹配请求映射
- 此属性是一个RequestMethod类型的数组,表示请求映射能匹配多种请求方式
- 若html文件的请求方式满足,但是method属性请求方式不满足,就会报错405
| 12
 3
 4
 5
 
 | @RequestMapping(value = "/methods",method = {RequestMethod.GET})
 public String index2(){
 return "valueTest";
 }
 
 | 
| 12
 3
 
 | <form th:action="@{/methods}" method="get"><input type="submit" name="提交">
 </form>
 
 | 
1.4params属性
- 通过请求参数匹配请求映射
- params属性是一个字符串类型数组

| 12
 3
 4
 
 | @RequestMapping(value = "/paramsTest",params = {"username","password!=123456"})public String index5(){
 return "valueTest";
 }
 
 | 
| 1
 | <a th:href="@{/paramsTest(username='root',password=123456)}">测试params属性</a>
 | 
1.5Ant风格路径
- ?代表任意字符
- *代表任意0个或多个字符
- **代表任意一层或多层目录 单独使用| 12
 3
 4
 5
 6
 7
 8
 
 | @RequestMapping("/a?a/AntI")public String Ant1(){return "success";}
 
 @RequestMapping("/a*a/AntII")
 public String Ant2(){return "success";}
 
 @RequestMapping("/**/AntIII")
 public String Ant3(){return "success";}
 
 |  
 
1.6占位符
| 12
 3
 4
 5
 
 | @RequestMapping("/PhTest/{id}/{name}")public String PhTest(@PathVariable("id")String id,@PathVariable("name")String name){
 System.out.println("id:"+id+" name:"+name);
 return "success";
 }
 
 | 
| 12
 
 | <a th:href="@{/PhTest/10086/Tom}">占位符使用</a>
 
 | 
2.获取参数方式
2.1通过原生servlet
- 创建html对应映射方法,把原生Servlet写入方法形参
- 调用getParameter方法,传入html种的属性
- 创建html使用thymeleaf设置属性和对应值| 12
 3
 4
 5
 6
 7
 8
 
 | @RequestMapping(value = "/testServletAPI",params = {"username","password"})public String index1(ServletRequest req){
 
 System.out.println(req.getParameter("username"));
 System.out.println(req.getParameter("password"));
 return "success";
 }
 
 
 |  
 
| 12
 3
 
 | <a th:href="@{/testServletAPI(username='Tom',password=123456)}">使用servlet api获取参数
 </a>
 
 |  
 
2.2通过控制器方法
- 创建html对应映射方法
- 方法内写入html属性,使用String类型
- 创建html使用thymeleaf设置属性和对应值| 12
 3
 4
 5
 6
 7
 8
 
 | @RequestMapping("/testParams")
 public String testParams(String username,String password,String hobby){
 System.out.println(username);
 System.out.println(password);
 System.out.println(hobby);
 return "success";
 }
 
 |  
 
| 12
 
 | <a th:href="@{/testParams(username='菲力',password=123456)}">使用控制器方法形参获取参数</a>
 
 |  
 
2.3@RequestParam获取
- required代表此参数是否必填,默认为true
- defaultValue代表默认值,若没传参情况下默认获取指定默认值| 12
 3
 4
 5
 6
 7
 8
 
 | @RequestMapping("/testRps")public String testRps(
 @RequestParam(value = "user_name",defaultValue = "默认名称",required = false) String username,
 @RequestParam(value = "secret",defaultValue = "默认密码",required = true) String password){
 System.out.println(username);
 System.out.println(password);
 return "success";
 }
 
 |  
 
| 12
 
 | <a th:href="@{/testRps(user_name='Cherry',secret=123)}">@RequestParams测试</a>
 
 |  
 
2.4实体类获取
1.创建实体类
2.创建html参数名称需要和实体类一直
3.创建映射方法,把实体类作为形参
4.输出实体类对象测试
| 12
 3
 4
 5
 6
 7
 8
 
 | @Repository
 public class User {
 private String id;
 private String username;
 private String password;
 
 }
 
 | 
| 12
 3
 4
 5
 6
 7
 
 | @RequestMapping("/POJO")
 public String index2(User user){
 
 System.out.println(user);
 return "success";
 }
 
 | 
| 12
 3
 4
 5
 
 | <form th:action="@{/POJO}" method="post">用户名:<input type="text" name="username"><br>
 密  码:<input type="password" name="password"><br>
 <input type="submit" value="提交参数"/>
 </form>
 
 |