看书后总结:
1.使用该注解, 前提, 类中有Controller注解, 并且配置文件中<context:component-scan>扫描相应的类包, 即可使一个POJO成为一个能处理HTTP请求的控制器.
2.@RequestMapping 不但支持标准的url, 还支持Ant风格(?, *和**字符)
tip: 随便输 == 任意字符
/user/*/createUser 匹配 /user/随便输/createUser
/user/**/createUser 匹配/user/createUser /user/aaa/bbb/createUser
/user/createUser?? 匹配 /user/createUser随便输
/user/{userId}: 匹配 . user/用户id 这种没用过
/user/**/{userId} 同上面结合
company/{companyId}/user/{userId}/detail 同上面结合
3. @PathVariable 可以将url中的占位符参数绑定到控制器处理方法的入参上
@
RequestMapping("/{logicId}")
public ModelAndView companyInfo(
@PathVariable("logicId") String logicId) throws Exception {
Company com = new Company();
com.setLogicId(logicId);
// 企业信息页面
Company comData = productService.getCompanyByLogicId(com);
Map<String,Object> map = new HashMap<String,Object>();
map.put("comData", comData);
map.put("productRandId", MyUtil.getUUID());
return new ModelAndView("product/companyInfo", map);
}
URL中的{xxx}可以通过PathVariable("xxx")绑定到方法的入参中, 写在类上, 也可以
代码省略...请求变成以上这种形式.
4. RequestMapping 的其他参数
vaue和method不说了
params 请求参数 的条件
headers 报文头 的条件
例子:
@RequestMapping(value = "/companyInfo",
params = "logicId")
public ModelAndView companyInfo(String logicId) throws Exception {
路径必须是包含参数logicId才行
"!logicId" 不包含logicId参数
"logicId!= 5" 包含logicId参数, 但不能等于5
"logicId = 5", "userId" 表示包含两个参数, 同时logicId = 5