RequestMapping注解的使用
- 开发Controller控制器类,使用@Controller注解标注,并在配置文件中用<context:component-scan/>扫描相应的包路径,就可以使用Controller类处理Http请求的控制器,可以创建数量不等的控制器,分别处理不同的业务逻辑请求。DispatcherServlet截获请求后,就可以通过控制器上的@RequestMapping提供的映射信息确定请求所对应的处理方法
- 在Controller控制器类的类定义和方法定义处都可以标注@RequestMapping注解。类定义处的RequestMapping提供初步的请求映射信息;方法处的RequestMapping,提供进一步的细分映射信息。RequestMapping注解类的属性,分别有value、method、consumes、produces、params、headers
-
- value:代表具体的请求路径,比如login,/user都是value的值,如果不带其它的属性,value则可以省略;
- method:指定请求的method类型,RequestMethod.get、post、put、delete等,默认可以不带这个属性,表示任意请求类型都可以接收。method属性可以是一个数组({ RequestMethod.GET, RequestMethod.POST});
- consumes:指定请求的提交内容类型(content-type),属性值application/json,text/html,text/plain。属性值可以是数组;
- produces:指定返回的内容类型,属性值与consumes一致。text/plain表示文本类型;
- params:指定请求中必须包含某些参数值,才会触发这个处理方法。例如params=“myParam=myValue”表示请求中包含了myParam=myValue才会触发。参数中除了使用=号以外,还可以使用!=号,表示在参数的值不等于的情况下触发这个方法;也可以不指定具体的值,直接使用paramName的格式,代表请求中必须包含参数名为paramName的参数;直接使用!paramName格式表示请求不能包含名为paramName的请求参数
- headers:请求头Header中必须包含某些指定的参数值,才能让该方法处理请求。例如headers=“content-type=text/*”
定义Ant风格和带占位符的URL
@RequestMapping不仅支持标准的URL,还支持Ant风格和带{xxx}占位符的URL,如下的URL都是合法的:
/user/*/login:匹配/user/任意字符(字符串)/login;
/user/**/login:匹配/user/login、/user/aaa/bbb/login、/user/任意字符(字符串)/login;
/user/login??:匹配/user/loginAA
占位符/user/{userId}:其中userId可以替换任意字符