dwr 简易实例

本文介绍如何通过 Direct Web Remoting (DWR) 技术实现双向 AJAX 功能,包括配置 DWR Servlet、创建 Java 服务类及在前端页面集成 DWR 的步骤。

需要准备的东西

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();
				});
			});




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值