1.@RequestMapping概述
- 用于将请求和处理请求的控制器关联,建立映射关系
- 当SpringMVC接收到请求,就会找来映射关系种对应控制器方法处理此请求
- RequestMapping中一个value只能对应一个映射,否则将报错
1.1具体位置
- 可以写在类和方法上面
- 在类上面时,设置映射请求路径的初始信息
- 在方法上时,设置映射请求路径的具体信息
- 当存在多个具体信息路径相同时,即可以使模块较多时候用类上添加此注解用于做路径区分
1.2value属性
- value属性通过请求的请求地址匹配请求映射
- value属性是一个字符串类型数组,表示此映射能够匹配多个请求地址对应的请求
- value属性是必须设置的,最少要映射一个请求路径
1 2 3 4
| @RequestMapping(value = {"/test1","/test2"}) public String index1(){ return "valueTest"; }
|
1 2
| <a th:href="@{/test1}">测试value属性->test1路径</a><br> <a th:href="@{/test2}">测试value属性->test2路径</a><br>
|
1.3method属性
- 通过请求方式来匹配请求映射
- 此属性是一个RequestMethod类型的数组,表示请求映射能匹配多种请求方式
- 若html文件的请求方式满足,但是method属性请求方式不满足,就会报错405
1 2 3 4 5
| @RequestMapping(value = "/methods",method = {RequestMethod.GET}) public String index2(){ return "valueTest"; }
|
1 2 3
| <form th:action="@{/methods}" method="get"> <input type="submit" name="提交"> </form>
|
1.4params属性
- 通过请求参数匹配请求映射
- params属性是一个字符串类型数组
1 2 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个或多个字符
- **代表任意一层或多层目录 单独使用
1 2 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占位符
1 2 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"; }
|
1 2
| <a th:href="@{/PhTest/10086/Tom}">占位符使用</a>
|
2.获取参数方式
2.1通过原生servlet
- 创建html对应映射方法,把原生Servlet写入方法形参
- 调用getParameter方法,传入html种的属性
- 创建html使用thymeleaf设置属性和对应值
1 2 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"; }
|
1 2 3
| <a th:href="@{/testServletAPI(username='Tom',password=123456)}"> 使用servlet api获取参数 </a>
|
2.2通过控制器方法
- 创建html对应映射方法
- 方法内写入html属性,使用String类型
- 创建html使用thymeleaf设置属性和对应值
1 2 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"; }
|
1 2
| <a th:href="@{/testParams(username='菲力',password=123456)}"> 使用控制器方法形参获取参数</a>
|
2.3@RequestParam获取
- required代表此参数是否必填,默认为true
- defaultValue代表默认值,若没传参情况下默认获取指定默认值
1 2 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"; }
|
1 2
| <a th:href="@{/testRps(user_name='Cherry',secret=123)}"> @RequestParams测试</a>
|
2.4实体类获取
1.创建实体类
2.创建html参数名称需要和实体类一直
3.创建映射方法,把实体类作为形参
4.输出实体类对象测试
1 2 3 4 5 6 7 8
| @Repository
public class User { private String id; private String username; private String password; }
|
1 2 3 4 5 6 7
| @RequestMapping("/POJO") public String index2(User user){ System.out.println(user); return "success"; }
|
1 2 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>
|