Spring mvc註解說明



 

編號

註解

說明

位置

備註

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章