資源描述:
《使用java創(chuàng)建restfulwebservice-java開(kāi)發(fā)java經(jīng)驗(yàn)技巧》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、使用Java創(chuàng)建RESTfulWebService-Java開(kāi)發(fā)Java經(jīng)驗(yàn)技巧使用Java創(chuàng)建RESTfulWebService木文由ImportNew?陳潔翻譯自eviaco歡迎加入翻譯小組。轉(zhuǎn)載請(qǐng)見(jiàn)文末要求。REST是REpresentationalStateTransfer的縮寫(xiě)(—般中文翻譯為表述性狀態(tài)轉(zhuǎn)移)。2000年RoyFielding博士在他的博士論文^ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures”《體系結(jié)構(gòu)與基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計(jì)》中提出了REST。REST是一
2、種體系結(jié)構(gòu)。而HTTP是一種包含了REST架構(gòu)屬性的協(xié)議。REST基礎(chǔ)概念?在REST中所冇?xùn)|西都被看作資源。每一個(gè)資源都冇一個(gè)URI和它對(duì)應(yīng)。?在REST中使用統(tǒng)一接口處理資源。為數(shù)據(jù)庫(kù)CRUD操作(Create、Read、Update和Delete)一樣,可以用POST、GET、PUT和DELETE處理REST資源。?每個(gè)REST請(qǐng)求都是孤立的,請(qǐng)求屮包含了所需的全部信息。REST服務(wù)端不存儲(chǔ)狀態(tài)。?REST支持不同的通信數(shù)據(jù)格式,比如XML、JSON。RESTfulWebServicesRESTfulWebServices因其簡(jiǎn)單性被廣泛使用,它比SOAP要更簡(jiǎn)單
3、。本文將重點(diǎn)介紹如何使用Jersey框架創(chuàng)建RESTfulWebServicesoJersey框架實(shí)現(xiàn)了JAX-RS接口。本文示例代碼使用Eclipse和JavaSE6編寫(xiě)。創(chuàng)建RESTfulWebService服務(wù)端?在Eclipse屮創(chuàng)建一個(gè)"dynamicwebproject"(動(dòng)態(tài)web丁程),項(xiàng)目名設(shè)為“RESTfulWS"。從這里卜?載Jerseyo示例代碼使用的是Jersey1」7.1。首先解壓Jersey到“jersey-archive-1.17.1”文件夾。接著將里血lib文件夾下的jar文件拷貝到工程目錄的WEB-INF->libo然后將它們添加到b
4、uildpatho1.asm-3?l.jar2.jersey-client-1?17.Ljar3?jersey-core-1.17.1.jar4.jersey-server-1」7.1.jar5.jersey-servlet-1.17」?jar6.jsr311-api-l.1.1.jar在工程JavaResources->src中創(chuàng)建"com.eviac.blog.restwsn包,并在其屮創(chuàng)建“UseHnfo''類(lèi)。最后把web.xml拷貝到WEB-INF目錄下。Userinfo,javapackagecom.eviac.blog,restws;importjavax
5、.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.core.MediaType;/****@authorpavithra**///這里?Path定義了類(lèi)的層次路徑。//指定了資源類(lèi)提供服務(wù)的URI路徑。@Path(z,UserTnfoService〃)publicclassUserinfo{//?GET表示方法會(huì)處理HTTPGET請(qǐng)求?GET//這里@Path定義了類(lèi)的層次路徑。指定了資源類(lèi)提供服務(wù)的URI路
6、徑。@Path("/name/{i}〃)//?Produces定義了資源類(lèi)方法會(huì)生成的媒體類(lèi)型。?Produces(MediaType.TEXTXML)//@PathParam向@Path定義的表達(dá)式注入U(xiǎn)R1參數(shù)值。publicStringuserName(@PathParam(〃i〃)Stringi){Stringname=i;return〃〈User>"+,,,/+name+/,,/+〃〈/User>";}?GET@Path(7age/{j}〃)?Produces(MediaType.TEXT_XML)publicStringuserAg
7、e(@PathParani(〃j")intj){intage=j;return〃〈User>〃+z,z,+age+z,z,+"〈/User>〃;}}web.xml