JavaWeb开发中常用路径变量注解

文章目录

    • 一、@PathVariable
    • 二、@RequestHeader
    • 三、@RequestBody
    • 四、@RequestParam
    • 五、@MatrixVariable
    • 六、@CookieValue
    • 七、@RequestAttribute


一、@PathVariable

  • 功能:用于访问URI模板变量。
  • 案例
    • controller层代码
       @ResponseBody
       @GetMapping("/demo01/{id}/{name}")
        public String testPathVariable(@PathVariable int id,@PathVariable("name") String userName){
           
        //@PathVariable int id: 注解后不跟value值,则该注解修饰的变量id自动和路径变量中的同名变量id相匹配
        //@PathVariable("name") String userName:注解后跟value值,则该注解修饰的变量
        //userName自动和路径变量中的变量name相匹配
        /*注:传入变量中含有@PathVariable,则该注解修饰的变量必须在路径中体现,
        否则报错,在@PathVariable("name")后加上@PathVariable int tt,则访问案例的请求路径时,
        会出现 Resolved [org.springframework.web.bind.MissingPathVariableException: 
        Missing URI template variable 'tt' for method parameter of type int]异常
        */
         return  "id="+id+","+"userName="+userName;
     }
    
    • 请求路径(注:本文章所有测试都使用8088端口,也可使用默认的8080)
      http://localhost:8088/demo01/3/张三
    • 执行结果
      JavaWeb开发中常用路径变量注解_第1张图片

二、@RequestHeader

  • 功能:用于访问请求标头。标头值将转换为声明的方法参数类型。
  • 案例
    • controller层代码
      @ResponseBody
      @GetMapping("/demo02")
     public String testRequestHeader(@RequestHeader("Host") String host,
                                     @RequestHeader("Accept-Language") String acceptLanguage,
                                     @RequestHeader("Accept-Encoding") String acceptEncoding ){
           
         /*@RequestHeader注解里填需要访问的请求头信息,常见的有
         Accept;Accept-Encoding;Accept-Language;Cookie;Host......
         * */
         return "Host="+host+"
    "
    +"Accept-Language="+ acceptLanguage+ "
    "
    +"Accept-Encoding="+ acceptEncoding; }
    • 请求路径
      http://localhost:8088/demo02
    • 执行结果
      JavaWeb开发中常用路径变量注解_第2张图片

三、@RequestBody

  • 功能: 用于访问HTTP请求正文。正文内容通过使用HttpMessage-Converter实现转换为声明的方法参数类型。
  • 案例
    • form表单
    <form action="/demo03" method="post">
     学号:<input type="text" name="id"/><br/>
     年龄:<input type="text" name="age"/><br/>
     电话:<input type="text" name="telephone"/><br/>
     <button>submitbutton>
     form>
    
    • bean实体(案例2用到)
    @Data
    @AllArgsConstructor
    @Setter
    @ToString
    public class user {
           
     private String id;
     private String telephone;
     private String age;
    }
    
    • controller层代码
    //案例1
     @ResponseBody
     @PostMapping("/demo03")
     public  String testRequestBody(@RequestBody String context){
           
         return context;
     }
      //案例2(如果不加@RequestBody,则可以将表单提交内容和bean实体类自动匹配)
      //@ResponseBody
      //@PostMapping("/demo03")
      //public  String testRequestBody( user user ){
           
      //    return user.toString();
      //}
     }
     
    
    • 请求路径
      http://localhost:8088/form.html
    • 执行结果
      JavaWeb开发中常用路径变量注解_第3张图片
      案例1:
      JavaWeb开发中常用路径变量注解_第4张图片
      案例2:
      JavaWeb开发中常用路径变量注解_第5张图片

四、@RequestParam

  • 功能:用于访问Servlet请求参数,包括多部分文件。参数值将转换为声明的方法参数类型。

  • 案例

    • controller层代码
     @ResponseBody
     @PostMapping("/demo04")
     public  String testRequestParam(@RequestParam(value = "id") String id,
                                     @RequestParam(value = "age") String age,
                                     @RequestParam(value = "telephone") String telephone){
           
         return "id="+id+",age="+age+",telephone="+telephone;
     }
    
    • 请求路径(将form表单的action改成action="/demo04" )
      http://localhost:8088/form.html
    • 执行结果
      JavaWeb开发中常用路径变量注解_第6张图片
      JavaWeb开发中常用路径变量注解_第7张图片

五、@MatrixVariable

  • 功能:用于访问URI路径段中的名称/值对。矩阵变量可以出现在任何路径段中,每个变量用分号分隔,多个值用逗号分隔
    具体使用参考官方文档: MatrixVaeiable具体使用
  • 案例
    • config代码(springBoot默认不支持@MatrixVariable,需要重写配置类)
    @Configuration(proxyBeanMethods = false)
    public class MyConfig implements WebMvcConfigurer {
           
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
           
        UrlPathHelper urlPathHelper=new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);
        configurer.setUrlPathHelper(urlPathHelper);
       }
    }
    
    • controller层代码
     @ResponseBody
     @GetMapping("/demo05/{id}")
     public String testMatrixVariable(@MatrixVariable String p, 
                                      @MatrixVariable(name = "list") List<String> color) {
           
          return "p="+p+",color="+color;
     }
    
    • 请求路径
      http://localhost:8088/demo05/5;p=111;list=red,yellow,blue
    • 执行结果
      JavaWeb开发中常用路径变量注解_第8张图片

六、@CookieValue

  • 功能:用于访问cookie。Cookies值将转换为声明的方法参数类型。
  • 案例
    • controller层代码
     @GetMapping("/demo06_01")
     public String testCookieValue01(HttpServletResponse response){
           
         Cookie cookie=new Cookie("JSESSIONID","123123123123");
         response.addCookie(cookie);
         return  "forward:demo06_02";
     }
     @ResponseBody
     @GetMapping("/demo06_02")
     public String testCookieValue02(@CookieValue("JSESSIONID") String cookie){
           
         return  "JSESSIONID="+cookie;
     }
    
    • 请求路径
      http://localhost:8088/demo06_01
    • 执行结果
      JavaWeb开发中常用路径变量注解_第9张图片

七、@RequestAttribute

  • 功能:用于访问请求属性。

  • 案例

    • controller层代码
     @GetMapping("/demo07_01")
     public String testRequestAttribute01(HttpServletRequest request){
           
         request.setAttribute("name","张三");
         request.setAttribute("age",28);
         return "forward:demo07_02";
     }
    
     @ResponseBody
     @GetMapping("/demo07_02")
     public String testRequestAttribute02(@RequestAttribute(name = "name") String userName,
                                          @RequestAttribute Integer  age){
           
         return  "userName="+userName+",age="+age;
     }
    
    • 请求路径
      http://localhost:8088/demo07_01
    • 执行结果
      JavaWeb开发中常用路径变量注解_第10张图片

你可能感兴趣的:(SpringBoot,javaweb,url)