通過@RequestMapping 注解可以定義處理器對于請求的映射規則。該注解可以注解在方法上,也可以注解在類上,但意義是不同的。value 屬性值常以“/”開始,也可不加“/”
@RequestMapping 的 value 屬性用于定義所匹配請求的 URI。但對于注解在方法上與類上,其 value 屬性所指定的 URI,意義是不同的。
一個@Controller 所注解的類中,可以定義多個處理器方法。當然,不同的處理器方法所匹配的 URI 是不同的。這些不同的 URI 被指定在注解于方法之上的@RequestMapping 的value 屬性中。但若這些請求具有相同的 URI 部分,則這些相同的 URI,可以被抽取到注解在類之上的@RequestMapping 的 value 屬性中。此時的這個 URI 表示模塊的名稱。URI 的請求是相對于 Web 的根目錄。
換個角度說,要訪問處理器的指定方法,必須要在方法指定 URI 之前加上處理器類前定義的模塊名稱
Step1:修改處理器類 MyController
Step2:添加視圖頁面
在/WEB-INF/jsp 目錄下添加 some.jsp 與 other.jsp 頁面,刪除原 welcome.jsp 頁面。
對于@RequestMapping,其有一個屬性 method,用于對被注解方法所處理請求的提交方式進行限制,即只有滿足該 method 屬性指定的提交方式的請求,才會執行該被注解方法。
Method 屬性的取值為 RequestMethod 枚舉常量。常用的為 RequestMethod.GET 與RequestMethod.POST,分別表示提交方式的匹配規則為 GET 與 POST 提交。
以上處理器方法只能處理 POST 方式提交的請求。客戶端瀏覽器常用的請求方式,及其提交方式有以下幾種:
也就是說,只要指定了處理器方法匹配的請求提交方式為 POST,則相當于指定了請求 發送的方式:要么使用表單請求,要么使用 AJAX 請求。其它請求方式被禁用。
當然,若不指定 method 屬性,則無論是 GET 還是 POST 提交方式,均可匹配。即對于請求的提交方式無要求。
Step1:修改處理器類 MyController
Step2:修改 index 頁面
@RequestMapping 中 params 屬性中定義了請求中必須攜帶的參數的要求。以下是幾種情況的說明。
@RequestMapping(value=”/xxx.do”, params={“name”,”age”}) :要求請求中必須攜帶請求參數 name 與 age
@RequestMapping(value=”/xxx.do”, params={“!name”,”age”}) :要求請求中必須攜帶請求參數 age,但必須不能攜帶參數 name
@RequestMapping(value=”/xxx.do”, params={“name=zs”,”age=23”}) :要求請求中必須攜帶請求參數 name,且其值必須為 zs;必須攜帶參數 age,其其值必須為 23