以一个例子说明DWR2在WSAD(jdk1.4)上使用的方法
1.和在eclipse上一样,首先要导入jar包,这里需要两个:dwr.jar, commons-logging-1.0.4.jar
放到项目webApplication/WEB-INF/lib目录下。注意:这里的dwr是经过我们处理的哦,删掉了里面的org.directwebremoting.annotations.AnnotationsConfigurator这个类,因为jdk1.4不支持。
2.同样的也需要配置文件,将dwr2要配置的servlet配置到webApplication/WEB-INF目录下的web.xml里面,注意<servlet>和<servlet-mapping>这里要分开,可能工具版本太低了。配置如下:
<!—红色部分为dwr针对jdk1.4的配置 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>classes</param-name>
<param-value> java.lang.Object</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3.将源代码放入项目里,这里我是放入了PMS_CJ002_Task文件夹下的test包下,
DwrBo.java
package test;
import java.util.ArrayList;
import java.util.List;
public class DwrBO {
public String sayHello(String username)
{
// 为了前台显示loading界面,模拟任务占用较长时间
try {
Thread.sleep(3000);
} catch (Exception ef) {
}
System.out.println("客户端发送的请求是: " + username);
return username + "说:你好,世界!";
}
public List getList(String str)
{
// 为了前台显示loading界面,模拟任务占用较长时间
try {
Thread.sleep(3000);
} catch (Exception ef) {
}
System.out.println(str);
List list = new ArrayList();
InputRecord bean1 = new InputRecord();
bean1.setUsername("yuan");
bean1.setPassword("123");
InputRecord bean2 = new InputRecord();
bean2.setUsername("dong");
bean2.setPassword("741");
list.add(bean1);
list.add(bean2);
// list.add("test");
return list;
}
}
InputRecord.java
package test;
public class InputRecord {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.然后配置dwr.xml文件,这个文件和web.xml文件平级,注意:这里写类的路径时不要把文件夹名字写上了,直接包名.类名。简单类型不需要<convert>配置内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="dwrbo">
<param name="class" value="test.DwrBO" />
</create>
<convert converter="bean" match="test.InputRecord">
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>
5.现在就是jsp页面了,这里我直接放在了webApplication目录下。Jsp里取内容都是固定写法,首先导入js,红色的和dwr配置文件有关
<script src="dwr/interface/dwrbo.js"></script>
<script src="dwr/engine.js" /></script>
<script src="dwr/util.js" /></script>
然后就是调用了,全部jsp文件testDWR.jsp如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<HTML>
<HEAD>
<%@ page
language="java"
contentType="text/html; charset=GB18030"
%>
<META http-equiv="Content-Type" content="text/html; charset=GB18030">
<META name="GENERATOR" content="IBM WebSphere Studio">
<TITLE></TITLE>
</HEAD>
<script src="dwr/interface/dwrbo.js"></script>
<script src="dwr/engine.js" /></script>
<script src="dwr/util.js" /></script>
<!-- String -->
<script type="text/javascript">
/**响应界面事件,调用java对象的方法*/
function updateResult() {
dwr.util.useLoadingMessage("正在处理,请秒候. . .")
//使用dwr工具类得到userName组件内的值
var name = dwr.util.getValue("userName");
//调用服务器上的对象方法,并设定回调函数
dwrbo.sayHello(name,callBack);
}
//定义响应调用结果的回调函数
var callBack=function(data) {
var srcData=dwr.util.getValue("serverReplay");
dwr.util.setValue("serverReplay", data+"/r/n"+srcData);
};
//function testtt(theTab){
//window.alert("你点击了!"+theTab.getAttribute("tabId"));
//}
</script>
<!-- list -->
<script type="text/javascript">
function callTest(){
// alert("ok");
dwr.util.useLoadingMessage("正在处理,请秒候. . .")
//调用服务器上的对象方法,并设定回调函数
dwrbo.getList("传到服务端的参数",callBackForTest);
}
function callBackForTest(data){
for(var i=0;i<data.length;i++){
//alert(data[i].username);
var show = "username="+data[i].username+",password="+data[i].password;
// alert(show);
// document.getElementById("dd").innerHTML("<span>123</span>");
document.getElementById("result"+i).value=show;
document.getElementById("result").style.display='block';
//DWRUtil.setValue("version2", data[i].username);
}
}
</script>
<BODY>
<li>DWR传String
<pre>
<br>你的用户名:<input type="text" name="userName" onchange="updateResult();" />
<br>服务器回应:<textarea cols="50" rows="5" name="serverReplay" id="aa"></textarea>
<input type="button" value="清 除"
onclick="javascript:document.getElementById('aa').value='';">
</pre>
<hr>
<li>DWR传装着对象的list
<input type="button" value="显示列表" onclick="callTest();"><br>
<div id="dd"> </div>
<div id="result">
<input id="result0" size="50"/><br>
<input id="result1" size="50"/><br>
<input id="result2" size="50"/><br>
<input id="result3" size="50"/><br>
</div>
</BODY>
</HTML>
6.构建项目,启动服务器,地址栏输入http://localhost:8085/CPCWeb/testDWR.jsp即可操作。