最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dwr3.0純注解(純Java Code配置)配置與應用淺析三之后端反向調(diào)用前端

 更新時間:2016年04月28日 10:08:31   投稿:wulei  
Dwr是為人所熟知的前端框架,其異步推送功能是為人所津津樂道的,下來主要研究一下它的這個功能是怎么應用的;

在前兩篇中我們已經(jīng)介紹了Dwr零配置文化化和前端調(diào)用后端的方法,想必大家應該已經(jīng)會熟練掌握了,下來我們主要探討一下后端怎么反向調(diào)用前端的js方法;

就如前兩篇說到了用Dwr注冊了兩個Service組件,一個是remote,另外一個是頁面使用到的controller,這個remote是在頁面一加載進來就會被調(diào)用的,這樣就使得會話和頁面ScriptSession建立了綁定的關系,方便我們后面使用它的scriptSessionId進行頁面定向推送;

下面是建立會話和頁面ScriptSession的方法(頁面剛加載進來的時候就會被調(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, "");
}});}}

這個Service是利用了scriptSessionId來進行反向定位推送的,而這個scriptSessionId是利用我們之前頁面剛加載進來就建立好保存到的一個全局的Map對里面;

下來只要在你想要什么時候調(diào)用的時候使用注冊的這個Service bean就可以了,傳進去的參數(shù)為HttpSession和你想調(diào)用的前端Js funciton name,同時注意一下當前頁面存在這個Js function,而且一般是主頁面的Js里面的方法才能被訪問到,否則前端會提示該方法未定義的錯誤;

以上就是關于Dwr的簡單應用,純屬第一次用,有什么不對的地方,請大家指正出來,感激不盡??!大神請飄過~~~~~;

相關文章

  • Java多線程之原子類解析

    Java多線程之原子類解析

    這篇文章主要介紹了Java多線程之原子類解析,Java原子類是一種多線程編程中常用的工具,用于實現(xiàn)線程安全的操作,它們提供了一種原子性操作的機制,確保多個線程同時訪問共享變量時的數(shù)據(jù)一致性,需要的朋友可以參考下
    2023-10-10
  • RabbitMQ消息有效期與死信的處理過程

    RabbitMQ消息有效期與死信的處理過程

    利用DLX,當消息在一個隊列中變成死信?(dead?message)?之后,它能被重新publish到另一個Exchange,這個Exchange就是DLX,本文重點給大家介紹RabbitMQ消息有效期與死信的相關知識,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • 使用Java判定一個數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)

    使用Java判定一個數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)

    這篇文章主要給大家介紹了關于使用Java判定一個數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友可以參考下
    2022-09-09
  • Java編寫實現(xiàn)九宮格應用

    Java編寫實現(xiàn)九宮格應用

    這篇文章主要為大家詳細介紹了Java編寫實現(xiàn)九宮格應用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Spring中@Autowired和@Resource注解相同點和不同點

    Spring中@Autowired和@Resource注解相同點和不同點

    這篇文章主要介紹了Spring中@Autowired和@Resource注解相同點和不同點,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 使用Mybatis-plus清空表數(shù)據(jù)的操作方法

    使用Mybatis-plus清空表數(shù)據(jù)的操作方法

    MyBatis 是一個基于 java 的持久層框架,它內(nèi)部封裝了 jdbc,極大提高了我們的開發(fā)效率,文中給大家介紹了MybatisPlus常用API-增刪改查功能,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • springboot如何獲取yml里面的屬性值

    springboot如何獲取yml里面的屬性值

    這篇文章主要介紹了springboot如何獲取yml里面的屬性值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot3各種配置的優(yōu)先級對比小結

    SpringBoot3各種配置的優(yōu)先級對比小結

    SpringBoot3提供了多種配置來源以滿足不同場景下的需求,本文詳細介紹了SpringBoot3中的配置優(yōu)先級對比小結,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • Java實現(xiàn)Excel與HTML互轉(zhuǎn)

    Java實現(xiàn)Excel與HTML互轉(zhuǎn)

    Excel是一種電子表格格式,而HTM則是一種用于創(chuàng)建網(wǎng)頁的標記語言,雖然兩者在用途上存在差異,但有時我們需要將數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式,下面我們就來看看具體實現(xiàn)方法吧
    2025-01-01
  • 關于Kill指令停掉Java程序的問題

    關于Kill指令停掉Java程序的問題

    這篇文章主要介紹了Kill指令停掉Java程序的思考,主要探究kill指令和java的關閉鉤子的問題,需要的朋友可以參考下
    2021-10-10

最新評論

花莲市| 佳木斯市| 香港 | 浦江县| 双城市| 曲松县| 双牌县| 禄劝| 田林县| 修文县| 台前县| 伊金霍洛旗| 镇坪县| 英超| 博兴县| 平乐县| 红桥区| 南丰县| 三台县| 永靖县| 平泉县| 永川市| 哈巴河县| 郧西县| 江永县| 永城市| 河源市| 景东| 江油市| 青阳县| 霍林郭勒市| 绥棱县| 新巴尔虎左旗| 宿松县| 凉城县| 百色市| 阳原县| 门源| 洛阳市| 河曲县| 磐石市|