本文引自:
RequestMapping是一个用来处理请求地址映射的注解,可用于类、接口货方法上,用于类或者接口上的时候,表示类中的所有相应请求的方法都是以该地址作为父路径,基本字段有name,path(value)(path 和 value 互相引用),method,params,headers,consumes,produces
比较常用的有:
value(path)
指定请求的实际地址,指定的地址可以是 URI Template 模式method
指定请求的 method 类型。例如 GET、POST、PUT、DELETE 等consumes
指定处理请求的提交内容类型(Content-Type),例如application/json,text/html;produces
指定返回的内容类型,仅当 request 请求头中的(Accept)类型中包含该指定类型才返回params
指定 request 中必须包含某些参数值,才让该方法处理请求。header
指定 request 中必须包含某些指定的 header 值,才能让该方法处理请求。value 用法:
在方法上声明:@Controller
public class LoginController { @RequestMapping("/to_login") public ModelAndView toLogin(){ System.out.println("进入 to_login"); ModelAndView mv = new ModelAndView(); mv.setViewName("login"); return mv; }}此时请求地址为 ip/项目名/to_login 在类上声明一个 @RequestMapping 注解:@Controller
@RequestMapping("/login")public class LoginController { @RequestMapping("/to_login") public ModelAndView toLogin(){ System.out.println("进入 to_login"); ModelAndView mv = new ModelAndView(); mv.setViewName("login"); return mv; }}则此时请求地址为 ip/项目名/login/to_login * 普通 URL 映射:@RequestMapping({“/to_login”,”login”}):多个URL路径可以映射到同一个处理器的功能处理方法 * URI 模版模式映射1、@RequestMapping(“/login/{userId}”):{xx} 占位符请求URL 可以是 “/login/123” 或 “/login/abc”。通过@PathVariable 可以提取 URI 模版模式中的 {xx} 中的 xx 变量的值。
2、@RequestMapping(“/login/{userId}/topic”):请求的 URL 可以是 “/login/uid/topic” 3、@RequestMapping(“/login/{userId}/topic/{topicId}”):请求的 URL 可以是 “/login/uid/topic/tid” Ant 风格的 URL 路径映射 1、@RequestMapping(“/login/**”):可以匹配 “/login/abc/abc”,但 “/login/abc” 将会被 URI 模版模式映射中的 “/login/{userId}” 模式优先映射到(最长匹配优先) 2、@RequestMapping(“/login/abc?”):可匹配 “/login/abcd” 或者 “/login/abc1”,但不匹配 “/login/abc” 或 “/login/abcde” 3、@RequestMapping(“/login/abc*”):可匹配 “/login/abcd” 或 “/login/abcde”,但不匹配 “/login/abc” 代码示例:@Controller
@RequestMapping("/login")public class LoginController { @RequestMapping("/to_login") public ModelAndView toLogin() { System.out.println("进入 to_login"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/to_login"); mv.setViewName("login"); return mv; }@RequestMapping({"/to_login2","/login"})
public ModelAndView toLogin2() { System.out.println("进入 to_login"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/to_login2,/login"); mv.setViewName("login"); return mv; }@RequestMapping({"/to_login/abc?"})
public ModelAndView toLogin3() { System.out.println("进入 to_login"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/to_login/abc?"); mv.setViewName("login"); return mv; } @RequestMapping({"/to_login/abc*"}) public ModelAndView toLogin4() { System.out.println("进入 to_login"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/to_login/abc*"); mv.setViewName("login"); return mv; } @RequestMapping("/**") public ModelAndView toLogin5() { System.out.println("进入 /**"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/**"); mv.setViewName("login"); return mv; }@RequestMapping("/to_login/**")
public ModelAndView toLogin6() { System.out.println("进入 /to_login/**"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/to_login/**"); mv.setViewName("login"); return mv; }@RequestMapping("/to_login/abc")
public ModelAndView toLogin7() { System.out.println("进入 /to_login/abc"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/to_login/abc"); mv.setViewName("login"); return mv; }@RequestMapping("/**/abc")
public ModelAndView toLogin8() { System.out.println("进入 /**/abc"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/**/abc"); mv.setViewName("login"); return mv; }@RequestMapping("/*/*")
public ModelAndView toLogin9() { System.out.println("进入 /*/*"); ModelAndView mv = new ModelAndView(); mv.addObject("path", "/*/*"); mv.setViewName("login"); return mv; }}