1. 程式人生 > >Spring MVC @RequestMapping註解

Spring MVC @RequestMapping註解

RequestMapping註解既可以修飾方法也可以用來修飾類。
類定義處的該註解相對於根目錄,而方法定義處的註解相對於類註解,沒有類註解時相對於根目錄。
要注意的地方時,在類中路徑的編寫要以”/”開頭,而jsp檔案中的請求路徑不要“/”開頭。
RequestMapping註解有很多引數,其中四個比較常用的是
value 請求路徑
method 請求方法
params 請求引數
headers 請求頭
下面是一個示例

    @RequestMapping(value="/headers",method=RequestMethod.POST,
            params={"userName"
,"age!=10"},headers={"Accept-Encoding=gzip, deflate, br"})//請求頭 public String headers(){ System.out.println("headers"); return "success"; }

如上請求引數中params指定了必須要有userNameage 兩個欄位,並且age 不能等於10(age等於直接使用=而不用==),請求頭指定了Accept-Encoding必須等於gzip, deflate, br。
總的來說一個@RequestMapping註解可以十分精確的指定可以處理的請求。

另外,@RequestMapping註解還可以支援ant風格的註解,具體包括以下三種情況:
1. ?匹配一個字元 如/user/abc??匹配/user/abcxx
2. *匹配單層任意字元 如/user/*/abc匹配/user/abc/abc
3. **匹配多層任意字元 如/user/**/abc匹配 /user/abc 也匹配/user/abc/abc/abc

最後說一下HiddenHttpMethodFilter
這個Filter可以將請求方法中的POST改為PUT和DELETE。
POST、DELETE、PUT、GET方法分別對應資料庫中的增刪改查是一種較為合理的處理方式吧,要不然我看的視訊裡面也不會這麼推薦吧,當然也不一定對,請各位大佬推薦。
使用HiddenHttpMethodFilter需要先在web.xml中配置這個Filter具體程式碼如下:

<filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern><!-- 過濾全部路徑 -->
</filter-mapping>

配置這個之後就可以使用這個Filter了。
其使用方法較為簡單,只需要在提交的POST表單裡面新增一個隱藏的欄位,具體如下:

<form action="xxx/yyy/111" method="post">
<input type="hidden" name="_method" value="PUT"> 
<input type="submit" value="request put">
</form>

上面的程式碼請求這個過濾器將一個POST方法改為一個PUT方法,然後在處理的Controller方法中需要加入一個對應請求的處理方法程式碼便可以運行了,請求處理方法如下:

    @RequestMapping(value="/xxx/yyy/{id}",method=RequestMethod.PUT)
    public String requestPut(@PathVariable(name="id") Integer id){
        System.out.println("PUT");
        return SUCCESS;
    }

這樣就可以對id 對應的資訊進行處理了。