SpringMVC 常用注解

常用注解

  1. RequestParam注解

    1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值 (作用于形参列表)

    2. 属性

      1. value:请求参数中的名称
      2. required:请求参数中是否必须提供此参数,默认值是true,必须提供
    @RequestMapping("/useRequestParam")
    public String useRequestParam(@RequestParam("name")String username,
    @RequestParam(value="age",required=false)Integer age){
    System.out.println(username+","+age);
    return "success";
    }
    
  2. RequestBody注解

    1. 作用:用于获取请求体的内容(注意:get方法不可以)

    2. 属性

      1. required:是否必须有请求体,默认值是true
    <form action="springmvc/useRequestBody" method="post">
    用户名称:<input type="text" name="username" ><br/>
    用户密码:<input type="password" name="password" ><br/>
    用户年龄:<input type="text" name="age" ><br/>
    <input type="submit" value="保存">
    </form>
    
    @RequestMapping("/useRequestBody")
    public String useRequestBody(@RequestBody(required=false) String body){
    System.out.println(body);
    return "success";
    }
    
  3. PathVariable注解

    1. 作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符

    2. 属性

      1. value:指定url中的占位符名称
    3. Restful风格的URL

      1. 请求路径一样,可以根据不同的请求方式去执行后台的不同方法
      2. restful风格的URL优点
        1. 结构清晰
        2. 符合标准
        3. 易于理解
        4. 扩展方便
    jsp 代码:
    <!-- PathVariable 注解 -->
    <a href="springmvc/usePathVariable/100">pathVariable 注解</a>
    
    控制器代码:
    @RequestMapping("/usePathVariable/{id}")
    public String usePathVariable(@PathVariable("id") Integer id){
    System.out.println(id);
    return "success";
    }
    
  4. RequestHeader注解

    1. 作用:获取指定请求头的值

    2. 属性

      1. value:请求头的名称

      ps:实际开发不怎么用

  5. CookieValue注解

    1. 作用:用于获取指定cookie的名称的值
    2. 属性
      1. value:cookie的名称
      2. required:是否必须有此 cookie。
    @RequestMapping("/useCookieValue")
    public String useCookieValue(@CookieValue(value="JSESSIONID",required=false) 
    String cookieValue){
    System.out.println(cookieValue);
    return "success";
    }
    
  6. ModelAttribute注解

    1. 作用

      1. 出现在方法上:表示当前方法会在控制器方法执行前先执行。
      2. 出现在参数上:获取指定的数据给参数赋值。
    2. 应用场景

      当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。

      控制器代码:
      控制器中的代码:
      /**
      * 查询数据库中用户信息
      * @param user
      */
      @ModelAttribute
      public void showModel(String username,Map<String,User> //模拟去数据库查询
      User user = findUserByName(username);
      System.out.println("执行了 showModel 方法"+user);
      map.put("abc",user);
      }
      /**
      * 模拟修改用户方法
      * @param user
      * @return
      */
      @RequestMapping("/updateUser")
      public String testModelAttribute(@ModelAttribute("abc")User user) {
      System.out.println("控制器中处理请求的方法:修改用户:"+user);
      return "success";
      }
      /**
      * 模拟去数据库查询
      * @param username
      * @return
      */
      private User findUserByName(String username) {
      User user = new User();
      user.setUsername(username);
      user.setAge(19);
      user.setPassword("123456")return user;
      }
      
      
      
      
  7. SessionAttributes注解

    1. 作用:用于多次执行控制器方法间的参数共享

    2. 属性

      1. value:指定存入属性的名称
      2. type:用于指定存入的数据类型。
    jsp 中的代码:
    <!-- SessionAttribute 注解的使用 -->
    <a href="springmvc/testPut">存入 SessionAttribute</a>
    <hr/>
    <a href="springmvc/testGet">取出 SessionAttribute</a>
    <hr/>
    <a href="springmvc/testClean">清除 SessionAttribute</a>
    
    控制器的代码:
    
    
    
    @RequestMapping("/springmvc")
    @SessionAttributes(value ={"username","password"},types={Integer.class}) 
    public class SessionAttributeController {
    /**
    * 把数据存入 SessionAttribute
    * @param model
    * @return
    * Model 是 spring 提供的一个接口,该接口有一个实现类 ExtendedModelMap
    * 该类继承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子类
    */
    @RequestMapping("/testPut") 
    public String testPut(Model model){ 
     model.addAttribute("username", "泰斯特"); 
     model.addAttribute("password","123456"); 
     model.addAttribute("age", 31); 
     //跳转之前将数据保存到 username、password 和 age 中,因为注解@SessionAttribute 中有这几个参数 
     return "success"; 
     } 
     
     @RequestMapping("/testGet") 
     public String testGet(ModelMap model){ 
     
    System.out.println(model.get("username")+";"+model.get("password")+";"+model.get("age")); 
     return "success"; 
     } 
     
     @RequestMapping("/testClean") 
     public String complete(SessionStatus sessionStatus){ 
     sessionStatus.setComplete(); 
     return "success"; 
     } 
    }
    
posted @ 2022-02-14 20:16  KyleHsu  阅读(34)  评论(0)    收藏  举报