SpringBoot:web开发之二

web开发

如果一个配置类只有有参构造,那么这个配置类的所有参数均从容器中获取。


@PathVariable

如果参数列表中有map,则会自动将所有参数封装在map中。

@GetMapping("/car/{id}/{owner}")
public Map getCar(@PathVariable("id")int id,
                  @PathVariable("owner")String owner,
                  @PathVariable()Map<String,String> mv){
    System.out.println(mv);
    System.out.println(mv.get("id"));
    System.out.println(mv.get("owner"));
    Map map = new HashMap();
    map.put("id",id);
    map.put("owner",owner);
    return map;
}

@RequestHeader

获取请求头信息。可以在括号中填写想获取哪个请求头信息。也可以使用map自动封装所有请求头信息。


@RequestParam

@GetMapping("/interests")
public String getInterests(@RequestParam("interest") List interest){
    System.out.println(interest);
    return interest.toString();
}
//在使用@RequestParam Map<String,String> map时,只会保存一个值。

矩阵变量

<a href="/getUser?userId=1">一般形式</a><br>

<a href="/cars/sales;low=23;brand=byd,ad,bc">矩阵变量</a><br>

如需使用矩阵变量则必须重新设置是否移除分号RemoveSemicolonContent

@Bean
public WebMvcConfigurer webMvcConfigurer(){
    return new WebMvcConfigurer() {
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            UrlPathHelper urlPathHelper = new UrlPathHelper();
            urlPathHelper.setRemoveSemicolonContent(false);
            configurer.setUrlPathHelper(urlPathHelper);
        }
    };
}
@GetMapping("/cars/{path}")
public Map cars(@MatrixVariable("low")Integer low,
                @MatrixVariable("brand")List<String> brand){
    Map<String,Object> map = new HashMap<>();
    map.put("low",low);
    map.put("brand",brand);
    return map;
}
<!--对于使用另一种形式的矩阵变量-->
<a href="user/1;age=40/2;age=20">矩阵变量2</a>
@GetMapping("/user/{boss}/{emp}")
public Map user(@MatrixVariable(value = "age",pathVar = "boss")Integer bossAge,
                @MatrixVariable(value = "age",pathVar = "emp")Integer empAge){
    Map<String,Object> map = new HashMap<>();
    map.put("bossAge",bossAge);
    map.put("empAge",empAge);
    return map;
}
posted @ 2022-02-16 22:30  Boerk  阅读(38)  评论(0)    收藏  举报