版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1Play.libs大多數(shù)據(jù)庫都是簡潔的幫助類,而且格外易懂易用:Codec:數(shù)據(jù)編碼和解碼工具箱Crypto:密碼圖形工具〔驗(yàn)證碼?〕Expression:動態(tài)評價(jià)表達(dá)式?F:javaFiles:文件系統(tǒng)掌握幫助類I18N:國際化幫助類IO:流掌握幫助類Images:圖片掌握工具箱Mail:E-mailMimeTypes:MIMEOAuth:OAuth〔安全認(rèn)證〕OAuth2:OAuth2客戶端協(xié)議〔安全認(rèn)證〕OpenID:OpenID客戶端協(xié)議〔安全認(rèn)證〕Time:時(shí)間和持續(xù)期間工具箱WSWebservicesXMLXMLXPathXPathXML下面的內(nèi)容著重介紹一些格外重要的庫。XPathXMLplay.libs.XPathXPathorg.w3.dom.Nodeorg.w3.dom.DocumentxmlDoc//aDocumentsomewherefor(Nodeevent:XPath.selectNodes(“events//event“,xmlDoc)){Stringname=XPath.selectText(“name“,event);Stringdata=XPath.selectText(“@date“,event);for(Nodeplace:XPath.selectNodes(“//place“,event)){Stringplace=XPath.selectText(“@city“,place);?}?}WebServiceclient,UnderthehooditusesAsyncclient.創(chuàng)立一個(gè)懇求格外簡潔:Responseres=“://google/“WS.url(“://google“).get;一旦獲得Response對象后,就可以訪問全部的response屬性了:intstatus=res.getStatus;Stringtype=res.getContentType;也可獲得不同類型的內(nèi)容體:Stringcontent=res.getString;Documentxml=res.getXml;JsonElementjson=res.getJson;InputStreamis=res.getStream;也可以非堵塞方式使用asyncAPI來創(chuàng)立一個(gè)懇求。然后就可以得到一個(gè)Promise<Response>futureResponse=WS.url(“://google/““://google“).getAsync;FunctionalprogrammingwithJava功能擴(kuò)展?play.libs.F〔functionalprogramming〕帶來了很多格外有用的Option<T>(TEither<A,B>AB)Tuple<A,B>AB)Option<T>,Some<T>andNone<T>在某些狀況下,函數(shù)可能不會返回結(jié)果〔find〕,通常做法〔格外糟糕〕null,這樣做實(shí)際上格外危急,由于函數(shù)的返回類型不清楚。Option<T>就是一個(gè)優(yōu)雅的解決方案。假設(shè)函數(shù)成功執(zhí)行,就返回明確的類型封裝了真實(shí)的結(jié)果的子類型例如:*/publicOption<Double>div(doublea,doubleb){if(b==0)returnNone;elsereturnSome(a/b);}用法:Option<Double>q=div(42,5);if(q.isDefined){L(“q=%s“,q.get);//“q=8.4“}Option<T>Iterable<T>:for(doubleq:div(42,5)){L(“q=%s“,q);//“q=8.4“}Tuple<A,B>AB。使用_1_2AB,如:publicOption<Tuple<String,String>>parseEmail(Stringemail){finalMatchermatcher=Patternpile(“(\\w+)@(\\w+)“).matcher(email);if(matcher.matches){returnSome(Tuple(matcher.group(1),matcher.group(2)));}returnNone;}然后:for(Tuple<String,String>email:“mailto:foo@bar“parseEmail(“foo@bar“)){L(“name=%s“,email._1);//“name=foo“L(“server=%s“,email._2);//“server=bar“}B>T3<A,B,C>類,始終T5<A,B,C,D,E>。PatternMatchingjavajava案并不算太壞。匹配必需檢測對象是否匹配必需的條件,還要能提取感興趣的值。playplay.libs.F:String型,并且是以‘command:’字符串開頭的。標(biāo)準(zhǔn)方式為:Objecto=anything;if(oinstanceofString&&((String)o).startsWith(“command:“)){Strings=(String)o;System.out.println(s.toUpperCase);}使用Play模式匹配庫,就可以這樣寫:for(Strings:String.and(StartsWith(“command:“)).match(o)){System.out.println(s.toUpperCase);}不需要進(jìn)展轉(zhuǎn)換。PromisesPromiseplayFuture”類型。事實(shí)上一個(gè)Promise<T>類型也是Future<TFutureonRedeem(?)方法能夠獵取注冊返回的力量,該方法僅在允許的值可用時(shí)才能被調(diào)用。Future〔Jobs,WS.async,等待)。PromisesPromisep=Promise.waitAll(p1,p2,p3)Promisep=Promise.waitAny(p1,p2,p3)Promisep=Promise.waitEither(p1,p2,p3)OAuthOAuthAPI驗(yàn)證,應(yīng)用地桌面和web連接至可能的效勞。標(biāo)準(zhǔn)步驟為:跳轉(zhuǎn)用戶到供給者的驗(yàn)證頁在用戶授權(quán)驗(yàn)證完畢后,將直接返回到原來的效勞器效勞器至效勞器的方式完成的。playOAuth1.0OAuth1.0play.libs.OAuthoauth-signpostTwitter和Google的驗(yàn)證效勞。OAuth.ServiceInfoserviceprovider:RequesttokenURLAccesstokenURLAuthorizeURLConsumerkeyConsumersecretaccesstokenpublicstaticvoidauthenticate{//TWITTEROAuth.ServiceInfo//getUser用于返回當(dāng)前用戶if(OAuth.isVerifierResponse){//verifieraccesstokensOAuth.Responseresp=OAuth.service(TWITTER).retrieveAccessToken(getUser.token,getUser.secret);//存儲它們并返回indexgetUser.token=resp.token;getUser.secret=resp.secret;getUser.saveindex;}OAuthtwitt=OAuth.service(TWITTER);Responseresp=twitt.retrieveRequestToken;tokens//在連續(xù)之前先要保存getUser.token=resp.token;getUser.secret=resp.secret;getUser.save//redirect(twitt.redirectUrl(resp.token));}現(xiàn)在可以使用token對通過安排的懇求執(zhí)行下面的調(diào)用:mentions=WS.url(url).oauth(TWITTER,getUser.token,getUser.secret).get.getString;盡管這個(gè)事例沒有進(jìn)展錯(cuò)誤檢測,但在生產(chǎn)環(huán)境,還是應(yīng)當(dāng)進(jìn)展檢測。error容。很多狀況下不能給用戶授權(quán)的緣由是供給者已經(jīng)下線或錯(cuò)誤太多。完整的例如見samples-and-tests/twitter-oauth。OAuth2.0signingFacebook和37signals。play.libs.OAuth2OAuth2獵?。篈ccesstokenURLAuthorizeURLClientIDSecretpublicstaticvoidauth{//FACEBOOKOAuth2if(OAuth2.isCodeResponse)//authUrlretrieveVerificationCodeOAuth2.Responseresponse=FACEBOOK.retrieveAccessToken(authUrl);nullStringaccessToken=response.accessToken;調(diào)用成功則為nullOAuth2.Errorresponse.error;index;}//authUrlURL////FACEBOOK.requestVerificationCode(authUrl);}一旦獵取當(dāng)前用戶的accesstoken,就可以用它來查詢效勞:WS.url(“s://graph.facebook/me?access_token=%s“,access_token).get.getJson;samples-and-tests/facebook-oauth2。OpenIDOpenIDOpenID本例如供給一個(gè)輕量級的演示,用于演示假設(shè)使用OpenID驗(yàn)證用戶:對每個(gè)懇求,檢測用戶是否已經(jīng)連接假設(shè)沒有,就顯示用戶可以提交OpenID的頁面OpenID當(dāng)用戶回來的時(shí)候,獵取驗(yàn)證的OpenID并存儲到session里play.libs.OpenIDOpenID@Before(unless={“l(fā)ogin“,“authenticate“})staticvoidcheckAuthenticated{if(!session.contains(“user“)){login;}}publicstaticvoidindex{render(“Hello%s!“,session.get(“user“));}publicstaticvoidlogin{render;}publicstaticvoidauthenticate(Stringuser){if(OpenID.isAuthenticationResponse){UserInfoverifiedUser=OpenID.getVerifiedID;if(verifiedUser==null){flash.error(“Oops.Authenticationhasfailed“);login;}session.put(“user“,verifiedUser.id);index;}else{if(!OpenID.id(user).verify){//willredirecttheuserflash.error(“CannotverifyyourOpenID“);login;}}}login.html#{ifflash.error}<h1>${flash.error}</h1>#{/if}<formaction=“
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)保設(shè)備購置與運(yùn)營維護(hù)服務(wù)協(xié)議4篇
- 二零二五云南綠色建筑示范項(xiàng)目施工建設(shè)合同3篇
- 二零二五年環(huán)保產(chǎn)品推廣封面合同圖片制作協(xié)議3篇
- 二零二五年度時(shí)尚服飾門店承包經(jīng)營授權(quán)書3篇
- 2025年度智能硬件產(chǎn)品電商銷售代理合作協(xié)議范本4篇
- 二零二五年度財(cái)產(chǎn)捐贈分配與使用管理合同3篇
- 二零二五版國內(nèi)數(shù)據(jù)中心托管與網(wǎng)絡(luò)安全保障協(xié)議3篇
- 2025年洗浴中心能源消耗及節(jié)能減排合同3篇
- 2025物業(yè)服務(wù)項(xiàng)目比選采購合同文本2篇
- 二零二五年度汽車抵押貸款逾期處理合同4篇
- 機(jī)械點(diǎn)檢員職業(yè)技能知識考試題庫與答案(900題)
- 成熙高級英語聽力腳本
- 北京語言大學(xué)保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級下冊數(shù)學(xué)全冊完整版課件
- 商場裝修改造施工組織設(shè)計(jì)
- (中職)Dreamweaver-CC網(wǎng)頁設(shè)計(jì)與制作(3版)電子課件(完整版)
- 統(tǒng)編版一年級語文上冊 第5單元教材解讀 PPT
- 中班科學(xué)《會說話的顏色》活動設(shè)計(jì)
- 加減乘除混合運(yùn)算600題直接打印
- ASCO7000系列GROUP5控制盤使用手冊
評論
0/150
提交評論