摘要:模板可以很方便地用于訪問一個方法中的的被選擇的部分。為模板擬定的文檔定義了一個是怎樣被參數化的。為了處理注解,需要按名找到匹配模板的變量。在定義模板變量時,你需要更高的精確度。語法的第一部分定義了變量名,第二部分是一個正則表達式。
????這一部分是對 Spring 5 文檔的直接翻譯,連接是這個。這一部分的示例不再貼代碼,請到這個項目的 mvc 分支下查看,本篇示例的控制器名稱是 URITemplateController。
????URI 模板可以很方便地用于訪問一個 @RequestMapping 方法中的 URL 的被選擇的部分。
????URI 模板是一個像URI的字符串,它包含一個或多個變量名。當你用值來替代這些變量時,這個模板就會變成一個 URI。為 URI 模板擬定的 RFC 文檔定義了一個 URI 是怎樣被參數化的。比如,URI 模板 http://www.example.com/users/{userId} 包含一個變量 userId。把值 fred 賦到這個變量中就產生了 http://www.example.com/users/...。
????在 Spring MVC 中,你可是在一個方法參數上使用注解 @PathVariable,來把這個參數綁定到一個URI模板變量上:
@GetMapping("/owners/{ownerId}") public String findOwner(@PathVariable String ownerId, Model model) { Owner owner = ownerService.findOwner(ownerId); model.addAttribute("owner", owner); return "displayOwner"; }
????URI 模板 “/owners/{ownerId}” 指定了一個名叫 ownerId 的變量。當控制器處理這個請求時,ownerId 的值被設置為從 URI 中解析出來的合適的部分。比如,當請求 /owners/fred 進來時,fred 就是 ownerId 的值。
????為了處理注解 @PathVariable,Spring MVC 需要按名找到匹配URI模板的變量。你可以在這個注解中指定:
@GetMapping("/owners/{ownerId}") public String findOwner(@PathVariable("ownerId") String theOwner, Model model) { // implementation omitted }
????如果 URI 模板變量名匹配方法參數名,那么你可以省略詳細配置。只要你的代碼在編譯時帶有調試信息或者在使用 Java 8 編譯時使用參數 -parameters,Spring MVC 就會匹配方法參數名到 URI 模板變量名:
@GetMapping("/owners/{ownerId}") public String findOwner(@PathVariable String ownerId, Model model) { // implementation omitted }
????一個方法可以有任何數量的注解 @PathVariable:
@GetMapping("/owners/{ownerId}/pets/{petId}") public String findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { Owner owner = ownerService.findOwner(ownerId); Pet pet = owner.getPet(petId); model.addAttribute("pet", pet); return "displayPet"; }
????當在一個Map
????一個 URI 模板可以被集成到類和方法級別的@RequestMapping 注解上。方法 findPet() 可以被一個 /owners/42/pets/21 這樣的 URI 調用。
@Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateController { @RequestMapping("/pets/{petId}") public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { // implementation omitted } }
????一個 @PathVariable 參數可以是任何簡單類型,比如 int,long,Date 等。Spring 自動轉換到合適的類型,如果轉換失敗,就拋出一個 TypeMismatchException 異常。你也可以注冊自己的數據類型轉換支持。參見“方法參數和類型轉換”和“自定義 WebDataBinder 初始化”。
????在定義URI模板變量時,你需要更高的精確度。考慮 URL“/spring-web/spring-web-3.0.5.jar”。你怎么把它分成幾部分呢?
????注解 @RequestMapping 支持在 URI 模板變量中使用正則表達式。語法 {varName:regex} 的第一部分定義了變量名,第二部分是一個正則表達式。例如:
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:d.d.d}{extension:.[a-z]+}") public void handle(@PathVariable String version, @PathVariable String extension) { // ... }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65118.html
摘要:當向系統發出通知時,它將先以圖標的形式顯示在通知欄中。通知欄和抽屜式通知欄均是由系統控制,用戶可以隨時查看。更新通知跟發送通知使用相同的方式。創建返回棧添加返回棧代碼默認情況下,從通知啟動一個,按返回鍵會回到主屏幕。 目錄介紹 1.Notification簡單概述 2.Notification通知用途 3.Notification的基本操作 3.1 Notification創建必要的...
摘要:有兩種方法,一種是在開發環境中設置通過的,另一種是在服務器上修改的配置設置。這樣我們以后使用訪問接口就可以不加了,打包后訪問也不用手動去除統一管理在項目開發過程中,會涉及到很多接口的處理,當項目足夠大時,就需要統一管理接口。 這篇文章總結了vue項目的所遇到的問題,包括跨域、用戶認證、接口統一管理、路由配置、兼容性處理,性能優化等內容。 項目github地址 : 前端 https:...
摘要:使用自建的類加載器主要是為了便于處理預編譯后的字節碼以及方便在模式下進行即時的熱更新。 注:本系列文章所用play版本為1.2.6 在上一篇中,我們分析了play的2種啟動方式,這一篇,我們來看看Play類的初始化過程 Play類 無論是Server還是ServletWrapper方式運行,在他們的入口中都會運行Play.init()來對Play類進行初始化。那在解析初始化之前,我們先...
摘要:每個服務由多個進程組成,為首的進程名為。服務使用字節長的內部事務標識符,即時發生重疊后仍然繼續使用,這會導致問題,所以需要定期進行操作。操作被認為是緊跟操作后的操作。在涉及高比例插入刪除的表中,會造成索引膨脹,這時候可以重建索引。 簡介和認知 發音 post-gres-q-l 服務(server) 一個操作系統中可以啟動多個postgres服務。每個服務由多個進程組成,為首的進程名為p...
摘要:設計模式目的為了代碼可重用性讓代碼更容易被他人理解保證代碼可靠性設計原則設計原則是設計模式為了達到其目的,所實現的一些準則。 設計模式簡介 1.什么是設計模式 設計模式對是經驗的總結,是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。代表了最佳的實戰。 2.提出及GOF 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnso...
閱讀 2339·2023-04-25 14:29
閱讀 1464·2021-11-22 09:34
閱讀 2707·2021-11-22 09:34
閱讀 3394·2021-11-11 10:59
閱讀 1856·2021-09-26 09:46
閱讀 2227·2021-09-22 16:03
閱讀 1925·2019-08-30 12:56
閱讀 482·2019-08-30 11:12