0、目录
1) 相关注解
@RequestMapping(最重要)、@RequestParam、@PathVariable
注意:@RequestParam与@PathVariable的区别。
2) 用到的类
枚举类:RequestMethod
3) 请求地址映射
A. 精准化映射
利用RequestMapping的value、method、params、header实现;同时利用@RequestParam对请求参数添加限制条件。
B. @PathVariable
REST风格;从请求地址URL模板中提取变量值。
C. Ant风格匹配:模糊匹配。
D. 正则表达式匹配
E. “或”匹配:从多个条件中满足一个即可。
1. @RequestMapping:映射请求地址。
1) @RequestMapping功能:映射请求地址
Spring MVC使用@RequestMapping注解为控制器类或内部方法指定可以处理哪些URL请求。@RequestMapping是一个用来处理请求地址映射的注解(将请求地址映射到对应的控制器方法中),可用于类或方法上。
@RequestMapping请求路径映射,如果标注在某个@Controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。
2) @RequestMapping修饰类和方法
注解@RequestMapping在类级别和方法级别层面都可标注,用来确定将被调用方法的URL。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法。在类上可以使用也可以不使用@RequestMapping,但是在handle方法上必须使用@RequestMapping。
按照一般的开发习惯:类上的@RequestMapping一般就是利用类名作为父路径,可以指定多层,如@RequestMapping(value='/xxx/xxx/类名');然后内部方法上利用方法名指定,一般就是一层路径,如@RequestMapping(value='/方法名')。
提供初步的请求映射信息,相当于WEB应用的根目录。
在标有@Controller的类中,利用@RequestMapping可以将该类中的方法变成handler方法,用来处理请求。
3) @RequestMapping的属性(6个):实现精准化映射
@RequestMapping具有四个属性:value、method、params、headers、consumes、produces。(consumes、produces使用较少)
分别为映射请求路径(value属性)、请求方法(method属性)、请求参数(parmas属性)或请求头(headers属性)。多个属性同时指定的时候,利用逗号隔开,属性之间的关系是“与”的关系。
@RequestMapping一般情况必须指定属性value,用来指定对应的URL,这就是粗略映射。当@RequestMapping只指定一个属性value时,此时value可省略不写,即@RequestMapping(value="/hello")等价于@RequestMapping("/hello")。
注意:"@RequestMapping"的value值前后是否有“/”对请求的路径没有影响,即value="book" 、"/book"、"/book/"其效果是一样的。
A. method:指定请求的method类型, GET、POST、PUT、DELETE等;
@RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST})
RequestMethod是一个枚举类。
B. params:指定request中必须包含某些参数值是,才让该方法处理。
@RequestMapping(params="action=del"),请求参数包含“action=del”,如:http://localhost:8080/book?action=del
params通过一个数组定义,如