轉自 http://blog.csdn.net/ning109314/article/details/7595403
在傳統的Spring MVC開發方法中,必須在Bean配置文件中爲每個控制器類配置實例和請求映射和讓每個控制器類去實現或者擴展特定於框架的接口或者基類,不夠靈活。
如果Spring MVC可以自動偵測你的控制器類和請求映射,就能減少配置所需要的工作量。
Spring2.5支持一種基於註解的控制器開發方法。
Spring可以通過@Controller註解自動發現你的控制器類以及@RequestMapping註解中的請求映射,這樣就爲你免去了在Bean配置文件中配置它們的麻煩。此外,如果使用註解,控制器類和處理程序方法在訪問上下文資源(例如請求參數、模型屬性和會話屬性)時也會更加靈活。
常用到的註解
處理程序方法的簽名非常靈活。你可以爲處理程序方法指定任意的名稱,並定義以下任意一種類型作爲它的方法參數。在這裏,只提到了常見的參數類型。關於有效參數類型的完整列表,請參閱有關配置基於註解的控制器的Spring文檔。
常見的參數類型
1.HttpServletRequest、HttpServletResponse或HttpSession。
2.添加了@RequestParam註解的任意類型的請求參數
3.添加了@ModelAttribute註解的任意類型的模型屬性
4.任意類型的命令對象,供Spring綁定請求參數
5.Map或者ModelMap,供處理程序方法向模型添加屬性
6.Errors或者BindingResult,讓處理程序方法訪問命令對象的綁定和驗證結果
7.SessionStatus,讓處理程序方法發出會話處理已經完成的通知
常見的返回值類型
處理程序方法的返回類型可以是ModelAndView、Model、Map、String、void
在創建基於註解的控制器之前,必須構建web應用程序上下文來處理註解。
首先,爲了讓Spring用@Controller註解自動偵測控制器,必須通過<context:component-scan>元素啓用Spring的組件掃描特性。
其次Spring MVC還能夠根據@RequestMapping將請求映射到控制器類和處理程序方法。
爲了使其生效,必須在web應用程序上下文中註冊DefaultAnnotationHandlerMapping實例和AnnotationMethodHandlerAdapter實例。
它們分別處理在類級別和方法級別上的@RequestMapping註解。
必要的Spring MVC配置
DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter是默認在Web應用程序上下文中預先註冊好的。然而,如果你還顯式地註冊了其他的處理程序映射或者處理程序適配器,它們就不會自動註冊了。在這種情況下,你必須親自注冊它們。
基於註解的控制器類可以是個任意類,不實現特殊接口,也不擴展特殊的基類。你只要用@Controller註解對它進行標註即可。還可以在控制器中定義一個或者多個處理程序方法來處理單個或者多個動作。處理程序方法的簽名很靈活,足以接受一系列參數。
@RequestMapping註解可以被應用到類級別或者方法級別上。
Controller層:代碼中寫了很詳細的註釋
view層
welcome.jsp
值得注意的點:
1、@PathVariable("paramName") @RequestParam("paramName") 建議指定參數名稱
原因是VM將Java文件編譯成Class文件有兩種模式 Debug 和Release
這兩種編譯方式的區別是:
Debug 包含額外的調試信息,可以完整的保留變量的名稱 (Eclipse 使用的是Debug)
Release 把變量名稱使用其他的一些符號代替,量名稱就不可見啦 (在使用 javac命令)
2、restful風格獲取請求的參數方式
3、參數類型轉換
註冊屬性編輯器
4、對於無任何輸出的方法