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";
        }
    
原文地址:https://www.cnblogs.com/mantishell/p/12829722.html