日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 3.2矩阵变量是什么? –第2部分:代码

發布時間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 3.2矩阵变量是什么? –第2部分:代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于Spring對Matrix Variables的支持,我最近的博客集中在解釋它們是什么以及為什么要使用它們。 整理了內容和原因之后 ,此博客全面介紹了如何以及如何使用它們。 我還給出了幾個Matrix URI的示例,因此,演示一些處理幾個URI的代碼似乎是個好主意。

示例包括:

http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70,+10.40,+3.91;AZN=236.00,+103.00,+3.29;SBRY=375.50,+7.60,+2.07http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70,+10.90,+3.91;AZN=236.00,+103.00,+3.29;SBRY=375.50,+7.60,+2.07/account;name=roger;number=105;location=stoke-on-trent,uk

如您所料,在編寫處理Matrix變量的代碼時,Spring專家通過引入新的@MatrixVariable注釋,在現有的Spring MVC框架的基礎上進行了@MatrixVariable 。 這用于注釋請求處理程序方法參數,以便Spring可以注入矩陣uri的相關位。 @MatrixVariable有四個參數: value , defaultValue , pathVar和required ,所有這些在Springs javadocs中都有詳細說明。

等等,到一些代碼...如果您還記得我在上一個有關此主題的博客中,我選擇的場景是處理大量股價/股票的場景,而Github上提供的示例應用程序采用Matrix URI,將其砍掉并將其添加到Model以供JSP顯示。

在編寫代碼時,首先要做的是創建一個新的控制器來處理URI……

@Controller @RequestMapping(value = "/matrixvars") public class MatrixVariableController { private static final Logger logger = LoggerFactory.getLogger(MatrixVariableController.class); }

在代碼中,我添加了一個類級別的@RequestMapping批注,其中包含我的URI的第一塊: matrixvars 。 這是一件很有用的事情,因為它將包含值' matrixvar '的所有URI定向到此控制器的第一個路徑元素,并節省了大量重復。

接下來要做的是向此類中添加一些處理第一個URI的代碼:

http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70,+10.40,+3.91;AZN=236.00,+103.00,+3.29;SBRY=375.50,+7.60,+2.07

第一個請求處理程序方法是:

@RequestMapping(value = "/{stocks}", method = RequestMethod.GET) public String showPortfolioValues(@MatrixVariable Map<String, List<String>> matrixVars, Model model) { logger.info("Storing {} Values which are: {}", new Object[] { matrixVars.size(), matrixVars }); List<List<String>> outlist = map2List(matrixVars); model.addAttribute("stocks", outlist); return "stocks"; } private List<List<String>> map2List(Map<String, List<String>> stocksMap) { List<List<String>> outlist = new ArrayList<List<String>>(); Collection<Entry<String, List<String>>> stocksSet = stocksMap.entrySet(); for (Entry<String, List<String>> entry : stocksSet) { List<String> rowList = new ArrayList<String>(); String name = entry.getKey(); rowList.add(name); List<String> stock = entry.getValue(); rowList.addAll(stock); outlist.add(rowList); } return outlist; }

查看@RequestMapping批注,您可以看到我為其分配了/{stocks}的值。 當與類級別的@RequestMapping注釋結合使用時,它將指示Spring將任何匹配的請求映射到此方法。 花括號內的文本{stocks}表示可以解析URI的這一部分并將其注入到適當的方法參數中。

接下來,看看@MatrixVariable批注。 這恰好位于我希望將股票數據注入其中的論點的前面; 但是,這里有些棘手的事情是使參數類型正確。 如果您弄錯了,那么當您嘗試使用數據時,您只會得到ClassCastException 。 當輸入數據的格式為:

A=B,C,D

要么

A=B,C,D;W=X,Y,Z

…然后類型是Map<String,List<String>> ,其中鍵是A和W ,它們各自的值是B,C,D和X,Y,Z 。

因此,鑒于上述URI,map參數將包含…。

{BT.A=[276.70, +10.40, +3.91], AZN=[236.00, +103.00, +3.29], SBRY=[375.50, +7.60, +2]}

這一點很重要,該方法的其余部分非常簡單,只需將輸入映射轉換為列表,然后將其添加到模型中,供JSP(此處未顯示)顯示。 請注意,這不是非常有用的代碼,因此不必過多地關注它,而且我不喜歡將集合嵌入集合中-這似乎不是一個好主意。

繼續,我現在看下一個URI。 請注意,我故意使它與第一個相似,唯一的區別是增加了用戶的帳戶詳細信息:

http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70,+10.90,+3.91;AZN=236.00,+103.00,+3.29;SBRY=375.50,+7.60,+2.07/account;name=roger;number=105;location=stoke-on-trent,uk

此URI映射到以下方法:

@RequestMapping(value = "/{stocks}/{account}", method = RequestMethod.GET) public String showPortfolioValuesWithAccountInfo(@MatrixVariable(pathVar = "stocks") Map<String, List<String>> stocks, @MatrixVariable(pathVar = "account") Map<String, List<String>> accounts, Model model) { List<List<String>> stocksView = map2List(stocks); model.addAttribute("stocks", stocksView); List<List<String>> accountDetails = map2List(accounts); model.addAttribute("accountDetails", accountDetails); return "stocks"; }

在這種情況下,完整路徑描述為/matrixvars/{stocks}/{account} 。 我猜想這只是告訴Spring /matrixvars要查找/matrixvars ,后跟一個'/'后跟任何東西,然后是'/' ,后跟任何東西。

在這種情況下有兩種@MatrixVariable ,而我已經添加了注解的注解pathVar參數提供值stocks和accounts 。 這些整齊地標記了矩陣變量值需要注入到方法參數中的位置。

最后要記住的一點是,矩陣變量非常靈活。 @MatrixVaraible批注還有另外三個參數,我在這里沒有考慮; 但是,每種情況下的通用過程都是相同的:獲取URI,找出不同的矩陣變量,設計請求處理程序,并將URI的矩陣變量映射到您的方法參數–注意確保您獲得參數類型正確。

  • Github上提供了此博客的完整示例代碼:https://github.com/roghughe/captaindebug/tree/master/spring-3.2

翻譯自: https://www.javacodegeeks.com/2014/05/just-what-are-spring-3-2-matrix-variables-part-2-the-code.html

總結

以上是生活随笔為你收集整理的Spring 3.2矩阵变量是什么? –第2部分:代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。