編號
註解
說明
位置
備註
1
@Controller
將類變成 Spring Bean
類
現階段 @Controller 、 @Service 以及 @Repository 和 @Component 註解的作用是等價的
2
@RequestMapping
請求映射
類、方法
標註在類上意指類實現 Controller 接口標註在方法上意指擴展 Spring 預定義 Controller ( 如 :SimpleFormController @RequestMapping(value="/batchinput"))
3
@RequestParam
入參綁定 URL
入參
指定 URL 參數與方法入參的綁定規則 eg:@RequestParam(value = "roleId", required = false) String roleId
4
@SessionAttributes
設定 Session 範圍屬性
類
如: @SessionAttributes("user") ,將把 ModelMap 中的 user 屬性添加到 Session 範圍
5
@InitBinder
註冊 Controller 級的自定義屬性編輯器
方法
@InitBinder 註解的方法必須擁有一個 WebDataBinder 類型的入參,以便 Spring MVC 框架將註冊屬性編輯器的 WebDataBinder 對象傳遞進來
6
@ModelAttribute
準備引用數據 / 將 ModelMap 屬性綁定到入參
方法、入參
標註在方法上:準備引用數據
標註在入參上:將 ModelMap 中的屬性綁定到請求處理方法的入參中
eg: @ModelAttribute("gasMeter") GasMeter gasMeter 將對象信息放入。
再來看一下Controller中方法的入參類型:
編號
請求處理方法入參的可選類型
說明
1
Java 基本數據類型和 String
默認情況下將按名稱匹配的方式綁定到 URL 參數上,可以通過 @RequestParam 註解改變默認的綁定規則
2
request/response/session
既可以是 Servlet API 的也可以是 Portlet API 對應的對象,Spring 會將它們綁定到 Servlet 和 Portlet 容器的相應對象上
3
org.springframework.web.context.request.WebRequest
內部包含了 request 對象
4
java.io.InputStream/java.io.Reader
可以藉此訪問 request 的內容
5
java.io.OutputStream / java.io.Writer
可以藉此操作 response 的內容
6
任何標註了 @RequestParam 註解的入參
被標註 @RequestParam 註解的入參將綁定到特定的 request 參數上。
7
java.util.Map / org.springframework.ui.ModelMap
它綁定 Spring MVC 框架中每個請求所創建的潛在的模型對象,它們可以被 Web 視圖對象訪問(如 JSP )
8
命令 / 表單對象(注:一般稱綁定使用 HTTP GET 發送的 URL 參數的對象爲命令對象,而稱綁定使用 HTTP POST 發送的 URL 參數的對象爲表單對象)
它們的屬性將以名稱匹配的規則綁定到 URL 參數上,同時完成類型的轉換。而類型轉換的規則可以通過 @InitBinder 註解或通過 HandlerAdapter 的配置進行調整
9
org.springframework.validation.Errors / org.springframework.validation.BindingResult
爲屬性列表中的命令 / 表單對象的校驗結果,注意檢驗結果參數必須緊跟在命令 / 表單對象的後面
10
rg.springframework.web.bind.support.SessionStatus
可以通過該類型 status 對象顯式結束表單的處理,這相當於觸發 session 清除其中的通過 @SessionAttributes 定義的屬性
再來看一下Controller中方法的返回類型:
編號
請求處理方法入參的可選類型
說明
1
void
此時邏輯視圖名由請求處理方法對應的 URL 確定,如以下的方法:
@RequestMapping("/welcome.do")
public void welcomeHandler() {
}
對應的邏輯視圖名爲“ welcome ”
2
String
此時邏輯視圖名爲返回的字符,如以下的方法:
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("ownerId") int ownerId, ModelMap model) {
Owner owner = this.clinic.loadOwner(ownerId);
model.addAttribute(owner);
return "ownerForm";
}
對應的邏輯視圖名爲“ownerForm”
3
org.springframework.ui.ModelMap
和返回類型爲 void 一樣,邏輯視圖名取決於對應請求的 URL ,如下面的例子:
@RequestMapping("/vets.do")
public ModelMap vetsHandler() {
return new ModelMap(this.clinic.getVets());
}
對應的邏輯視圖名爲“ vets ”,返回的 ModelMap 將被作爲請求對應的模型對象,可以在 JSP 視圖頁面中訪問到。
4
org.springframework.web.servlet.ModelAndView
當然還可以是傳統的 ModelAndView 。