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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

jersey 过滤_Jersey

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jersey 过滤_Jersey 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文從以下兩個方面對jersey進行介紹:(內容主要來源于jersey官網)

一、jersey簡單介紹

二、jersey的實現基礎:JAX-RS程序接口核心。

一、jersey簡單介紹

前言:

如果沒有一套好的工具或框架,要開發一套能以多種媒體類型顯示數據、并且屏蔽client-server底層通信細節 的restful風格的web service ,將是一件耗時耗力的事情。為了簡化restful web 服務的開發成本、提高效率,JAVA EE6 引入的一個新技術:JAX-RS。

JAX-RS(即Java API for RESTful Web Services),是一個Java 編程語言的應用程序接口,支持按照表述性狀態轉移(REST)架構風格創建Web服務。JAX-RS和所有JAVA EE的技術一樣,只提供了技術標準,允許各個廠家有自己的實現版本,實現版本有:RESTEasy(JBoss),?Jersey(Sun提供的參考實現),?Apache CXF,?Restlet(最早的REST框架,先于JAX-RS出現),?Apache Wink。JAX-RS基于JavaEE的Servlet。

Jersey

jersey是一套restful風格的開源框架,jersey提供了JAX-RS接口,并且作為JAX-RS的一種參考實現。

jersey不僅僅是對JAX-RS接口的實現,在此之外,還通過擴展JAX-RS實現了自己的一些接口,這些擴展接口可以進一步的去簡化restful服務的開發,提升效率。

與JAVA SE 的版本兼容

jersey2.6? 及之前版本? 基于 JAVA SE 6

2.25. 系列?基于JAVA SE 7

2.26 基于JAVA SE 8

Jerset依賴

對于使用MAVEN進行項目構建的開發者來說,添加jersey依賴十分方便。mvn中心倉庫包含了所有jersey的穩定版本。如果有需要可以在https://maven.java.net上main獲取jersey的最新版本(開發測試版本)。

詳情可參考官方教程:https://jersey.github.io/documentation/latest/modules-and-dependencies.html

二、jersey實現的基礎:AX-RS程序接口核心概念:資源和子資源

1、root resource classes

根資源類,是一種由@path注解、并且包含至少一個由@path或@GET、@POST等資源方法指示符 注解的方法? 的JAVA類。

資源方法,是帶有資源方法指示符的資源類的方法。

@Path 注解的值是URI的相對路徑。 我們可以在URI中加入變量, 在資源方法中使用@PathParam 來獲取參數:

@Path("/users/{username}")public classUserResource {

@GET

@Produces("text/xml")public String getUser(@PathParam("username") String userName) {

...

}

}

也是使用正則表達式對前端的查詢參數進行過濾,如:? ??@Path("users/{username: [a-zA-Z][a-zA-Z_0-9]*}")

1)HTTP 相應注解

@GET, @PUT, @POST, @DELETE and @HEAD 是由 JAX-RS? 定義的資源方法標志符注解。其名稱與HTTP方法相對應,用于處理HTTP的相關請求。

2)@Produces 注解

@Produces 注解用于指定 表示一個資源的枚舉媒體類型。可以用在資源類,也可以用在資源方法上(具有更高的優先權)。如下所示:

@Path("/myResource")

@Produces("text/plain")public classSomeResource {

//返回純文本

@GETpublicString doGetAsPlainText() {

...

}

//返回html

@GET

@Produces("text/html")publicString doGetAsHtml() {

...

}

}

另外,也可以同時使用多種媒體輸出類型。

3)@Consumes注解

用于指定資源方法可以消費的媒體類型,用法與@produces類似。(用于輸入信息的過濾,而@Produces用于輸出信息的過濾)。@Consumers也可以使用在類或者方法上。

4)參數注解

@QueryParam用于從請求的URL上獲取查詢參數。而上文提及的@PathParam用于獲取 由@Path注解中定義的路徑參數。

@DefaultValue注解用于設置查詢參數的默認值,注解用例如下:

@Path("smooth")

@GETpublicResponse smooth(

@DefaultValue("2") @QueryParam("step") intstep,

@DefaultValue("true") @QueryParam("min-m") booleanhasMin,

@DefaultValue("true") @QueryParam("max-m") booleanhasMax,

@DefaultValue("true") @QueryParam("last-m") booleanhasLast,

@DefaultValue("blue") @QueryParam("min-color") ColorParam minColor,

@DefaultValue("green") @QueryParam("max-color") ColorParam maxColor,

@DefaultValue("red") @QueryParam("last-color") ColorParam lastColor) {

...

}

@PathParam注解 和其他 :@MatrixParam, @HeaderParam, @CookieParam, @FormParam等基于參數的注解,都遵循和@QueryParam注解一樣的使用規則。

其中,@ MatrixParam提取URL路徑段的信息。@ HeaderParam提取HTTP頭信息。@ CookieParam提取cookie相關的HTTP標頭聲明。

@FormParam獲取來自表達的數據,并且媒體類型必須為“application/x-www-form-urlencoded”。如下:

@POST

@Consumes("application/x-www-form-urlencoded")public void post(@FormParam("name") String name) {//Store the message

}

如果想獲取參數名到參數值得映射,使用如下方法:

@GETpublicString get(@Context UriInfo ui) {

MultivaluedMap queryParams =ui.getQueryParameters();

MultivaluedMap pathParams =ui.getPathParameters();

}

獲取cookie或者header:

@GETpublicString get(@Context HttpHeaders hh) {

MultivaluedMap headerParams =hh.getRequestHeaders();

Map pathParams =hh.getCookies();

}

通常情況下,@Context注解可以用于獲取所有request、response相關的環境上下文java類型數據。

2.sub-resources

root resource class 中被@Path注解的方法就是 sub-resources(子資源)。

1)根據request URL對@Path標識的子資源進行分層匹配。如下(不同的請求路徑會向不同層級下的資源進行匹配):

@Singleton

@Path("/printers")public classPrintersResource {

@GET

@Produces({"application/json", "application/xml"})publicWebResourceList getMyResources() { ... }

@GET @Path("/list")

@Produces({"application/json", "application/xml"})publicWebResourceList getListOfPrinters() { ... }

@GET @Path("/jMakiTable")

@Produces("application/json")publicPrinterTableModel getTable() { ... }

@GET @Path("/jMakiTree")

@Produces("application/json")publicTreeModel getTree() { ... }

@GET @Path("/ids/{printerid}")

@Produces({"application/json", "application/xml"})public Printer getPrinter(@PathParam("printerid") String printerId) { ... }

@PUT @Path("/ids/{printerid}")

@Consumes({"application/json", "application/xml"})public void putPrinter(@PathParam("printerid") String printerId, Printer printer) { ... }

@DELETE @Path("/ids/{printerid}")public void deletePrinter(@PathParam("printerid") String printerId) { ... }

}

3.life-cycle of root resource classes

默認情況,在執行每個request url 的時候,被匹配到的root resource classes都會新建一個實例。

以下是對生命周期進行管理的三個注解:

@RequestScoped (默認注解)  每個新的request都會創建一個新實例用于處理請求(同一個請求的實例不會被重復創建)。

@PerLookup           每次請求都會創建新實例。(即使處理的是同一個請求)

@Singleton           每一個jax-rs實例將會只產生一個實例資源。

4.注入規則

以下例子使用了多種注入值的使用方法(屬性、方法、構造函數等注入值)

@Path("{id:\\d+}")public classInjectedResource {//Injection onto field

@DefaultValue("q") @QueryParam("p")privateString p;//Injection onto constructor parameter

public InjectedResource(@PathParam("id") intid) { ... }//Injection onto resource method parameter

@GETpublicString get(@Context UriInfo ui) { ... }//Injection onto sub-resource resource method parameter

@Path("sub-id")

@GETpublic String get(@PathParam("sub-id") String id) { ... }//Injection onto sub-resource locator method parameter

@Path("sub-id")public SubResource getSubResource(@PathParam("sub-id") String id) { ... }//Injection using bean setter method

@HeaderParam("X-header")public voidsetHeader(String header) { ... }

}

總結

以上是生活随笔為你收集整理的jersey 过滤_Jersey的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色婷婷久久久 | 美女网站一区 | 国产精品夜夜 | 美女网站黄频 | 蜜桃va| 日本成人一区 | 91区| 国产干b | 奇米影视欧美 | 亚洲热热 | www.久久视频 | 这里只有精品视频 | 免费在线黄 | 超碰偷拍 | 中文字幕在线观看欧美 | 99久久国产精| 恶虐女帝安卓汉化版最新版本 | 日本免费网 | 久久婷婷一区 | 国产91九色 | 日韩大片在线观看 | 麻豆视频免费在线 | 综合视频一区 | 深夜福利一区二区 | 中文字幕人妻色偷偷久久 | 国产欧美日韩三区 | 妺妺窝人体色www聚色窝仙踪 | 国产精品一区二区无码对白 | 中文字幕在线播放一区 | 国产精品免费网站 | 亚洲精品一区久久久久久 | 欧美精品在线观看 | 肉体粗喘娇吟国产91 | 亚洲第一国产视频 | 国产精品不卡视频 | 日韩精品免费一区二区夜夜嗨 | 欧美综合在线观看 | 欧美日韩黑人 | 91在线精品播放 | av免费成人| 黄色日韩视频 | 久久99在线 | 欧美精品成人一区二区在线观看 | 天天爱夜夜爱 | 一本一道波多野结衣av黑人 | 亚洲天堂男人 | 911精品国产一区二区在线 | 精品一区久久 | 久色电影| 91黄址 | 成人黄色在线看 | 欧美视频在线观看一区二区三区 | 91肉色超薄丝袜脚交一区二区 | 日韩av片在线播放 | 精品三级视频 | 高清福利视频 | 亚洲国产精品久久久久爰性色 | 亚洲a一区二区 | 国产性猛交╳xxx乱大交 | 亚洲国产精品福利 | 色婷婷国产精品综合在线观看 | 国产又粗又深又猛又爽又在线观看 | 欧美黄在线 | 国产裸体视频 | 国产精品久久久久久免费 | 伊人色综合久久天天 | 国产精品二区一区二区aⅴ污介绍 | 欧洲色网 | 日本一二三视频 | 久久爱99| 视频二区在线观看 | 久久艳片www.17c.com | 日本女优黄色 | 男人av资源| 国产精品入口麻豆九色 | 先锋影音制服丝袜 | 亚洲欧美日韩综合一区二区 | 日韩精品一区二区三区视频在线观看 | 在线免费黄| 亚洲成人无码久久 | 国产香蕉一区二区三区 | 欧美另类极品 | 中文字幕无码人妻少妇免费 | 波多一区 | xx性欧美肥妇精品久久久久久 | 在线观看成年人视频 | 波多野结衣之潜藏淫欲 | 99久久精品国产亚洲 | 国产福利精品视频 | 一区视频免费观看 | 中国黄色一级视频 | 欧美另类国产 | 中文字幕亚洲视频 | 欧美色亚洲 | 99色播 | 快播久久| 午夜亚洲视频 | 精品国产视频一区二区三区 | 七仙女欲春2一级裸体片 |