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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

input发送a.jax_JAX-RS 2.0:服务器端处理管道

發(fā)布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 input发送a.jax_JAX-RS 2.0:服务器端处理管道 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

input發(fā)送a.jax

這篇文章的靈感來自JAX-RS 2.0規(guī)范文檔 (附錄C)中的Processing Pipeline部分。 我喜歡它的原因在于它提供了JAX-RS中所有模塊的漂亮快照-以準備好吞咽的膠囊形式!

禮貌– JAX-RS 2.0規(guī)范文檔

因此,我想到了使用此圖簡要概述不同的JAX-RS組件以及它們?nèi)绾蜗嗷f(xié)調(diào)。

涵蓋了什么?

  • 過濾器(請求和響應(yīng))
  • 方法匹配
  • 注射
  • 攔截器(請求和響應(yīng))
  • 實體提供者(請求和響應(yīng))

注意:這里討論的是服務(wù)器端處理管道,即在客戶端發(fā)送HTTP請求(GET,POST,PUT等)之后觸發(fā)的動作序列

當客戶端(瀏覽器或自定義REST客戶端)向您的RESTful服務(wù)發(fā)送HTTP請求時,一切就開始了!

請求過濾器(鏈)

客戶端請求由JAX-RS過濾器處理。 它們適用于服務(wù)器端和客戶端(我們將研究服務(wù)器端過濾器-基于請求和響應(yīng))

  • 過濾器是可選組件,您可以通過簡單地實現(xiàn)ContainerRequestFilter接口來編寫過濾器。 需要使用@Provider批注對它們進行批注,以通過JAX-RS運行時自動檢測
  • 可以更改ContainerRequestContext的實例并更改標頭,Cookie,URI等屬性。過濾器不允許您訪問HTTP請求正文/消息有效負載( 攔截器可以做到這一點)
  • 可用于實現(xiàn)日志記錄,身份驗證等
  • 如果需要在資源方法匹配之前執(zhí)行過濾器實現(xiàn)類,請在實現(xiàn)類上使用@PreMatching批注。
  • 過濾器可以(全局)綁定到所有JAX-RS方法,也可以使用@NamedBinding批注或DynamicFeature接口的實現(xiàn)有選擇地綁定
  • @Priority批注可用于確定多個過濾器(順序鏈)的執(zhí)行順序。

方法匹配

在(成功)執(zhí)行過濾器之后,JAX-RS運行時將啟動資源方法匹配過程

  • 調(diào)用的確切方法基于規(guī)范概述的算法 (盡管JAX-RS提供程序不受其約束)
  • 由以下提到的注釋的組合確定
  • @ GET,@ PUT,@ POST,@ DELETE等–這些注釋應(yīng)與實際的HTTP操作匹配(注釋到HTTP動詞的映射非常明顯)
  • @Path –其值(相對于上下文根)用于映射請求URI,例如/ tweeters / all
  • @Consumes –其值應(yīng)與HTTP請求中發(fā)送的Content-Type標頭值匹配
  • @Produces –其值應(yīng)與HTTP請求中發(fā)送的Accept標頭值匹配

HTTP組件注入

方法匹配完成后,所需的HTTP組件將在JAX-RS運行時注入到JAX-RS資源類中(如果已配置)。 我們需要做的就是使用適當?shù)淖⑨?

HTTP URI參數(shù)

  • @QueryParam –從URI查詢參數(shù)中提取值并將其注入,例如, http : //tweeter.com/info?tweeter = abhi_tweeter上的GET請求
  • @PathParam –從URI模板參數(shù)中提取值并將其注入,例如在http://tweeter.com/info/tweeter/abhi_tweeter上的GET請求
  • @MatrixParam –從URI矩陣參數(shù)中提取值并將其注入

其他HTTP組件

JAX-RS使訪問(注入)HTTP請求組件(如標頭,Cookie甚至HTTP表單數(shù)據(jù))變得容易

  • @HeaderParam –提取請求的標頭。 您還可以使用@Context批注注入HttpHeaders實例
  • @CookieParam –用于從HTTP請求中注入HTTP cookie
  • @FormParam –可以幫助使用HTTP POST請求從通過HTML表單發(fā)送的屬性中插入值
  • @BeanParam –可以幫助在自定義域類的實例變量上使用上述所有與注入相關(guān)的注釋,而不是使用這些注釋將值注入各個方法參數(shù)

請求攔截器(鏈)

攔截器適用于服務(wù)器端和客戶端(我們將僅查看服務(wù)器端攔截器-基于請求和響應(yīng))

  • 攔截器有助于在處理HTTP請求有效負載之前對其進行突變
  • 僅當在JAX-RS運行時中注冊了MessageBodyReader (請參見下一主題)實現(xiàn)時,才調(diào)用請求攔截器。
  • 用于傳入服務(wù)器請求的攔截器由ReaderInterceptor接口的實現(xiàn)處理,并且需要使用@Provider注釋進行注釋,以通過JAX-RS運行時自動檢測
  • ReaderInterceptorContext實例在JAX-RS運行時傳遞,并且可以使用java.io.InputStream形式訪問HTTP正文。
  • 攔截器可以(全局)綁定到所有JAX-RS方法,也可以通過使用@NamedBinding批注或DynamicFeature接口的實現(xiàn)有選擇地綁定
  • 攔截器可以被鏈接和(使用@priority)和優(yōu)先呼叫的繼續(xù)進行的ReaderInterceptorContext的方法自動調(diào)用鏈中的或化MessageBodyReader實現(xiàn)本身下一個攔截
  • ReaderInterceptor充當MessageBodyReader的包裝器(在內(nèi)部調(diào)用)

實體提供者(

實體提供者幫助將HTTP消息有效負載轉(zhuǎn)換為適當?shù)腏ava類型(用于注入到JAX-RS資源類的方法參數(shù)中),反之亦然

  • HTTP請求有效負載到其對應(yīng)的Java類型的轉(zhuǎn)換是通過實現(xiàn)MessageBodyReader接口的具體類完成的
  • MessageBodyReader實現(xiàn)的readFrom方法是執(zhí)行操作的地方。 JAX-RS運行時會傳入所有上下文信息,包括有效載荷本身(以InputStream的形式),然后可以對其進行自省并將其轉(zhuǎn)換為適當?shù)腏ava類型。
  • JAX-RS規(guī)范要求,對于某些Java類型(例如String,InputStream,File等),實現(xiàn)應(yīng)包含MessageBodyReader接口的現(xiàn)成實現(xiàn)。

響應(yīng)過濾器(鏈)

響應(yīng)過濾器類似于前面討論的以請求為中心的過濾器。

  • 響應(yīng)過濾器是可選組件,您可以通過簡單地實現(xiàn)ContainerResponseFilter接口來編寫一個。
  • 這些類型的過濾器用于修改響應(yīng)標頭,添加cookie等??梢愿腃ontainerResponseContext的實例并更改屬性以實現(xiàn)此目的。 篩選器不允許您訪問HTTP響應(yīng)正文/消息有效負載( 攔截器可以執(zhí)行此操作)
  • 需要使用@Provider批注對它們進行批注,以通過JAX-RS運行時自動檢測
  • 過濾器可以(全局)綁定到所有JAX-RS方法,也可以使用@NamedBinding批注或DynamicFeature接口的實現(xiàn)有選擇地綁定
  • @Priority批注可用于確定多個過濾器(順序鏈)的執(zhí)行順序。

響應(yīng)攔截器(鏈)

  • 僅當注冊MessageBodyWriter (請參閱下一主題)以處理傳出的HTTP有效負載時,才調(diào)用它們。
  • 傳出服務(wù)器響應(yīng)的攔截器由類WriterInterceptor的實現(xiàn)處理,并且需要使用@Provider注釋進行注釋,以通過JAX-RS運行時自動檢測
  • 可以將攔截器進行鏈接和確定優(yōu)先級(使用@Priority),并調(diào)用WriterInterceptorContext的proce方法會自動調(diào)用鏈中的下一個攔截器或MessageBodyWriter實現(xiàn)本身
  • WriterInterceptor充當MessageBodyWriter的包裝器(在內(nèi)部調(diào)用)

實體提供者(

  • 應(yīng)用程序代碼返回的Java對象到HTTP響應(yīng)有效負載的轉(zhuǎn)換是通過實現(xiàn)MessageBodyWriter接口的具體類完成的
  • MessageBodyWriter實現(xiàn)的writeTo方法是執(zhí)行操作的地方。 JAX-RS運行時將所有上下文信息與OutputStream一起傳遞給OutputStream ,從Java類型轉(zhuǎn)換后,響應(yīng)流可以寫入該OutputStream。
  • JAX-RS規(guī)范要求,對于某些Java類型(如String,InputStream,File等),實現(xiàn)應(yīng)包含MessageBodyWriter接口的現(xiàn)成實現(xiàn)。

好吧! 這是對服務(wù)器端請求處理如何在JAX-RS中工作以及哪些組件起作用的相當簡短的概述。 謝謝閱讀。 干杯!

參考資料

  • JAX-RS規(guī)格文件
  • Java EE 7 API Java文檔

翻譯自: https://www.javacodegeeks.com/2015/01/jax-rs-2-0-server-side-processing-pipeline.html

input發(fā)送a.jax

總結(jié)

以上是生活随笔為你收集整理的input发送a.jax_JAX-RS 2.0:服务器端处理管道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。