项目所需jar包 
commons-logging-1.1.1.jar 
dwr3.0.jar 

DwrModel.java 
package com.medbri.model; 

import org.directwebremoting.annotations.DataTransferObject; 
import org.directwebremoting.annotations.RemoteProperty; 

@DataTransferObject 
public class DwrModel { 
@RemoteProperty 
private String id; 
@RemoteProperty 
private String userName; 
@RemoteProperty 
private String passWrod; 

public String getId() { 
return id; 


public void setId(String id) { 
this.id = id; 


public String getUserName() { 
return userName; 


public void setUserName(String userName) { 
this.userName = userName; 


public String getPassWrod() { 
return passWrod; 


public void setPassWrod(String passWrod) { 
this.passWrod = passWrod; 




DwrAppp.java 

package com.medbri.service; 

import java.util.ArrayList; 
import java.util.List; 

import org.apache.log4j.Logger; 
import org.directwebremoting.annotations.RemoteMethod; 
import org.directwebremoting.annotations.RemoteProxy; 

import com.medbri.model.DwrModel; 

@RemoteProxy 
public class DwrAppp { 
Logger logger = Logger.getLogger(DwrAppp.class); 

@RemoteMethod 
public String getStri(String str) { 
logger.info("测试成功"); 
return str; 


@RemoteMethod 
public List<DwrModel> getDwrModelAll() { 
logger.info("集合测试成功"); 
List<DwrModel> models = new ArrayList<DwrModel>(); 
DwrModel model = new DwrModel(); 
model.setId("1"); 
model.setUserName("di"); 
model.setPassWrod("123456"); 
DwrModel model1 = new DwrModel(); 
model1.setId("2"); 
model1.setUserName("m"); 
model1.setPassWrod("123"); 
models.add(model); 
models.add(model1); 
return models; 


@RemoteMethod 
public DwrModel getDwrModel() { 
logger.info("对象测试成功"); 
DwrModel model = new DwrModel(); 
model.setId("1"); 
model.setUserName("dsi"); 
model.setPassWrod("123456"); 
return model; 




index.jsp 

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme() + "://" 
+ request.getServerName() + ":" + request.getServerPort() 
+ path + "/"; 
%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<base href="<%=basePath%>"> 

<title>My JSP 'index.jsp' starting page</title> 
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0"> 
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="This is my page"> 
<script type='text/javascript' src='/MedbriDwrApp/dwr/interface/DwrAppp.js'></script> 
<script type='text/javascript' src='/MedbriDwrApp/dwr/engine.js'></script> 
<script type='text/javascript' src='/MedbriDwrApp/dwr/util.js'></script> 
<script type="text/javascript"> 
function getAlluser() { 
DwrAppp.getDwrModelAll(proAlluserCallback); 


    function proAlluserCallback(data) { 
for (i = 0; i < data.length; i++) { 
alert("us:=" + data[i].userName + "\n" + "pw:=" + data[i].passWrod 
+ "\n userId:=" + data[i].id); 


function getStri() { 
var name = dwr.util.getValue("str")//获取id元素 
DwrAppp.getStri(name, getStrCallback); 


var getStrCallback = function(data) { 
//data是Java返回的结果 
alert(data); 
dwr.util.setValue("strcall", data);//把返回结果赋值给元素 


function getDwrModel(){ 
DwrAppp.getDwrModel(getDwrModelCallback); 

function getDwrModelCallback(data){ 
  alert("us:=" + data.userName + "\n" + "pw:=" + data.passWrod 
+ "\n userId:=" + data.id); 

</script> 
</head> 
<body> 
测试带参数的方法调用 
<input type="text" name="str" value="" onblur="getStri()"> 
<input type="text" name="strcall" value=""> 
<br> 
测试获取一个集合 
<input type="button" name="getall" value="获取一个集合" 
onclick="getAlluser()"><br> 
测试获取一个对象 
<input type="button" name="getmodel" value="获取一个对象" 
onclick="getDwrModel()"> 
<br> 
</body> 
</html> 

web.xml 

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<servlet> 
<description>dwr-invoker</description> 
<servlet-name>dwr-invoker</servlet-name> 
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> 
<param-value> 
<!--此处是关键用了dwr的注解如果没到这里部署dwr无法正常使用--> 
<init-param> 
<param-name>classes</param-name> 

com.medbri.service.DwrAppp,com.medbri.model.DwrModel</param-value> 
</init-param> 
<init-param> 
<param-name>debug</param-name> 
<param-value>true</param-value> 
</init-param> 
</servlet> 
<servlet-mapping> 
<servlet-name>dwr-invoker</servlet-name> 
<url-pattern>/dwr/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
</web-app>