天天看點

Spring MVC 注解開發

 Spring MVC注解開發中常用标簽,如下表:

編号

注解

說明

位置

備注

1

@Controller

将類變成Spring Bean

現階段@Controller、@Service以及@Repository和@Component注解的作用是等價的

2

@RequestMapping

請求映射

類、方法

标注在類上意指類實作Controller接口标注在方法上意指擴充Spring預定義Controller (如:SimpleFormController)

3

@RequestParam

入參綁定URL

入參

指定URL參數與方法入參的綁定規則

4

@SessionAttributes

設定Session範圍屬性

如:@SessionAttributes("user"),将把ModelMap中的user屬性添加到Session範圍

5

@InitBinder

注冊Controller級的自定義屬性編輯器

方法

@InitBinder注解的方法必須擁有一個WebDataBinder類型的入參,以便Spring MVC 架構将注冊屬性編輯器的WebDataBinder對象傳遞進來

6

@ModelAttribute

準備引用資料/将ModelMap屬性綁定到入參

方法、入參

标注在方法上:準備引用資料标注在入參上:将ModelMap中的屬性綁定到請求處理方法的入參中

再來看一下Controller中方法的入參類型:

請求處理方法入參的可選類型

Java基本資料類型和String

預設情況下将按名稱比對的方式綁定到URL參數上,可以通過@RequestParam注解改變預設的綁定規則

request/response/session

既可以是Servlet API的也可以是Portlet API對應的對象,Spring會将它們綁定到Servlet和Portlet容器的相應對象上

org.springframework.web.context.request.WebRequest

内部包含了request對象

java.io.InputStream/java.io.Reader

可以借此通路request的内容

java.io.OutputStream / java.io.Writer

可以借此操作response的内容

任何标注了 @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中方法的傳回類型:

<b>編号</b>

<b>請求處理方法入參的可選類型</b>

<b>說明</b>

void

此時邏輯視圖名由請求處理方法對應的URL 确定,如以下的方法:

@RequestMapping("/welcome.do")

public void welcomeHandler() {

}

對應的邏輯視圖名為“welcome”

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”

org.springframework.ui.ModelMap

和傳回類型為void一樣,邏輯視圖名取決于對應請求的URL ,如下面的例子:

@RequestMapping("/vets.do")

public ModelMap vetsHandler() {

      return new ModelMap(this.clinic.getVets());

對應的邏輯視圖名為“vets”,傳回的ModelMap 将被作為請求對應的模型對象,可以在JSP視圖頁面中通路到。

org.springframework.web.servlet.ModelAndView

當然還可以是傳統的ModelAndView 。

本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1175068