Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析三之后端反向調(diào)用前端
在前兩篇中我們已經(jīng)介紹了Dwr零配置文化化和前端調(diào)用后端的方法,想必大家應(yīng)該已經(jīng)會(huì)熟練掌握了,下來我們主要探討一下后端怎么反向調(diào)用前端的js方法;
就如前兩篇說到了用Dwr注冊(cè)了兩個(gè)Service組件,一個(gè)是remote,另外一個(gè)是頁面使用到的controller,這個(gè)remote是在頁面一加載進(jìn)來就會(huì)被調(diào)用的,這樣就使得會(huì)話和頁面ScriptSession建立了綁定的關(guān)系,方便我們后面使用它的scriptSessionId進(jìn)行頁面定向推送;
下面是建立會(huì)話和頁面ScriptSession的方法(頁面剛加載進(jìn)來的時(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);
下面是用來反向調(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來進(jìn)行反向定位推送的,而這個(gè)scriptSessionId是利用我們之前頁面剛加載進(jìn)來就建立好保存到的一個(gè)全局的Map對(duì)里面;
下來只要在你想要什么時(shí)候調(diào)用的時(shí)候使用注冊(cè)的這個(gè)Service bean就可以了,傳進(jìn)去的參數(shù)為HttpSession和你想調(diào)用的前端Js funciton name,同時(shí)注意一下當(dāng)前頁面存在這個(gè)Js function,而且一般是主頁面的Js里面的方法才能被訪問到,否則前端會(huì)提示該方法未定義的錯(cuò)誤;
以上就是關(guān)于Dwr的簡(jiǎn)單應(yīng)用,純屬第一次用,有什么不對(duì)的地方,請(qǐng)大家指正出來,感激不盡??!大神請(qǐng)飄過~~~~~;
- 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)文章
使用Java判定一個(gè)數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)
這篇文章主要給大家介紹了關(guān)于使用Java判定一個(gè)數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-09-09
Java編寫實(shí)現(xiàn)九宮格應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Java編寫實(shí)現(xiàn)九宮格應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Spring中@Autowired和@Resource注解相同點(diǎn)和不同點(diǎn)
這篇文章主要介紹了Spring中@Autowired和@Resource注解相同點(diǎn)和不同點(diǎn),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
使用Mybatis-plus清空表數(shù)據(jù)的操作方法
MyBatis 是一個(gè)基于 java 的持久層框架,它內(nèi)部封裝了 jdbc,極大提高了我們的開發(fā)效率,文中給大家介紹了MybatisPlus常用API-增刪改查功能,感興趣的朋友跟隨小編一起看看吧2022-11-11
SpringBoot3各種配置的優(yōu)先級(jí)對(duì)比小結(jié)
SpringBoot3提供了多種配置來源以滿足不同場(chǎng)景下的需求,本文詳細(xì)介紹了SpringBoot3中的配置優(yōu)先級(jí)對(duì)比小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Java實(shí)現(xiàn)Excel與HTML互轉(zhuǎn)
Excel是一種電子表格格式,而HTM則是一種用于創(chuàng)建網(wǎng)頁的標(biāo)記語言,雖然兩者在用途上存在差異,但有時(shí)我們需要將數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式,下面我們就來看看具體實(shí)現(xiàn)方法吧2025-01-01

