【能少敲點代碼量,就少敲點】
@Controller注解
@Controller注解是在Spring的org.springframework.stereotype包下,org.springframework.stereotype.Controller注解類型用於指示Spring類的實例是一個控制器,使用@Controller注解的類不需要繼承特定的父類或者實現特定的接口,相對之前的版本實現 Controller接口變的更加簡單。而Controller接口的實現類只能處理一個單一的請求動作,而@Controller注解注解的控制器可以同時支持處理多個請求動作,使程序開發變的更加靈活。
@Controller用戶標記一個類,使用它標記的類就是一個Spring MVC Controller對象,即:一個控制器類。Spring使用掃描機制查找應用程序中所有基於注解的控制器類,分發處理器會掃描使用了該注解的方法,並檢測該方法是否使用了@RequestMapping注 解,而使用@RequestMapping注解的方法才是真正處理請求的處理器。為了保證Spring能找到控制器,我們需要完成兩件事:
1、在Spring MVC的配置文件中的頭部引入spring-context;
2、使用 <context:component-scan/>
元素,該元素的功能是:啟動包掃描功能,以便注冊帶有@Controller、@Service、@repository、@Component等注解的類成為Spring的Bean。
@RequestMapping注解
Spring MVC中用於參數綁定的注解有很多,都在org.springframework.web.bind.annotation包中,根據它們處理的request的不同內容可以分為四類(常用的類型)。
第一類:處理request body部分的注解有:@RequestParam和@RequestBody
第二類:處理requet uri部分的注解有:@PathVaribale
第三類:處理request header部分的注解有:@RequestHeader和@CookieValue
第四類:處理attribute類型的注解有:@SessionAttributes和@MoelAttribute
接下來,我將說一說@RequestMapping注解,前面在說@Controller注解的時候已經提到過這個注解是用來處理類和方法發送請求動作,@RequestMapping注解也在org.springframework.web.bind.annotation包中,但是嚴格來說,它並不屬於參數綁定的注解。因此,@RequestMapping可以用來注釋一個控制器類,在這種情況下,所有的方法都將映射為相對於類級別的請求,表示該控制器處理的所有請求都被映射到value屬性所指示的路徑下。
@RequestParam注解
下面來說org.springframework.web.bind.annotation包下的第三個注解,即:@RequestParam注解,該注解類型用於將指定的請求參數賦值給方法中的形參。那么@RequestParam注解有什么屬性呢?它有4種屬性,下面將逐一介紹這四種屬性:
1、name屬性
該屬性的類型是String類型,它可以指定請求頭綁定的名稱;
2、value屬性
該屬性的類型是String類型,它可以設置是name屬性的別名;
3、required屬性
該屬性的類型是boolean類型,它可以設置指定參數是否必須綁定;
4、defalutValue屬性
該屬性的類型是String類型,它可以設置如果沒有傳遞參數可以使用默認值。
請求處理方法參數的可選類型位Java的8種基本數據類型和String。
@PathVaribale注解
下面來說org.springframework.web.bind.annotation包下的第四個注解,即:@PathVaribale注解,該注解類型可以非常方便的獲得請求url中的動態參數。@PathVaribale注解只支持一個屬性value,類型String,表示綁定的名稱,如果省略則默認綁定同名參數。
@RequestHeader注解
下面來說org.springframework.web.bind.annotation包下的第五個注解,即:@RequestHeader注解,該注解類型用於將請求的頭的信息區域數據映射到功能處理方法的參數上。
那么@RequestHeader注解有什么屬性呢?它和@RequestParam注解一樣,也有4種屬性,分別如下:
1、name屬性
該屬性的類型是String類型,它可以指定請求頭綁定的名稱;
2、value屬性
該屬性的類型是String類型,它可以設置是name屬性的別名;
3、required屬性
該屬性的類型是boolean類型,它可以設置指定參數是否必須綁定;
4、defalutValue屬性
該屬性的類型是String類型,它可以設置如果沒有傳遞參數可以使用默認值。
@CookieValue注解
下面來說org.springframework.web.bind.annotation包下的第六個注解,即:@CookieValue注解,該注解類型用於將請求的Cookie數據映射到功能處理方法的參數上。
同樣,它和@RequestHeader,還有@RequestParam注解一樣,有相同的4種屬性,分別如下:
1、name屬性
該屬性的類型是String類型,它可以指定請求頭綁定的名稱;
2、value屬性
該屬性的類型是String類型,它可以設置是name屬性的別名;
3、required屬性
該屬性的類型是boolean類型,它可以設置指定參數是否必須綁定;
4、defalutValue屬性
該屬性的類型是String類型,它可以設置如果沒有傳遞參數可以使用默認值。
@SessionAttributes注解
下面來說org.springframework.web.bind.annotation包下的第七個注解,即:@SessionAttributes注解,該注解類型允許我們有選擇地指定Model中的哪些屬性需要轉存到HttpSession對象當中。
@SessionAttributes注解有三個屬性,分別如下:
1、names屬性
該屬性的類型是String[],它可以指定Model中屬性的名稱,即存儲在HttpSession當中的屬性名稱;
2、value屬性
該屬性的類型是String[],它可以設置names屬性的別名;
3、types屬性
該屬性的類型是Class<?>[]
,它可以指定參數是否必須綁定。
注意:@SessionAttributes只能聲明在類似,而不能聲明在方法上。
@ModelAttribute注解
接下來要說org.springframework.web.bind.annotation包下的第八個注解,也就是今天要說的Spring MVC常用注解的最后一個,即:@ModelAttribute注解,該注解類型將請求參數綁定到Model對象。@ModelAttribute注解只支持一個屬性value,類型為String,表示綁定的屬性名稱。
@ModelAttribute注解是使用方式有很多種,下面將通過@ModelAttribute注解的5種方式來演示@ModelAttribute注解應用。
因這個注解用到的方式很多,因此我在我的eclipse中重新再創建一個新的maven工程,名叫“springmvc-comment2”,和創建一個maven工程一樣,我們需要讓pom.xml導入所需要的jar包。
@ModelAttribute注解常用的5種使用方法,而且用法都非常靈活,因此我們開發者可以根據業務的需求來選擇使用。以上就是這兩天總結的Spring MVC常用的8個注解
文章出處:https://blog.csdn.net/qq_42223653/article/details/90486584
----------------------------------------------------------感謝到訪!期待您的下次光臨!