创建项目

创建Spring Boot项目

在com.example.demo包下创建controller.Test类

@RestController
@RequestMapping("test")
public class Test {
    
}

传统参数传递方式

①在Test类中创建demo方法,添加@RequestMapping("demo")注解

@RestController
@RequestMapping("test")
public class Test {
    @RequestMapping("demo")
    public String demo(String name){
        return name;
    }
}

②启动项目,访问 http://localhost:8080/test/demo?name=1234  

③访问时把name改成name1

 发现历览器没有返回值。可以看出传统方式下,浏览器输入的参数名和后端参数名一致时,数据才可以被接收到,不一致则不能。

④没传参数也可以访问到,只是不会返回数据

传统传输方式,参数是可选的。

@RequestParam注解

①在Test类中创建demo2方法,添加@RequestMapping("demo2")注解,参数前面加@RequestParam注解,这种情况下,name2是必须要有的

@RestController
@RequestMapping("test")
public class Test {
    @RequestMapping("demo2")
    public String demo2(@RequestParam String name2){
        return name2+"\t";
    }
}

 不传name2会报错

②编辑demo2方法,参数前面加@RequestParam("name33")注解,这种情况下,前端访问时,不能使用name3作为参数,要使用注解里面的name33

@RequestMapping("demo2")
    public String demo2(@RequestParam("name33") String name3){
        return name3+"\t";
    }

使用name3或不传参数会报错 

③ 编辑demo2方法,参数前面加@RequestParam(value = "name44")注解,这种情况下,前端访问时,不能使用name4作为参数,要使用注解里面的name44。这等价于@RequestParam("name44")

@RequestMapping("demo2")
    public String demo2(@RequestParam(value = "name44") String name4){
        return name4+"\t";
    }

同样,使用name4或不传参数会报错 

 ④ 编辑demo2方法,参数前面加@RequestParam(name = "name55")注解,这种情况下,前端访问时,不能使用name5作为参数,要使用注解里面的name55。这等价于@RequestParam("name55")

@RequestMapping("demo2")
    public String demo2(@RequestParam(name = "name55") String name5){
        return name5+"\t";
    }

 同样,使用name5或不传参数会报错 

 【总结】可以看出@RequestParam("")@RequestParam(name = "")@RequestParam(value= "")的效果是一样的。

⑤编辑demo2方法,参数前面加@RequestParam(name = "name66",required = false)注解。这种情况下name6是可选的,前端访问时使用name6作为参数和没有传参数都相当于没有传参

@RequestMapping("demo2")
    public String demo2(@RequestParam(value = "name66",required = false) String name6){
        return name6+"\t";
    }

 

 ⑦编辑demo2方法,参数前面加@RequestParam(name = "name77",defaultValue = "哈哈哈")注解。这种情况下前端访问时使用name7作为参数和没有传参数相当于没有传参,后端默认返回 defaultValue 的值

@RequestMapping("demo2")
    public String demo2(@RequestParam(value = "name77",defaultValue = "哈哈哈") String name7){
        return name7+"\t";
    }

这种情况下总会有返回值。

@PathVariable注解

创建方法3,加上注解

@RequestMapping(value ={
            "demo3/{name1}/{name2}/{name3}",
            //因为name3是可选参数,所以要考虑没有传输name3的情况
            "demo3/{name1}/{name2}"})
    public String demo3(
            // 可选 参数
            String name,
            // 必选 参数
            @PathVariable String name1,
            // 必选 参数
            @PathVariable("name2") String name2,
            //加required = false之后变成 可选 参数
            @PathVariable(value = "name3",required = false) String name3
    ){
        return name+"\t"
                +name1+"\t"
                +name2+"\t"
                +name3+"\t";
    }

当传name3参数时走红的,不传时走橙色 

 ①传name3的情况,http://localhost:8080/test/demo3/ALEX/LINUX/C?name=Admin 

 ②不传name3的情况, http://localhost:8080/test/demo3/ALEX/LINUX?name=Admin

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐