1. 程式人生 > >Spring MVC中常用註解之RequestMapping詳解

Spring MVC中常用註解之RequestMapping詳解

SpringMVC和Struts2最大區別可能就是註解的使用。因為SpringMVC中可以實現在類這個層面上面配置資訊,也可以在方法層面上面配置資訊,既靈活又方便,不需要寫大量的配置檔案,也不需要寫大量的action控制類,因為SpringMVC僅僅通過註解就可以實現了Action控制器的跳轉和一些常用的功能。

通過註解來實現Action控制器中的execute方法和頁面跳轉的功能,而且SpringMVC中攔截器的實現也比Struts2方便的多,所以在開發效率方面SpringMVC比Struts2強,正因為如此所以SpringMVC的使用率這幾年正在逐漸上升。

下面就來介紹一下RequestMapping中常用註解的用法。

RequestMapping中有六個屬性分別是:

value:     指定請求的實際地址,指定的地址可以是URI Template 模式;
method:  指定請求的method型別, GET、POST、PUT、DELETE等;
consumes: 指定處理請求的提交內容型別(Content-Type),例如application/json, text/html;
produces:    指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回;
params: 指定request中必須包含某些引數值是,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。

其中比較常用的是value,method,params;具體的案例我就不多介紹了,有興趣瞭解的可以看這篇部落格:點選開啟連結

1.RequestMapping最基礎的用法就是實現類或者方法的訪問控制:例如下面案例就是方法上面的控制:

    @RequestMapping(value = "testlogin.do",method = RequestMethod.POST)
    public String testLogin(){
        return "redirect:login";
    }
<form id="loginTestForm" action="testlogin.do" method="post">
    <input type="submit" value="submit">
</form>
從程式碼上面就可以很明顯的看出來,在表單中提交action地址,通過SpringMVC框架會自動找到value值等於action地址的方法然後就會執行這個方法。

這裡需要注意的是form表單中提交的方式要和方法裡面的method一直,否則就會報錯。上面的例子中兩個都是post方法提交的。

2.RequestMapping帶引數的情況:

   @RequestMapping(value = "testlogin.do",method = RequestMethod.POST)
    public String testLogin(@RequestParam("departmentId") String departmentId){
        System.out.println("輸入的引數為:"+departmentId);
        return "redirect:login";
    }
第一種表單形式:
<form id="loginTestForm" action="testlogin.do" method="post">
    <input type="text" name="departmentId" id="departmentId"></br>
    <input type="submit" value="submit">
</form>
第二中表單形式:
<form id="loginTestForm" action="testlogin.do?departmentId=123" method="post">
    <input type="submit" value="submit">
</form>
以上兩種的結果是一樣的,都可以執行方法中內容。其中@RequestParam還有其他的寫法,我這裡就不多介紹了,有興趣的可以自己去了解一下。

3.RequestMapping中獲取URL中的引數資訊:

<form id="loginTestForm" action="testlogin.do/adc" method="post">
    <input type="submit" value="submit">
</form>
    @RequestMapping(value = "testlogin.do/{departmentId}",method = RequestMethod.POST)
    public String testLogin(@PathVariable("departmentId") String departmentId){
        System.out.println("輸入的URL引數為:"+departmentId);
        return "redirect:login";
    }
通過{變數名稱}這樣的寫法,就可以在@PathVariable("變數名")  實現引數的呼叫了。

當然也可以繫結多個引數,例如:

    @RequestMapping(value = "testlogin.do/departmentId/{departmentId}/departmentName/{departmentName}",method = RequestMethod.POST)
    public String testLogin(@PathVariable("departmentId") String departmentId,@PathVariable("departmentName") String departmentName){
        System.out.println("輸入的URL引數為1:"+departmentId);
	System.out.println("輸入的URL引數為2:"+departmentName);
        return "redirect:login";
    }
還有就是可以實現正則表示式,我這裡就不多介紹了,有興趣的可以看一下這篇部落格:點選開啟連結
到這裡RequestMapping一些常用的方法就介紹完了,當然還有很多其他的用法。例如:在類中中實現action控制,方法之間相互訪問跳轉之類的,不過這些方法的實現基本都是基於RequestMapping這些常用方法實現的。

如部落格內容有問題或有疑義,請及時提出,不甚感謝。本人QQ:208017534