SpringMVC系列: 注解@RequestMapping@PathVariable

【SpringMVC系列: 注解@RequestMapping@PathVariable】时人不识凌云木,直待凌云始道高。这篇文章主要讲述SpringMVC系列: 注解@RequestMapping@PathVariable相关的知识,希望能为你提供帮助。
一、@RequestMapping[email  protected]除了能修饰方法,还能修饰类
(1)修饰类:提供初步的请求映射信息,相对于web请求的根目录
(2)修饰方法:提供进一步的细分映射信息
相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于web应用的根目录
[email  protected]的请求方式
@RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条
件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
3.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

1 package com.study.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6 7 @RequestMapping("/requestMappingTest") 8 @Controller 9 public class RequestMappingTest { 10 11public static final String SUCCESS="success"; 12/** 13* [email  protected]除了能修饰方法,还能修饰类 14*(1)修饰类:提供初步的请求映射信息,相对于web请求的根目录 15*(2)修饰方法:提供进一步的细分映射信息 16* 相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于web应用的根目录 17* @return 成功 18*/ 19@RequestMapping("/testRequestMapping") 20public String testRequestMapping() { 21System.out.println("testRequestMapping"); 22return SUCCESS; 23} 24 25/** 26* [email  protected]的请求方式 27@RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条 28件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。 29* @return 30*/ 31@RequestMapping(value="https://www.songbingjia.com/testMethod",method=RequestMethod.POST) 32public String testMethod() { 33System.out.println("testMethod的post方式"); 34return SUCCESS; 35} 36 37/** 38* 3.了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式. 39* 40* @return 41*/ 42@RequestMapping(value = "https://www.songbingjia.com/android/testParamsAndHeaders", params = { "username", 43"age!=10" }, headers = { "Accept-Language=zh-CN,zh; q=0.8" }) 44public String testParamsAndHeaders() { 45System.out.println("testParamsAndHeaders"); 46return SUCCESS; 47} 48/** 49* 4.Ant 风格资源地址支持 3 种匹配符: 50*– ?:匹配文件名中的一个字符 51*– *:匹配文件名中的任意字符 52*– **:** 匹配多层路径 53* @return 54*/ 55@RequestMapping("/testAntPath/*/abc") 56public String testAntPath() { 57System.out.println("testAntPath"); 58return SUCCESS; 59} 60 }

1 < %@ page language="java" contentType="text/html; charset=UTF-8" 2pageEncoding="UTF-8"%> 3 4 < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 < html> 6 < body> 7 < !-- href="https://www.songbingjia.com/android/helloworld"和HelloWorld.java的@RequestMapping("/helloworld")对应 --> 8 < a href="https://www.songbingjia.com/android/helloworld"> Hello World< /a> 9 10 < br/> 11 < a href="https://www.songbingjia.com/android/requestMappingTest/testRequestMapping"> @RequestMapping修饰类和方法< /a> 12 13 < br/> 14 < form action="requestMappingTest/testMethod" method="POST"> 15 < input type="submit" value="https://www.songbingjia.com/android/测试@RequestMappin的post请求方式"> 16 < /form> 17 18< br/> 19 < a href="https://www.songbingjia.com/android/requestMappingTest/testParamsAndHeaders?username=lgs& age=11"> testParamsAndHeaders< /a> 20 21< br/> 22 < a href="https://www.songbingjia.com/android/requestMappingTest/testAntPath/ggggggg/abc"> testAntPath< /a> 23 24 25 < /body> 26 < /html>

二、@PathVariable@PathVariable 映射 URL 绑定的占位符
? 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
? 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。
1 < a href="https://www.songbingjia.com/android/pathVariableTest/testPathVariable/10"> testPathVariable< /a>

1 package com.study.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.PathVariable; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 7 @RequestMapping("/pathVariableTest") 8 @Controller 9 public class PathVariableTest { 10 11public static final String SUCCESS="success"; 12 13/** 14* @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中. 15* @param id 16* @return 17*/ 18@RequestMapping("/testPathVariable/{id}") 19public String testPathVariable(@PathVariable("id") Integer id) { 20System.out.println("testPathVariable: " + id); 21return SUCCESS; 22} 23 }

 
















    推荐阅读