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