1. 程式人生 > 其它 >SpringMVC 常用註解

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"; 
     } 
    }