介紹Jersey-Jersey入門基礎(chǔ)
更新時(shí)間:2013年02月18日 17:21:25 作者:
REST不是一種新的技術(shù),而僅僅是一個(gè)理論,實(shí)踐這樣的理論可以讓我們的應(yīng)用更加先進(jìn)。
這里不準(zhǔn)備討論REST的細(xì)節(jié)內(nèi)容,但是總體上,REST是讓客戶端與服務(wù)器段的交互通過發(fā)送和接收展示資源的方式來進(jìn)行,在這里有必要說明:
Fielding是http協(xié)議和apache web server的核心作者之一。舉個(gè)例子:
一個(gè)http get request可以接收到一個(gè)資源
一個(gè)http post request可以生成一個(gè)資源。
如此描述,對JAVA開發(fā)者來講也許過于底層了,事實(shí)上絕大多數(shù)的J2EE 應(yīng)用程序,尤其javaserver faces應(yīng)用程序是不允許REST這樣的風(fēng)格框架的,所以后面我們會(huì)仔細(xì)比較JavaServer Faces與REST應(yīng)用之間的區(qū)別。JSR311描述了如何在JAVA中實(shí)踐REST的架構(gòu)風(fēng)格。
實(shí)現(xiàn)JSR311的框架已經(jīng)有一些了,比如今天要介紹的Jersey. Jersey目前看是比較成熟,在開發(fā)中應(yīng)用最廣泛,而且被oracle提供支持的開源框架。
一,使用 NetBeans JavaServer Faces,來建立一個(gè)例子應(yīng)用程序
這個(gè)例子是關(guān)于文章投票的系統(tǒng),一篇文章,需要有文章內(nèi)容,作者,投票三個(gè)實(shí)體,實(shí)際上就是我們前面說的資源(針對REST)。
需要說明的這里的文章內(nèi)容,作者,和投票實(shí)體在代碼層面都是映射成類的哦。
在這個(gè)測試應(yīng)用中,我們僅在三個(gè)實(shí)體上生成一個(gè)CRUD(create,read,update,delete)基礎(chǔ)功能,雖然簡單,但是基礎(chǔ)可用。
但是這樣的程序有個(gè)比較大的問題:
程序的VIEW層只能使用JavaServer Faces,而REST風(fēng)格的程序,可以使用多種格式來展示應(yīng)用資源的狀態(tài)信息,例如XML,PDF,JavaScript Object Notation (JSON)等。
二,建立基于REST的客戶端
NetBeans,可以幫助你自動(dòng)整個(gè)建立過程。
1,右鍵你的項(xiàng)目,然后進(jìn)行如下選擇 New > RESTful Web Services from Entity Classes
2,選中前面所建立好的但個(gè)實(shí)體
3,對于轉(zhuǎn)換選擇包 fr.responcia.otn.articleevaluator.rest.converter
對于資源選擇包fr.responcia.otn.articleevaluator.rest.resource
4,選擇Create default REST servlet adaptor in web.xml
NetBeans事實(shí)上生成兩組類,一組類用來映射實(shí)體類到XML文檔,通過使用JAXB技術(shù)。
另一組是資源,每個(gè)資源包括了一類實(shí)體的所有實(shí)例。以方便客戶端的操作和在服務(wù)器及客戶端進(jìn)行交換。
我們可以使用REST的接口來對實(shí)體進(jìn)行操作,在resource包中,你可以通過查看類,可以發(fā)現(xiàn)URLS和針對每個(gè)實(shí)體的顯示層是如何進(jìn)行
構(gòu)建的。
因?yàn)樵谇懊嫖覀儗?shí)現(xiàn)了兩個(gè)作者的實(shí)體實(shí)例,所以當(dāng)你訪問如下地址http://localhost:8080/ArticleEvaluator/resources/authors的時(shí)候,你
可以看到如下界面:
你會(huì)看到兩個(gè)作者的列表信息(圖片省略了),當(dāng)然你也可以通過如下的地址訪問具體的某一個(gè)作者:
http://localhost:8080/ArticleEvaluator/resources/authors/1/
測試REST應(yīng)用
只使用WEB瀏覽器是不能全面測試REST應(yīng)用的,因?yàn)槲覀冞€使用了JSON對象,JSON對象被廣泛的應(yīng)用到REST的應(yīng)用中。
JSON比純粹的XML格式更好,可以被JS腳本訪問。可以結(jié)合jquery使用。
測試REST應(yīng)用,可以使用兩種方法來進(jìn)行:
1,使用Jsersey提供的測試框架
2,使用底層的庫,例如Apache Commons HttpClient ,來手工處理HTTP Request.
通常第一種方法,比較有效率,因?yàn)槭强蚣?,但是想知道更多的?xì)節(jié)則需要使用方法2,你可以到 http://hc.apache.org/httpclient-3.x/ 下載
HttpClient.
測試方法通常包括三個(gè):
createArticle() --生成Article
testResourceAsXml()--測試XML的格式
testResourceAsJson()
比較下 JavaServer Faces and a REST 兩中不同類型的客戶端:
1,兩種客戶端都可以使用NetBeans幫助生成。
2,兩種前端都使用了實(shí)體對象的概念。
3,兩種前端可以同時(shí)使用,不會(huì)有什么沖突。
下面是比較有區(qū)別的地方:
1,JSF的應(yīng)用狀態(tài)保存在了服務(wù)器端,用戶的操作狀態(tài)都保存到了HttpSession 而REST則是把狀態(tài)保存到了客戶端。
使用 REST URLs 來跟資源進(jìn)行交互,這也是為什么JSF比較容易編碼的原因。
2,JSF提供了豐富的用戶界面組件,如果你的應(yīng)用中需要界面,那么使用JSF則比較有效率,后者沒有界面組件,只能結(jié)合JQUERY等來使用。
3,REST擁有better-looking URLs這樣可以被用戶進(jìn)行書簽收藏,也方便搜索引擎收錄。
4,REST提供了對同一資源進(jìn)行多格式顯示的可能,例如XML,PDF,JDON等。
Fielding是http協(xié)議和apache web server的核心作者之一。舉個(gè)例子:
一個(gè)http get request可以接收到一個(gè)資源
一個(gè)http post request可以生成一個(gè)資源。
如此描述,對JAVA開發(fā)者來講也許過于底層了,事實(shí)上絕大多數(shù)的J2EE 應(yīng)用程序,尤其javaserver faces應(yīng)用程序是不允許REST這樣的風(fēng)格框架的,所以后面我們會(huì)仔細(xì)比較JavaServer Faces與REST應(yīng)用之間的區(qū)別。JSR311描述了如何在JAVA中實(shí)踐REST的架構(gòu)風(fēng)格。
實(shí)現(xiàn)JSR311的框架已經(jīng)有一些了,比如今天要介紹的Jersey. Jersey目前看是比較成熟,在開發(fā)中應(yīng)用最廣泛,而且被oracle提供支持的開源框架。
一,使用 NetBeans JavaServer Faces,來建立一個(gè)例子應(yīng)用程序
這個(gè)例子是關(guān)于文章投票的系統(tǒng),一篇文章,需要有文章內(nèi)容,作者,投票三個(gè)實(shí)體,實(shí)際上就是我們前面說的資源(針對REST)。
需要說明的這里的文章內(nèi)容,作者,和投票實(shí)體在代碼層面都是映射成類的哦。
在這個(gè)測試應(yīng)用中,我們僅在三個(gè)實(shí)體上生成一個(gè)CRUD(create,read,update,delete)基礎(chǔ)功能,雖然簡單,但是基礎(chǔ)可用。
但是這樣的程序有個(gè)比較大的問題:
程序的VIEW層只能使用JavaServer Faces,而REST風(fēng)格的程序,可以使用多種格式來展示應(yīng)用資源的狀態(tài)信息,例如XML,PDF,JavaScript Object Notation (JSON)等。
二,建立基于REST的客戶端
NetBeans,可以幫助你自動(dòng)整個(gè)建立過程。
1,右鍵你的項(xiàng)目,然后進(jìn)行如下選擇 New > RESTful Web Services from Entity Classes
2,選中前面所建立好的但個(gè)實(shí)體
3,對于轉(zhuǎn)換選擇包 fr.responcia.otn.articleevaluator.rest.converter
對于資源選擇包fr.responcia.otn.articleevaluator.rest.resource
4,選擇Create default REST servlet adaptor in web.xml
NetBeans事實(shí)上生成兩組類,一組類用來映射實(shí)體類到XML文檔,通過使用JAXB技術(shù)。
另一組是資源,每個(gè)資源包括了一類實(shí)體的所有實(shí)例。以方便客戶端的操作和在服務(wù)器及客戶端進(jìn)行交換。
我們可以使用REST的接口來對實(shí)體進(jìn)行操作,在resource包中,你可以通過查看類,可以發(fā)現(xiàn)URLS和針對每個(gè)實(shí)體的顯示層是如何進(jìn)行
構(gòu)建的。
因?yàn)樵谇懊嫖覀儗?shí)現(xiàn)了兩個(gè)作者的實(shí)體實(shí)例,所以當(dāng)你訪問如下地址http://localhost:8080/ArticleEvaluator/resources/authors的時(shí)候,你
可以看到如下界面:
你會(huì)看到兩個(gè)作者的列表信息(圖片省略了),當(dāng)然你也可以通過如下的地址訪問具體的某一個(gè)作者:
http://localhost:8080/ArticleEvaluator/resources/authors/1/
測試REST應(yīng)用
只使用WEB瀏覽器是不能全面測試REST應(yīng)用的,因?yàn)槲覀冞€使用了JSON對象,JSON對象被廣泛的應(yīng)用到REST的應(yīng)用中。
JSON比純粹的XML格式更好,可以被JS腳本訪問。可以結(jié)合jquery使用。
測試REST應(yīng)用,可以使用兩種方法來進(jìn)行:
1,使用Jsersey提供的測試框架
2,使用底層的庫,例如Apache Commons HttpClient ,來手工處理HTTP Request.
通常第一種方法,比較有效率,因?yàn)槭强蚣?,但是想知道更多的?xì)節(jié)則需要使用方法2,你可以到 http://hc.apache.org/httpclient-3.x/ 下載
HttpClient.
測試方法通常包括三個(gè):
createArticle() --生成Article
testResourceAsXml()--測試XML的格式
testResourceAsJson()
比較下 JavaServer Faces and a REST 兩中不同類型的客戶端:
1,兩種客戶端都可以使用NetBeans幫助生成。
2,兩種前端都使用了實(shí)體對象的概念。
3,兩種前端可以同時(shí)使用,不會(huì)有什么沖突。
下面是比較有區(qū)別的地方:
1,JSF的應(yīng)用狀態(tài)保存在了服務(wù)器端,用戶的操作狀態(tài)都保存到了HttpSession 而REST則是把狀態(tài)保存到了客戶端。
使用 REST URLs 來跟資源進(jìn)行交互,這也是為什么JSF比較容易編碼的原因。
2,JSF提供了豐富的用戶界面組件,如果你的應(yīng)用中需要界面,那么使用JSF則比較有效率,后者沒有界面組件,只能結(jié)合JQUERY等來使用。
3,REST擁有better-looking URLs這樣可以被用戶進(jìn)行書簽收藏,也方便搜索引擎收錄。
4,REST提供了對同一資源進(jìn)行多格式顯示的可能,例如XML,PDF,JDON等。
您可能感興趣的文章:
相關(guān)文章
解決Android Studio安裝后運(yùn)行出錯(cuò)dose not...和Internal error...
這篇文章主要介紹了解決Android Studio安裝后運(yùn)行出錯(cuò)dose not...和Internal error...的相關(guān)資料,需要的朋友可以參考下2017-03-03解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問題
這篇文章主要介紹了解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Linux中Java開發(fā)常用軟件安裝方法總結(jié)
這篇文章主要介紹了Linux中Java開發(fā)常用軟件安裝方法總結(jié),需要的朋友可以參考下2020-02-02SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)
這篇文章主要介紹了SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Maven默認(rèn)中央倉庫(settings.xml 配置詳解)
這篇文章主要介紹了Maven默認(rèn)中央倉庫(settings.xml 配置詳解),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12手把手教你寫一個(gè)SpringBoot+gRPC服務(wù)
本文將在本地環(huán)境下搭建gRPC客戶端和服務(wù)端,并成功建立通訊發(fā)送消息的方式,從而幫助大家深入了解gRPC在Spring Boot項(xiàng)目中的應(yīng)用,有需要的小伙伴可以參考下2023-12-12