zoukankan      html  css  js  c++  java
  • 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";
          }
      
  • 相关阅读:
    训练总结
    图论--最短路--SPFA模板(能过题,真没错的模板)
    图论--最短路-- Dijkstra模板(目前见到的最好用的)
    The 2019 Asia Nanchang First Round Online Programming Contest B Fire-Fighting Hero(阅读理解)
    关于RMQ问题的四种解法
    The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 K题 center
    The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 XKC's basketball team
    The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 D Carneginon
    ZOJ 3607 Lazier Salesgirl (枚举)
    ZOJ 3605 Find the Marble(dp)
  • 原文地址:https://www.cnblogs.com/mantishell/p/12829722.html
Copyright © 2011-2022 走看看