目录
基本介绍
在springmvc中,我们可以使用@RequestMapping注解来指定类或者方法来对相应的http请求进行响应,该注解作用于类或方法上。注意:该注解用于有@Controller注解修饰的类上面
基本使用
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/add")
public void add(){
System.out.println("add方法被调用~");
}
}
上面的add方法就会对 ip:prot/项目路径/user/add的GET和POST请求生效
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
上面为@RequestMapping的源码,可以看见,能够指定很多的参数,下面来进行介绍
作用于类和方法上
@Target({ElementType.TYPE, ElementType.METHOD})
该注解如果类上和方法上都有,那么要作用的url就是 /类配置值/方法配置值,如果类上没有配置,那么就是 /方法配置值
可以指定请求方法
我们可以通过method来指定请求的方法get/post/delete/put等等,如果不指定,默认就是get和post
@RequestMapping(value = "/add",method = {RequestMethod.GET})
public ModelAndView add() {
System.out.println("add方法被调用~");
return null;
}
下面为可以支持的方法
指定请求参数
我们可以通过param来指定请求必须包含的参数,支持简单的表达式,如a=1,b!=2等,只有参数没有表示式就表示必须包含该参数,可以是任意值
@RequestMapping(value = "/add",params = {"name!=tom"},method = {RequestMethod.GET})
public ModelAndView add() {
System.out.println("add方法被调用~");
return null;
}
支持Ant资源请求
这个就是和正则表达式类似,?表示一个字符,*表示多个字符[只能匹配一层路径],**匹配多层路径
@RequestMapping(value = "/**/f")
public ModelAndView f(){
return null;
}
上面的f方法会匹配如 /aaa/bb/cc/f的请求
配合@PathVariable获取请求参数
如果有一个请求是 http://www.xxx.com/user/delete/id/1 ,请求参数是携带在url里面的,没有单独的请求参数,这时,我们就要配合使用@PathVariable来获取参数
@RequestMapping("/update/{username}")
public ModelAndView update(@PathVariable("username") String name) {
System.out.println(name);
return null;
}
@PathVariable作用于参数上,在@RequestMapping中使用{xxx}来表示占位符,而该位置的值就是通过@PathVariable来进行获取
一些简写形式
@RequestMapping(value = "/update/{username}", method = {RequestMethod.GET})
public ModelAndView update(@PathVariable("username") String name) {
System.out.println(name);
return null;
}
上面代码我们要求请求必须是get,如果要求请求是单个的某种形式,我们就可以使用简写方式,如下
@GetMapping("/update/{username}")
public ModelAndView update(@PathVariable("username") String name) {
System.out.println(name);
return null;
}
@GetMapping就是要求必须是get请求,除了这个,其他对应的请求也有相应的注解
总结
上面就是@RequestMapping的一些常见的用法,我们只需要在该注解上写上要处理的url即可,十分的方便。看该注解的源码,发现还有好几个参数都可以进行指定,如果感兴趣,可以自己再进行扩展一下。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74822.html