首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

DWR 3.0 純註解配置實戰(二):前端調用後端 Java 方法

     編輯:Java 相關知識

驗證 DWR 配置是否生效

啟動伺服器後,訪問 https://localhost:[port]/[webapp]/dwr/,若顯示已定義的 Service 名稱(如 remote),說明基礎配置成功。點擊 Service 名稱可查看所有暴露的方法,僅標註 @RemoteMethod 的方法可直接在頁面測試。

前端引入必要 JS 文件

<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/util.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/remote.js'></script>
  • engine.js:DWR 核心引擎,處理通訊協議。
  • util.js:DOM 操作工具輔助。
  • remote.js:DWR 自動生成的 JavaScript 代理,對應後端 remote Service。

前端直接調用後端方法

<script type="text/javascript">
$(function() {
    // 直接呼叫後端 remote.setEnableDwrUpdate()
    remote.setEnableDwrUpdate({
        callback: function(data) { console.log("伺服器回應:", data); },
        errorHandler: function(msg, ex) { console.error("呼叫失敗:", msg, ex); }
    });
});
</script>

關鍵點:Java 方法參數若為基本類型/String,JS 直接傳遞;若為複雜對象,DWR 會自動轉換為 JSON 物件,前端構建同結構 JSON 即可。

完整流程圖解

  1. 前端 JS 呼叫 remote.setEnableDwrUpdate()
  2. DWR 引擎序列化參數,發送 HTTP 請求到 /dwr/exec/remote.setEnableDwrUpdate
  3. 後端 DwrServlet 接收,反序列化,調用 SessionExpiredParam.setEnableDwrUpdate()
  4. 方法執行邏輯(如綁定 ScriptSession 實現反向 AJAX)
  5. 返回結果序列化為 JSON/JS,前端 callback 處理

常見問題排查

  • 404 錯誤:檢查 web.xml 或 Servlet 註冊映射是否為 /dwr/*。
  • 方法未暴露:確認方法標註 @RemoteMethod,類標註 @RemoteProxy。
  • 跨域問題:配置 crossDomainSessionSecurity="false" 或設置 CORS 標頭。
  • Session 丟失:確保 ScriptScope 設置正確(APPLICATION/SESSION/PAGE)。

下一步預告

下篇將介紹 反向 AJAX(Reverse AJAX):後端主動推送數據到前端,實現即時通知、長連接保活等進階場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved