SpringMVC知識盤點及總結6@RequestMapping注解的headers屬性及路徑中的占位符


@RequestMapping注解的headers屬性

知識點五、

@RequestMapping注解的headers屬性通過請求的請求頭信息匹配請求映射
@RequestMapping注解的headers屬性是一個字符串類型的數組,可以通過四種表達式設置請求頭信息
和請求映射的匹配關系:
"header":要求請求映射所匹配的請求必須攜帶header請求頭信息
"!header":要求請求映射所匹配的請求必須不能攜帶header請求頭信息
"header=value":要求請求映射所匹配的請求必須攜帶header請求頭信息且header=value
"header!=value":要求請求映射所匹配的請求必須攜帶headerheader!=value

1.若當前請求滿足@RequestMapping注解的valuemethod屬性,但是不滿足header屬性,此時
頁面顯示404錯誤,即資源未找到。
2.請求頭其實就是鍵值對形式,用法與Param屬性相同,例如 header={"Host=localhost:8081"}

順便總結以下三種常見錯誤:
404錯誤--->當前請求沒有跟任何一個RequestMethodvalue匹配或請求頭信息匹配不成功
405錯誤--->當前請求方式無法匹配(請求方式不支持)
400錯誤--->請求參數匹配不成功

接下來測試一下:
  
//測試RequestMapping的headers屬性
            @RequestMapping(value = "/testParamsAndHeaders",
            headers = "Host=localhost:8080")
            public  String testParamsAndHeaders(){
                return "success";
            }

 

 <a th:href="@{/hello/testParamsAndHeaders}" >測試RequestMapping注解的headers屬性</a><br>


Tomcat默認端口8080,請求地址中帶有請求頭信息--->Host: localhost:8080
訪問成功!如果端口號改為8081,就會報404錯誤。


SpringMVc支持ant風格的路徑

? :表示任意的單個字符 不能寫/,#,%,\ 這幾個特殊字符
* :表示任意的0個或多個字符
** :表示任意的一層或多層目錄
注意:在使用**時,只能使用/**/xxx的方式

測試一:
<a th:href="@{/hello/aka/testAnt}">測試RequestMapping可以匹配Ant風格的路徑</a><br>
 
        
        //測試表示任意的單個字符Ant風格
        @RequestMapping("/a?a/testAnt")
        public  String testAnt(){
            return "success";
        }
 

測試二:
  <a th:href="@{/hello/a123456fg1a/testAnt}">測試RequestMapping可以匹配Ant風格的路徑</a><br>
 
        

 

//測試表示任意的0個或多個字符Ant風格
        @RequestMapping("/a*a/testAnt")
        public  String testAnt(){
            return "success";
        }

 




測試三:
 <a th:href="@{/hello/a/2k2/3k3/4k4/a/testAnt}">測試RequestMapping可以匹配Ant風格的路徑</a><br>
 
        

 

    //測試多層目錄Ant風格
           @RequestMapping("/a*a/testAnt")
           public  String testAnt(){
               return "success";
           }

 



***SpringMVC支持路徑中的占位符,這部分比較重要

原始方式:/deleteUser?id=1
rest方式:/deleteUser/1

SpringMVC路徑中的占位符常用於restful風格中,當請求路徑中將某些數據通過路徑的方式傳輸到服務器中,就
可以在相應的@RequestMapping注解的value屬性中通過占位符{xxx}表示傳輸的數據,再通過@PathVariable注
解,將占位符所表示的數據賦值給控制器方法的形參

 <a th:href="@{/testPath/1/admin}">測試路徑中的占位符-->/testRest</a><br>
 
        

 

@RequestMapping("/testPath/{id}/{username}")
    public String testRest(@pathVariable("id") String id, 
                           @pathVariable("username") String username){
             System.out.println("id:"+id+",username:"+username);
             return "success";
    }


//輸出內容為-->id:1,username:admin





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM