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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring MVC中@RequestParam和@PathVariable批注之间的区别?

發布時間:2023/12/3 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC中@RequestParam和@PathVariable批注之间的区别? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring MVC框架是在Java世界中開發Web應用程序最流行的框架之一,它還提供了一些有用的注釋,可以從傳入的請求中提取數據并將請求映射到控制器,例如@ RequestMapping,@ RequestParam和@PathVariable。

即使將@RequestParam和@ParthVariable都用于從HTTP請求中提取值,它們之間也存在細微的差異,這使得它們從訪談和Spring認證的角度來看都是一個有用的問題。 我們將研究之間的細微差別
本文中的@RequestParam和@PathVaraible。 顧名思義,@ RequestParam用于從URL獲取請求參數,也稱為查詢參數,而@PathVariable則從URI提取值。

例如,如果傳入的檢索主題為“ Java”的書的HTTP請求是http:// localhost:8080 / shop / order / 1001 / receipts?date = 12-05-2017,則可以使用@RequestParam批注檢索查詢參數日期,您可以使用@PathVariable提取orderId即“ 1001”,如下所示:

@RequestMapping(value="/order/{orderId}/receipts", method = RequestMethod.GET)public List listUsersInvoices( @PathVariable("orderId") int order,@RequestParam(value = "date", required = false) Date dateOrNull) {...}

required = false表示查詢參數可以是可選的,但URL必須具有相同的URI。

如何使用@RequestParam在Spring MVC中提取查詢參數

Spring MVC是一個豐富的框架,可以用Java開發Web應用程序和RESTful Web服務 。 它提供了幾種從傳入的HTTP請求中檢索數據的方法,例如

  • 請求參數
  • 路徑變量
  • 表格輸入

既然您知道了Spring MVC中@RequestParam和@PathVariable之間的區別,讓我們看看如何編寫可以處理請求參數和路徑變量的Spring控制器。

使用@RequestParam獲取查詢參數

在Spring MVC應用程序中,可以使用@RequestParam批注在Controller的處理程序方法中接受查詢參數。

例如,假設您有一個Web應用程序,該應用程序返回訂單和交易的詳細信息,并且具有以下URL:

http://localhost:8080/eportal/orders?id=1001

要接受上述URL中的查詢參數,可以在Spring MVC控制器中使用以下代碼:

@RequestMapping("/orders")public String showOrderDetails(@RequestParam("id") String orderId, Model model){model.addAttribute("orderId", orderId);return "orderDetails";}

如果查詢參數的名稱與處理程序的@RequestParam注釋參數中的變量名稱相同,則可以直接使用@RequestParam而不指定查詢參數的名稱,Spring會自動派生該值(請參見
Spring MVC簡介 )。

另外,這是證明這一點的代碼:

URL:http://localhost:8080/eportal/trades?tradeId=2001@RequestMapping("/trades")public String showTradeDetails(@RequestParam String tradeId,Model model){model.addAttribute("tradeId", tradeId);return "tradeDetails";}

可以看到,我們剛剛使用@RequestParam注釋了方法參數tradeId,而未指定查詢參數的名稱,因為請求參數的名稱和參數名稱都相同,即“ tradeId”。

如果您有興趣了解有關@RequestParam的更多信息,建議您查看Bryan Hassen的Spring MVC 4簡介,以了解有關@RequestParam批注的更多信息。

使用@PathVariable批注從URI中提取值

您可以使用Spring MVC的@Path Varaible注釋來提取嵌入在URL本身中的任何值。 Spring將其稱為URI模板,其中@PathVariable用于從URI本身獲取一些占位符。

如果您使用過RESTful Web服務,則可能會知道REST URI包含值,例如使用ISBN號檢索書籍的REST API如下所示:

URL:http://localhost:8080/book/9783827319333

現在,要從Spring MVC Controller的處理程序方法中的URI中提取ISBN號的值,可以使用@PathVariable注釋,如以下代碼所示:

@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)public String showBookDetails(@PathVariable("ISBN") String id,Model model){model.addAttribute("ISBN", id);return "bookDetails";}

與@RequestParameter批注類似,如果@RequestMapping批注中路徑變量占位符的名稱與處理程序方法的@PathVariable批注參數中的變量名相同,則也可以省略@PathVariable批注中的value屬性。(請參閱REST with Spring )。

例如,您可以重寫以上代碼,如下所示:

@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)public String showBookDetails(@PathVariable String ISBN,Model model){model.addAttribute("ISBN", ISBN);return "bookDetails";}

Spring MVC提供了一些有用的注釋來映射和提取HTTP請求中的數據,作為Spring開發人員,您應該了解這些注釋,例如@ RequestMapping,@ RequestParam和@PathVariable。

這些概念和注釋對于Spring MVC的訪問前景以及Spring認證都是非常重要的。 基于這些概念,您總是會發現幾個問題。

順便說一句,如果您正在準備Spring Web認證,還可以查看David Mayer的免費Spring Mock Questions ,以了解有關實際Spring Web Certification的問題級別和問題格式的信息。

Spring中@PathVariable和@RequestParam之間的區別

現在我們了解了兩者的區別以及如何使用兩者
@RequestParam和
Spring MVC應用程序中的@PathVariable,讓我們從訪談的角度修改它們之間的主要區別。

1)@RequestParam用于提取查詢參數,而@PathVariable用于直接從URI提取數據。

2)@RequestParam在傳統的Web應用程序上更有用,在傳統的Web應用程序中,數據主要在查詢消除中傳遞,而@PathVariable更適合RESTful Web服務,其中URL包含值,例如http:// localhost:8080 / book / 9783827319333,此處為data ISBN號是URI的一部分。

如果您想了解更多有關如何使用Spring有效開發REST應用程序的信息,建議您加入Eugen Paraschiv的
REST with Spring課程。

這是一門在線課程,它將教您為現實場景開發REST API和服務的精妙方法。

Eugen在使用Spring開發RESTful Web服務方面擁有豐富的經驗,本課程是利用他的知識的絕佳方法。

3)如果查詢參數不存在或為空,則@DefaultParam批注可以使用defaultValue屬性指定默認值,前提是必填屬性為false。

4)Spring MVC允許您在同一方法中使用多個@PathVariable批注,前提是不超過一個參數具有相同的模式。

這就是Spring MVC中@PathVariable和@RequestParam之間的區別 。 即使兩者都用于從URL提取數據,@ RequestParam仍用于檢索查詢參數,在?之后是什么? 在URL中,而@PathVariable用于從URI本身檢索值。 這個概念對于傳統的Web應用程序開發以及使用Spring開發RESTful Web Services都是非常重要的,因此您必須花一些時間來更好地理解它。

您可能想探索的其他Spring MVC文章

Bryan Hassen的Spring MVC 4簡介

Spring MVC中@RestController和@Controller之間的區別?

Spring MVC在內部如何工作?

Spring MVC中DispatcherServlet的用途是什么?

如何在Java Web應用程序中啟用Spring安全性?

Craig Walls的《春天在行動》

感謝您到目前為止閱讀本文。 如果您喜歡這篇文章,請與您的朋友和同事分享。 如有任何疑問,請給我留言。

翻譯自: https://www.javacodegeeks.com/2017/10/differences-requestparam-pathvariable-annotations-spring-mvc.html

總結

以上是生活随笔為你收集整理的Spring MVC中@RequestParam和@PathVariable批注之间的区别?的全部內容,希望文章能夠幫你解決所遇到的問題。

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