[springMVC学习]2、@RequestMapping请求映射

发布于:2023-02-14 ⋅ 阅读:(520) ⋅ 点赞:(0)

目录

基本介绍

基本使用

作用于类和方法上

可以指定请求方法

指定请求参数

支持Ant资源请求

配合@PathVariable获取请求参数

一些简写形式

 总结


基本介绍

        在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即可,十分的方便。看该注解的源码,发现还有好几个参数都可以进行指定,如果感兴趣,可以自己再进行扩展一下。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到