1、 @RequestMapping 被處理的條件:
在dispatcher中出現對應的 HandlerMapping(為了實作類別型層級的註解)和HandlerAdapter(為了實現方法層級的註解)這在DispatcherServlet和DispatcherPortlet中都是預設的.
2、@RequestMapping 註解的方法可以擁有下面類型的方法(順序任意,除非對於驗證結果需要緊跟在對應的命令對像後面)
1). 請求/響應對像(Servlet api or Portlet api)
2). 會話對像(Servlet API or Portlet API)
3). WebRequest/NativeWebRequest
4). InputStream/Reader 用於訪問請求的內容
5). OutputStream/Writer 用於產生響應的內容
6). 以 @RequestParam 註解的參數用於訪問特定的 Servlet/Portlet 請求參數。參數值將被轉換為聲明的方法參數類型
7). Map/Model/ModelMap 用於充實將被暴露到 Web 視圖的隱含模型
8). 綁定參數到命令/表單對像:帶有自訂類型轉換的 bean 屬性/域, 依賴於 @InitBinder 方法/HandlerAdapter 配置,參見AnnotationMethodHandlerAdapter 的 "webBindingInitializer" 屬性,這樣的命令對像包括它們的驗證結果,將會暴露為模型屬性,預設的會在屬性註解中使用非限定的命令類名(如:對於類型 "mypackage.OrderAddress" 使用 "orderAddress" )。為聲明一個體特定的模型屬性名稱指定一個參數層級的 ModelAttribute 註解
9). BindingResult 驗證結果用於前面的一個命令/表單對像(前面緊接的參數)
10). SessionStatus 狀態處理用於把表單處理過程標記為已完成(觸發會話屬性的清理,這些會話屬性是在控制代碼類型層級由 @SessionAttribute 註解指示出的)
3 、@RequestParam 註解的參數預設是必須的,設定 @RequestParam(value="id",required="false")則這個參數為可選的