• springMvc 系列 4-常用的注解


    前提:在控制器中添加注解 @RequestMapping("/param")

    • RequestParam注解

      1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值
      2. 属性
        • value: 请求参数中的名称
        • required: 请求参数中是否必须提供此参数,默认是true,必须提供

      比如:<a href="param/testRequestParam?username=xiaowang">RequestParam</a>

      @RequestMapping(path = "/testRequestParam")
      public String testRequestParam(@RequestParam(value = "username", required = false)String name){
          System.out.println(name);
          return "success";
      }
      
    • RequestBody注解

      1. 用于请求体的内容(注意:get方法不可以)
      2. 属性
        • required:是必须有请求体,默认是true
          例如:
      RequestBody:
      <form action="param/testRequestBody" method="post">
          姓名:<input type="text" name="uname">
          出生日期:<input type="text" name="birthday">
          <input type="submit" value="提交">
      </form>
      
      @RequestMapping("/testRequestBody")
      public String testRequestBody(@RequestBody String body){
          System.out.println(body);
          return "success";
      }
      

      页面上填写姓名:wang;出生日期:2000/11/11,提交以后,将打印出uname=wang&birthday=2000%2F11%2F11

    • PathVariable注解

      1. 作用:拥有绑定url中的占位符。例如:url中有/delete/{id},{id}就是占位符
      2. 属性
        • vlue: 指定url中的占位符名称
      3. Restful风格的URL
        • 请求路径一样,可以根据不同的请求方式执行后台的不同方法
        • restful风格的URL有点
          • 结构清晰
          • 符合标准
          • 易于理解
          • 扩展方便
            例如:
      <a href="param/testPathVariable">PathVariable</a>
      
      @RequestMapping("testPathVariable")
      public String testPathVariable(@PathVariable(value = "id") String id){
          System.out.println(id);
          return "success";
      }
      
    • RequestHeader注解

      1. 作用: 获取指定请求头的值
      2. 属性:
        • value: 请求头的名称
          例如:
      @RequestMapping("testRequestHeader")
      public String testRequestHeader(@RequestHeader(value = "Accept") String header){
          System.out.println(header);
          return "success";
      }
      
    • CookieValue注解

      1. 作用: 用于获取指定cookie的名称和值
      2. 属性:
        • value: cookie的名称
          例如:
      @RequestMapping("testCookieValue")
      public String testCookieValue(@CookieValue(value="JSESSIONID") String cookieValue){
          System.out.println(cookieValue);
          return "success";
      }
      
    • ModelAttribute注解

      1. 作用:
        • 在方法上:表示当前方法会在控制器方法执行前执行
        • 在参数上: 获取指定的数据给参数赋值
      2. 应用场景:当提交的数据不是完整的实体数据时,可以从数据库中获取未提交单库中存在的数据
      3. 实例:
        • 修饰的方法有返回值
        ModelAttribute:
        <form action="param/testModelAttribute" method="post">
            姓名:<input type="text" name="uname">
            年龄:<input type="text" name="age">
            <input type="submit" value="提交">
        </form>
        
        @RequestMapping("/testModelAttribute")
        public String testModelAttribute(User user){
            System.out.println("然后执行testModelAttribute");
            System.out.println(user);
            return "success";
        }
        
        @ModelAttribute
        public User showUser(String uname){
            System.out.println("先执行showUser");
            User user = new User();//模拟通过用户查询数据库得到的信息
            user.setUname(uname);
            user.setBirthday(new Date());
            return user;
        }
        
        • 修饰的方法没有返回值
        @RequestMapping("testModelAttribute")
        public String testModelAttribute(@ModelAttribute("adc") User user){
            System.out.println(user);
            return "success";
        }
        
        @ModelAttribute
        public void showUser(String uname, Map<String, User> map){
            User user = new User();//模拟通过用户查询数据库得到的信息
            user.setUname(uname);
            user.setBirthday(new Date());
            map.put("adc",user);
        }
        
    • SessionAttributes注解

      1. 作用: 用于多次执行控制器方法间的参数共享
      2. 属性:
        value: 指定存入属性的名称
        例子:
        首先在类上添加注解@SessionAttributes(value={"msg"})//把msg=张三 存入到session域对象中
          <a href="param/setSessionAttributes">SessionAttributes</a>
          <a href="param/getSessionAttributes">get</a>
          <a href="param/delSessionAttributes">del</a>
      
          @RequestMapping("/setSessionAttributes")
          public String setSessionAttributes(Model model){
              System.out.println("testSessionAttributes");
              //底层会存储到request域对象中
              model.addAttribute("msg","张三");
              return "success";
          }
      
          @RequestMapping("/getSessionAttributes")
          public String getSessionAttributes(ModelMap modelMap){
              String msg = (String) modelMap.get("msg");
              System.out.println(msg);
              return "success";
          }
      
          @RequestMapping("/delSessionAttributes")
          public String delSessionAttributes(SessionStatus status){
              status.setComplete();
              return "success";
          }
      
  • 相关阅读:
    php-文件系统
    php
    php
    php
    关于学习上面的感悟
    php
    Error: PostCSS plugin tailwindcss requires PostCSS 8.
    常用/不常用的HTTP状态码
    小程序云托管无需服务器部署PHP
    Docker-镜像操作
  • 原文地址:https://www.cnblogs.com/mantishell/p/12829722.html
Copyright © 2020-2023  润新知