这是个好东西,看起来有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程序就建立好了,其他的继续学习中,这个保留