需要准备的东西
1、下载dwr.jar,放入WBE-INF 》 lib中
2、创建dwr.xml,如下,放入WBE-INF中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<create creator="new" javascript="Demo" >
<param name="class" value="cn.cntomorrow.mytest.DwrTest"/>
</create>
</allow>
</dwr>
3、在web.xml中填入以下代码
<!-- dwr信息推送 -->
<!-- 配置DWR的核心Servlet -->
<servlet>
<!-- 指定DWR核心Servlet的名字 -->
<servlet-name>dwr</servlet-name>
<servlet-class>
<!-- 指定DWR核心Servlet的实现类 -->
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<!-- 指定DWR核心Servlet处于调试状态 -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- 设置使用反向Ajax技术 -->
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!--长连接只保持时间 -->
<param-name>maxWaitAfterWrite</param-name>
<param-value>66666660</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 指定核心Servlet的URL映射 -->
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
4、编写测试类-Java
public class DwrTest {
public void getContent(final String message) {
System.out.println("有客户请求,消息为:" + message);
Browser.withCurrentPage(new Runnable() {// 启用监听客户端当前页线程
public void run() {// 把数据添加到客户端调用的方法中
//将信息传至页面-----getXin为页面所写函数--后台直接调用前台函数执行
ScriptSessions.addFunctionCall("getXin",message);
}
});
}
}
5、页面中填写要用的js文件路径--这写js文件jar自带的
<script type='text/javascript' src="${ctx }/dwr/engine.js"></script>
<script type='text/javascript' src="${ctx }/dwr/util.js"></script>
<script type='text/javascript' src="${ctx }/dwr/interface/Demo.js"></script>
6、在jsp的body中加载代码--dwr.engine.setActiveReverseAjax(true);---反向ajxa
<body id="bigBody" onload="dwr.engine.setActiveReverseAjax(true);">
7、编写测试函数
//发送信息函数
function fsfun(){
var val = $("#info").val();
setInfo(val);
}
//获取要发送的值
function setInfo(str){
Demo.getContent(str);
}
//这是dwr的一个回调函数,data参数即java方法getHello(String name)的返回值
function getXin(messages){
aa(messages);
<%-- $("#showInfo").text(messages);--%>
<%-- var html = "<div>"+messages+"</div>";--%>
<%-- dwr.util.setValue("showInfo", html, { escapeHtml:false }); --%>
}
//测试用函数
function aa(messages){
alert(messages);
}
$(function(){
//屏蔽掉因刷新页面而弹出的alert框。
dwr.engine._errorHandler = function(message, ex) {dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);};
$("#fs").click(function(){
fsfun();
});
});