Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析三之后端反向調(diào)用前端
在前兩篇中我們已經(jīng)介紹了Dwr零配置文化化和前端調(diào)用后端的方法,想必大家應(yīng)該已經(jīng)會(huì)熟練掌握了,下來(lái)我們主要探討一下后端怎么反向調(diào)用前端的js方法;
就如前兩篇說(shuō)到了用Dwr注冊(cè)了兩個(gè)Service組件,一個(gè)是remote,另外一個(gè)是頁(yè)面使用到的controller,這個(gè)remote是在頁(yè)面一加載進(jìn)來(lái)就會(huì)被調(diào)用的,這樣就使得會(huì)話和頁(yè)面ScriptSession建立了綁定的關(guān)系,方便我們后面使用它的scriptSessionId進(jìn)行頁(yè)面定向推送;
下面是建立會(huì)話和頁(yè)面ScriptSession的方法(頁(yè)面剛加載進(jìn)來(lái)的時(shí)候就會(huì)被調(diào)用的):
ScriptSession scriptSession = WebContextFactory.get().getScriptSession(); String jsessionId = scriptSession.getHttpSessionId(); String dwrSessionId = scriptSession.getId(); LOGGER.info(String.format("set jsessionId = [%s],dwrsession = [%s] push enabled",jsessionId,dwrSessionId)); ConstantCacheService.putCacheConstant(Constants.PUSH_ID+jsessionId, dwrSessionId);
下面是用來(lái)反向調(diào)用前端的Service方法:
@Service("dwrReverseAjaxService") public class DwrReverseAjaxService { private static final Logger LOGGER = LoggerFactory.getLogger(DwrReverseAjaxService.class); public void directWebRemotingWithSession(HttpSession session, final String functionName) {Assert.notNull(session, "[Dwr Reverse Ajax] Session can not be null!"); final String scriptSessionId = ConstantCacheService.getCacheConstantValue(Constants.PUSH_ID + session.getId()); LOGGER.info("[DWR Session ID] = " + scriptSessionId + " [Script Function Name] = " + functionName);Browser.withSession(scriptSessionId, new Runnable() { public void run() {ScriptSessions.addFunctionCall(functionName, ""); }});}}
這個(gè)Service是利用了scriptSessionId來(lái)進(jìn)行反向定位推送的,而這個(gè)scriptSessionId是利用我們之前頁(yè)面剛加載進(jìn)來(lái)就建立好保存到的一個(gè)全局的Map對(duì)里面;
下來(lái)只要在你想要什么時(shí)候調(diào)用的時(shí)候使用注冊(cè)的這個(gè)Service bean就可以了,傳進(jìn)去的參數(shù)為HttpSession和你想調(diào)用的前端Js funciton name,同時(shí)注意一下當(dāng)前頁(yè)面存在這個(gè)Js function,而且一般是主頁(yè)面的Js里面的方法才能被訪問(wèn)到,否則前端會(huì)提示該方法未定義的錯(cuò)誤;
以上就是關(guān)于Dwr的簡(jiǎn)單應(yīng)用,純屬第一次用,有什么不對(duì)的地方,請(qǐng)大家指正出來(lái),感激不盡?。〈笊裾?qǐng)飄過(guò)~~~~~;
- Java BufferedWriter BufferedReader 源碼分析
- Java中BufferedReader與BufferedWriter類的使用示例
- DWR中各種java方法的調(diào)用
- Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析一之零配置文件化
- Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析二之前端調(diào)用后端
- Java多線程編程之讀寫鎖ReadWriteLock用法實(shí)例
- Java并發(fā)編程之顯示鎖ReentrantLock和ReadWriteLock讀寫鎖
- 在DWR中實(shí)現(xiàn)直接獲取一個(gè)JAVA類的返回值的兩種方法
相關(guān)文章
在service層注入mapper時(shí)報(bào)空指針的解決
這篇文章主要介紹了在service層注入mapper時(shí)報(bào)空指針的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java Hutool工具實(shí)現(xiàn)驗(yàn)證碼生成及Excel文件的導(dǎo)入和導(dǎo)出
Hutool是一個(gè)小而全的Java工具類庫(kù),通過(guò)靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,本文主要介紹了使用Hutool工具實(shí)現(xiàn)驗(yàn)證碼生成和excel文件的導(dǎo)入、導(dǎo)出,需要的朋友可參考一下2021-11-11ThreadLocal簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了ThreadLocal簡(jiǎn)介的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Java設(shè)計(jì)模式之單態(tài)模式(Singleton模式)介紹
這篇文章主要介紹了Java設(shè)計(jì)模式之單態(tài)模式(Singleton模式)介紹,本文講解了如何使用單例模式、使用單例模式注意事項(xiàng)等內(nèi)容,需要的朋友可以參考下2015-03-03Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析
這篇文章主要介紹了Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析,簡(jiǎn)單工廠模式提供一個(gè)創(chuàng)建對(duì)象實(shí)例的功能,而無(wú)須關(guān)心其具體實(shí)現(xiàn),被創(chuàng)建實(shí)例的類型可以是接口、抽象類,也可以是具體的類,需要的朋友可以參考下2023-11-11Java如何判斷一個(gè)空對(duì)象的常見(jiàn)方法
在Java中判斷對(duì)象是否為空是一項(xiàng)重要的編程技巧,可以有效防止空指針異常的發(fā)生,下面這篇文章主要給大家介紹了關(guān)于利用Java如何判斷一個(gè)空對(duì)象的相關(guān)資料,需要的朋友可以參考下2024-01-01Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作
這篇文章主要介紹了Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11關(guān)于Java中byte[]?和?String互相轉(zhuǎn)換問(wèn)題
這篇文章主要介紹了Java中byte[]?和?String互相轉(zhuǎn)換問(wèn)題,通過(guò)用例給大家介紹了通過(guò)String類將String轉(zhuǎn)換成byte[]或者byte[]轉(zhuǎn)換成String,具體實(shí)例代碼跟隨小編一起看看吧2022-01-01