去官网下载dwr.jar包
http://directwebremoting.org/dwr/downloads/index.html
第一步、配置dwr servlet
<!-- 配置dwrserlvet -->
<servlet>
<servlet-name>dwrinvoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- 自动生成测试页面(写上下列代码,项目启动后浏览器上输入这个url:http://ip:端口/项目名/dwr/index.html
页面上有个类的超链接点击后相信你会明白下一步该这么做) -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<!-- 配置映射关系 -->
<servlet-mapping>
<servlet-name>dwrinvoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
第二步、编写类
package com.chni.dwr;
public class FirstDWR {
/**
* 调用js测试方法
* @param uname 传过来的用户名
* @return
*/
public String getTime(String uname){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return uname+"你好:服务器上的时间是:"+System.currentTimeMillis();
}
}
第三步、在WEB-INF下配置新建一个dwr.xml 文件
<!-- dwr.xml 配置文件 -->
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<!-- javascript调用类方法使用的名字 creator 创建类的方式 scope 存储范围
page/request/session/application/script
creator:职责实例化:方式 new 、none、spring 跟多详细信息建议网上吸收
-->
<create javascript="FirstDWR" creator="new" scope="request" >
<!-- 对应类 -->
<param name="class" value="com.chni.dwr.FirstDWR"/>
<!--
<exclude method="getTime"/>禁止页面上调用那些方法
<include method=""/>规定页面上只能调用那些方法
<filter class=""></filter>
<auth role="" method=""/>许你指定一个J2EE的角色作为将来的访问控制检查
-->
</create>
<!-- bean的转换器,可以将com.pojos包下的所有类转换成Bean对象 可以模糊匹配(比如说com.chni.* 配置了com.chni包下所有类) -->
<!--
<convert match="实体类" converter=""></convert>
-->
</allow>
</dwr>
第四步、在页面上引用(运行起来你就可以看到效果了)
<title>简单的dwr实现</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- FirstDWR.js是DWR引擎自动生成的脚本 -->
<script type=‘text/javascript‘ src=‘/dwr/dwr/interface/FirstDWR.js‘></script>
<!-- 这个文件是DWR的核心库,只要需要使用DWR就不能缺少该文件-->
<script type=‘text/javascript‘ src=‘/dwr/dwr/engine.js‘></script>
<!-- dwr.util.js 是js的工具包 -->
<script type=‘text/javascript‘ src=‘/dwr/dwr/util.js‘></script>
<script type="text/javascript">
//响应页面事件 调用java方法
function javaMethod(){
//获取页面文本框的值
var varStr=document.getElementById("name").value;
/*
还可以使用dwr中的组件名获取文本框的值
var varStr=dwr.util.getValue("userName");
*/
/*调用服务器对应方法 第一个参数java需要传入的参数,
第二个参数处理完之后返回来的值
相当于sampleXMLHttpReq.onreadystatechange = processResponse;,
*/
//页面加载
document.getElementById("none").style.display="inline";
FirstDWR.getTime(varStr,function(data){
if(data!=""){
document.getElementById("none").style.display="none";
}
document.getElementById("vardata").value=data;
});
}
//清除
function clare(){
document.getElementById("name").value=‘‘;
document.getElementById("vardata").value=‘‘;
}
</script>
</head>
<body>
<pre>
你的用户名:
<input type="text" name="userName" id="name" onchange="javaMethod()"/>
<br>服务器回应:
<textarea cols="50" rows="5" name="serverReplay" id="vardata"></textarea>
<input type="button" value="清 除" onclick="clare()">
</pre>
<div align="center" id="none" style="display: none"><img src="images/load.gif"/></div>
</body>
</html>
原文:http://blog.csdn.net/blogluoqi/article/details/19158493