1、web.xml設(shè)置
<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設(shè)為true
dwr.engine.setActiveReverseAjax(true);
使用Reverse AJAX,client端就不用指定call back function,當(dāng)執(zhí)行server端的method時,會自動調(diào)用client端javascript來執(zhí)行。
3、Server端通過ScriptSession,找到對到的client端JS方法
//取得當(dāng)前執(zhí)行頁面
WebContext wctx = WebContextFactory.get();
String currentPage = wctx.getCurrentPage();
//取得目前執(zhí)行中的ScriptSession
ScriptSession scriptSession = wctx.getScriptSession();
//或是取得某page開啟中的client ScriptSession
Collection sessions = wctx.getScriptSessionsByPage("/ajax/client.jsp");
//根據(jù)ScriptSession來執(zhí)行client端的 DWRUtil
Util utilThis = new Util(wctx.getScriptSession());
//調(diào)用WRUtil,在客戶端生成相應(yīng)的腳本,實現(xiàn)消息的輸出
utilAll.removeAllOptions("chatlog");
utilAll.addOptions("chatlog", messages, "text");
4、網(wǎng)上的范例
chat.jsp頁面,點擊發(fā)送按鈕,調(diào)用javascript的sendMessage()方法將消息發(fā)送出(注意這里沒有指定call back function。)。
function sendMessage() {
JavaChat.addMessage();
}
服務(wù)端JavaChat代碼,調(diào)用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開發(fā)