1、web.xml設置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2、client端將 setActiveReverseAjax設為true
dwr.engine.setActiveReverseAjax(true);
使用Reverse AJAX,client端就不用指定call back function,當執行server端的method時,會自動調用client端javascript來執行。
3、Server端通過ScriptSession,找到對到的client端JS方法
//取得當前執行頁面
WebContext wctx = WebContextFactory.get();
String currentPage = wctx.getCurrentPage();
//取得目前執行中的ScriptSession
ScriptSession scriptSession = wctx.getScriptSession();
//或是取得某page開啟中的client ScriptSession
Collection sessions = wctx.getScriptSessionsByPage("/ajax/client.jsp");
//根據ScriptSession來執行client端的 DWRUtil
Util utilThis = new Util(wctx.getScriptSession());
//調用WRUtil,在客戶端生成相應的腳本,實現消息的輸出
utilAll.removeAllOptions("chatlog");
utilAll.addOptions("chatlog", messages, "text");
4、網上的范例
chat.jsp頁面,點擊發送按鈕,調用javascript的sendMessage()方法將消息發送出(注意這里沒有指定call back function。)。
function sendMessage() {
JavaChat.addMessage();
}
服務端JavaChat代碼,調用DWRUtil,在客戶端生成腳本,將消息輸出到頁面中。
//JavaChat.java
public void addMessage(String messsage){
Util utilAll = new Util(sessions);
utilAll.addScriptSessions(wctx.getScriptSessionsByPage("/chat.jsp"));
utilAll.removeAllOptions("chatlog");
utilAll.addOptions("chatlog", message, "text");
}
posted on 2008-01-04 12:37
josson 閱讀(1759)
評論(4) 編輯 收藏 所屬分類:
web開發