Spring MVC - 02 RequestMapping映射请求

眼前多少难甘事,自古男儿当自强。这篇文章主要讲述Spring MVC - 02 RequestMapping映射请求相关的知识,希望能为你提供帮助。
使用 @RequestMapping 映射请求
1.SpringMVC 使用@RequestMapping 注解为 控制器 指定可以处理哪些URL 请求
2. 在控制器的 类定义 及 方法定义处 都可以标注@RequestMapping
类定义处: 提供初步的请求映射信息。 相对于 WEB 应用的根目录
方法处: 提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注 @RequestMapping,则方法
处标记的URL 相对于WEB 应用的根目录
 
3.DispatcherServlet截取请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。
 
 

@Controller public class SpringMVCTest { public static final String SUCCESS = "success"; @RequestMapping("/testRequestMapping") public String testRequestMapping(){ System.out.println("testRequestMapping"); return SUCCESS; } }

< a href="https://www.songbingjia.com/android/testRequestMapping"> Test RequestMapping< /a>
http://localhost:8080/testRequestMapping     
 
@Controller @RequestMapping("springmvc") public class SpringMVCTest { public static final String SUCCESS = "success"; @RequestMapping("/testRequestMapping") public String testRequestMapping(){ System.out.println("testRequestMapping"); return SUCCESS; } }

< a href="https://www.songbingjia.com/android/springmvc/testRequestMapping"> Test RequestMapping< /a>
http://localhost:8080/springmvc/testRequestMapping   
 
映射请求参数、请求方法或请求头
 
@RequestMapping 除了可以使用 请求URL 映射请求 外,还可以使用 请求方法、请求参数 及 请求头映射请求
 
@ RequestMapping 的 value、method、params及 headers 分别表示 请求 URL、 请求方法、请求参数及请求头的映射条件,它们之间是与的关系。联合使用多个条件可让请求映射更加精确化。
 
params 和 headers 支持简单的表达式:
- param1:表示请求必须包含名为 param1的请求参数
- !param1:表示请求不能包含名为 param1的请求参数
- param1!=value1:表示请求包含名为 param1的请求参数,但其值不能为 value1
- {“param1=value1”,”param2”}:表示请求必须包含名为 param1 和 param2的两个请求参数,且param1参数的值必须为 value1
 
/** * 使用 method 属性来指定请求方式 * @return */ @RequestMapping(value = "https://www.songbingjia.com/testMethod", method = RequestMethod.POST) public String testMethod(){ System.out.println("testMethod"); return SUCCESS; }

 
< a href="https://www.songbingjia.com/android/springmvc/testMethod"> Test Method< /a> < br/>

Spring MVC - 02 RequestMapping映射请求

文章图片

 
 
< form action="springmvc/testMethod" method="POST">
< input type="submit" value="https://www.songbingjia.com/android/submit"/>
< /form>


@RequestMapping(value = "https://www.songbingjia.com/testParamsAndHeaders", params = {"username", "age!=10"}) public String testParamsAndHeaders(){ System.out.println("testParamsAndHeaders"); return SUCCESS; }

 
< a href="https://www.songbingjia.com/android/springmvc/testParamsAndHeaders?username=sun& age=10"> Test ParamsAndHeaders< /a> < br/>

报错:
20-Oct-2018 16:39:22.796 警告 [catalina-exec-1] org.springframework.web.servlet.PageNotFound.handleNoSuchRequestHandlingMethod No matching handler method found for servlet request:
path \'/springmvc/testParamsAndHeaders\', method \'GET\', parameters map[\'username\' -> array< String> [\'sun\'], \'age\' -> array< String> [\'10\']]

修改age=11 后访问正常

Spring MVC - 02 RequestMapping映射请求

文章图片

 
设置  headers 
HTTP  协议报文格式
Spring MVC - 02 RequestMapping映射请求

文章图片

 
@RequestMapping(value = "https://www.songbingjia.com/testParamsAndHeaders", params = {"username", "age!=10"}, headers = {"Accept-Language=zh-CN,zh; q=0.9"}) public String testParamsAndHeaders(){ System.out.println("testParamsAndHeaders"); return SUCCESS; }

IE  无法访问, Chrome  可以访问
 
Spring MVC - 02 RequestMapping映射请求

文章图片

 
Ant 风格资源地址
Ant 风格资源地址 支持 3种匹配符:
? : 匹配文件名中的一个字符
* : 匹配文件名中的任意字符
**: ** 匹配多层路径
 
@RequestMapping 支持 Ant 风格的URL:
/user/*/createUser: 匹配 /user/aaa/createUser 、 /user/bbb/createUser等URL
/user/**/createUser: 匹配 /user/createUser 、 /user/aaa/bbb/createUser等URL
/user/createUser??: 匹配 /user/createUserAA 、 /user/createUserBB等URL
@RequestMapping("/testAntPath/*/abc") public String testAntPath(){ System.out.println("testAntPath"); return SUCCESS;
}

< a href="https://www.songbingjia.com/springmvc/testAntPath/mmm/abc"> Test AntPath< /a> < br/> < br/>

【Spring MVC - 02 RequestMapping映射请求】
Spring MVC - 02 RequestMapping映射请求

文章图片

 
 
@ PathVariable 映射 URL 绑定的占位符
带占位符的 URL 是 Spring 3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑式的意义。
 
通过 @ PathVariable 可以将URL 中占位符 参数绑定到 控制器 处理方法的入参中:
URL 中的 {xxx} 占位符可以通过 @ PathVariable(“xxx”) 绑定到操作方法的入参中。
 
@RequestMapping("/testPathVariable/{id}") public String testPathVariable(@PathVariable("id") Integer id){ System.out.println("testPathVariable: " + id); return SUCCESS; }

 
< a href="https://www.songbingjia.com/springmvc/testPathVariable/1"> Test PathVariable< /a> < br/> < br/>

Spring MVC - 02 RequestMapping映射请求

文章图片

Console:    testPathVariable: 1





    推荐阅读