| 技術 | 優點 | 缺點 |
|---|---|---|
| JSP/HTML | 部署容易、無客戶端安裝 | 跨瀏覽器行為難控制、互動性弱 |
| Swing/Applet | 豐富 UI、行為可控、分擔伺服器負載 | 需 JRE 與瀏覽器外掛、下載啟動慢、版本相容性問題 |
| DHTML | 開放免費、跨瀏覽器、輕量 | 瀏覽器差異大、需大量 Hack、維護複雜、彈性有限 |
需求:輕量瀏覽器部署 + 高互動控制 + 整合既有 J2EE 後端 → Macromedia Flash + Flash Remoting MX
// 載入 NetServices 庫
#include "NetServices.as"
// 設定 Gateway URL (web.xml 中 servlet-mapping 為 /gateway)
NetServices.setDefaultGatewayUrl("https://localhost/mx/gateway");
// 建立連線
gatewayConnection = NetServices.createGatewayConnection();
// 綁定 Java 類別 com.tallan.data.providers.FlashDemo 為服務 tallanDataService
tallanDataService = gatewayConnection.getService("com.tallan.data.providers.FlashDemo", this);
// 呼叫遠端方法
tallanDataService.getReportData();
遠端方法回傳值觸發同名 _Result 函數:
function getReportData_Result(result) {
trace(result); // 除錯輸出
// 進一步處理 result (XML Document, Array, 基本型別...)
}
public class FlashDemo {
public Document getReportData() {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("graph");
Element point1 = doc.createElement("point");
point1.setAttribute("xvalue", "February");
point1.setAttribute("yvalue", "20");
root.appendChild(point1);
doc.appendChild(root);
return doc; // 自動序列化為 AMF 傳回
}
}
function parseXML() {
nodes = reportXML.nodes; // 取得子節點陣列
for (j=0; j<nodes.length; j++) {
if (nodes[j].nodeName == "graph") {
childNodes = nodes[j].nodes;
for (k=0; k<childNodes.length; k++) {
if (childNodes[k].nodeName == "point") {
xAxisvalue.push(childNodes[k].attributes.xvalue);
yAxisvalue.push(childNodes[k].attributes.yvalue);
}
}
}
}
// 繪圖邏輯...
}

Flash Remoting 為 J2EE 開發者提供了「輕量部署 + 富互動 + 後端直連」的第三條路徑。結合 ActionScript 的 XML 處理能力與免費圖形庫,可快速構建高效能、視覺震撼的企業級 Web 應用,釋放伺服器資源,提升用戶體驗。