这是个好东西,看起来有webservice的味道,而且对多个浏览器支持
使用的是2。0 ,这几天因为地震而损坏的海底电缆看来还不是很好,下载了老半天才下了个jar。
首先 在web.xml 中配置 dwr
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<description>Direct Web Remoter Servlet</description>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>config-common</param-name><!-- 这里的定义xml文件的配置可以写多个,只要以config开始 -->
<param-value>WEB-INF/dwr.xml</param-value>
</init-param>
<init-param>
<param-name>config-user</param-name>
<param-value>WEB-INF/dwr-user.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value><!-- 调试模式,开启后,dwr为每一个建立的对象都建立一个测试页面,正式使用时关闭 -->
</init-param>
<init-param>
<param-name>logLevel</param-name>
<param-value>DEBUG</param-value> <!-- 可用的值有:FATAL, ERROR, WARN (默认), INFO 和 DEBUG。 -->
</init-param>
<init-param>
<param-name>scriptCompressed</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping> 这里还不是很明白,测试了几回,发现他相当与建立了一个虚拟目录,/dwr
(在debug=true时候)在这个目录里面生成了一些 测试你建立的class对象的一些方法的调用。以及那些建立成功后要被调用的js的引用地址,都在这个目录下, 开始的时候写成这样
<url-pattern>/*</url-pattern>,打开我建立的地址,他始终出现的是 调试界面,嘿嘿。
然后建立 dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="Test">
<param name="class" value="com.jxfsuda.action.StringTest"/>
</create>
</allow>
</dwr>
最简单的配置就算好了,里面还有什么convert ,因为这里全部使用基本数据类型,所以不需要配置,当你的对象中要传递 自定义类型时候,才需要
建立类 StringTest
package com.jxfsuda.action;
public class StringTest {
public String sayString(String str) {
return "hello jxfsuda ,you input the String is :" + str;
}
/** *//**
* 加
* */
public int add(int a ,int b){
return a+b;
}
/** *//**
* 减
* */
public int abate(int a,int b){
return a>b?a-b:b-a;
}
}
很简单的类,一个返回 字符传 + 你传递的参数 ,一个是加法计算,一个是减法计算
页面 index.jsp
<script type='text/javascript' src='/dwr/interface/Test.js'></script>
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/dwr/util.js'></script>
//注意上面引用的地址,是和你在web.xml中定义的mapping里面的地址对应,实在不知道,可以看他的调试文件,里面帮你写好了地址了
<script language="javascript">
function update() {
var name = dwr.util.getValue("inputStr");
try{
Test.sayString(name, function(data) {
dwr.util.setValue("serverReply", data);
});
}catch(e){
alert(e.message+e);
}
}
function add(){
var a=dwr.util.getValue("inputa");
var b=dwr.util.getValue("inputb");
try{
Test.add(a,b,function(data){
dwr.util.setValue("intReply",data);
});
}catch(e){
}
}
</script>
</head>
<body onload='dwr.util.useLoadingMessage()'>
<p>Name: <input type="text" id="inputStr" /> <input value="Send"
type="button" onclick="update()" /> <br />
Reply: <span id="serverReply"></span></p>
<input type="text" id="inputa" />
<input type="text" id="inputb" />
<input value="Send" type="button" onclick="add()" />
<br />
Reply:
<span id="intReply"></span>这样,一个简单应用的dwr程序就建立好了,其他的继续学习中,这个保留