`

DWR进阶Demo

    博客分类:
  • AJAX
阅读更多
两个要用的bean:

package com.bean;

public class Cat 
{
    private String name;
    public Cat(String name)
    {
        this.name = name;
    }
}


package com.bean;
public class Person
{
    private String name;
    private String age;
    /**
     * @param name
     * @param age
     */
    public Person(String name, String age)
    {
        super();
        this.name = name;
        this.age = age;
    }

    /**
     * @return the age
     */
    public String getAge()
    {
        return age;
    }

    /**
     * @param age the age to set
     */
    public void setAge(String age)
    {
        this.age = age;
    }

    public Person()
    {
    }

    public Person(String name)
    {
        this.name = name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getName()
    {
        return name;
    }

}


dwr java file:


package com.bean;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

public class HelloDwr
{
    public String hello(String name)
    {
        return name + ",您好!您已经开始了DWR的学习之旅,祝您学得开心...";
    }

    public String sendObj(Person p )
    {
        return p.getName() + ",您好!您已经学会了使用JavaBean参数...";
    }

    public Person getBean(String name)
    {
        return new Person("服务器端" + name);
    }

    public Cat getObject(String name)
    {
        return new Cat("服务器端" + name);
    }

    public List<Person> getPersonList()
    {
        List<Person> result = new ArrayList<Person>();
        result.add(new Person("集合aaaa"));
        result.add(new Person("集合bbbb"));
        result.add(new Person("集合cccc"));
        return result;
    }

    public Person[] getPersonArray()
    {
        Person[] result = new Person[3];
        result[0] = new Person("数组aaaa","22");
        result[1] = new Person("数组bbbb","33");
        result[2] = new Person("数组cccc","44");
        return result;
    }
    public Map<String, Person> getPersonMap()
    {
        Map<String, Person> result = new HashMap<String, Person>();
        result.put("first" , new Person("Map aaaa"));
        result.put("second" , new Person("Map bbb"));
        result.put("third" , new Person("Map cccc"));
        return result;
    }

    public String sendList(List<Person> pl)
    {
        String result = "";
        for (Person p : pl)
        {
            result += p.getName() + "<br>";
        }
        return result;
    }

    public String sendMap(Map<String , Person> pmap)
    {
        String result = "";
        for (String key : pmap.keySet())
        {
            result += "键" + key + " 其值为:" + pmap.get(key).getName() + "<br>";
        }
        return result;
    }
}



dwr.xml:

<?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="hello">
      		<param name="class" value="com.bean.HelloDwr"/>
      		
    	</create>
		<convert converter="bean" match="com.bean.Person"/>
		<convert converter="object" match="com.bean.Cat">
			<param name="force" value="true"/>
		</convert>
	</allow>
	<signatures>
	<![CDATA[
		import com.bean.HelloDwr;
		import com.bean.Person;
		import java.util.List;
		import java.util.Map;
	]]>
	</signatures>
</dwr>



web.xml:

<?xml version="1.0" encoding="GBK"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	
	
	<!--
		 the configuration of DWR 
	-->
	<servlet>
		<display-name>DWR Servlet</display-name>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<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>


hellodwr.js:

//--------------------发送简单字符串参数,返回普通字符串----------------------------
function sendMessage()
{
	var name = document.getElementById("name").value;
	hello.hello(name , cb)
}
function cb(data)
{
	document.getElementById("show").innerHTML = data;
}
//-------------------发送一个JavaBean对象作为参数,返回普通字符串-------------------
function sendObject()
{
	var nameValue = document.getElementById("name").value;
	hello.sendObj({name:nameValue} , cb);
}

//--------------------调用返回JavaBean方法----------------------
function getBean()
{
	var name = document.getElementById("name").value;
	hello.getBean(name , beanCb)
}
function beanCb(data)
{		
	document.getElementById("show").innerHTML = data.name + ",您好,您已经学会了使用JavaBean返回值";
}

//--------------------调用返回getObject方法----------------------
function getObject()
{
	var name = document.getElementById("name").value;
	hello.getObject(name , objCb)
}
function objCb(data)
{		
	document.getElementById("show").innerHTML = data.name + ",是从服务器返回的猫的名字";
}
//---------------调用返回集合的方法--------------------------
function getBeanList()
{
	hello.getPersonList(listCb);
}
function listCb(data)
{
	var result='';
	for (var i = 0 ; i < data.length ; i ++)
	{
		result += data[i].name + "<br>";
	}
	document.getElementById("show").innerHTML = result;
}
//---------------调用返回数组的方法-------------------------
function getBeanArray()
{  
	hello.getPersonArray(arrayCb);
}
function arrayCb(data)
{
	var result='';
	for (var i = 0 ; i < data.length ; i ++)
	{
		result += data[i].name +data[i].age+ "<br>";
	}
	document.getElementById("show").innerHTML = result;
}
//---------------调用返回数组的方法-------------------------
function getBeanMap()
{
	hello.getPersonMap(mapCb);
}
function mapCb(data)
{
	var result='';
	for (var key in data)
	{
		result += "键为" + key + ",其值为:" + data[key].name + "<br>";
	}
	document.getElementById("show").innerHTML = result;
}

//---------------调用发送集合的方法-------------------------
function sendBeanList()
{
	var args = [
	{name:"客户端aaa"},
	{name:"客户端bbb"},
	{name:"客户端ccc"}
	];
	hello.sendList(args , sendListCb);
}
function sendListCb(data)
{
	document.getElementById("show").innerHTML = data;
}

//---------------调用发送Map的方法-------------------------
function sendBeanMap()
{
	var args = {
	first:{name:"客户端aaa"},
	second:{name:"客户端bbb"},
	third:{name:"客户端ccc"}
	};
	hello.sendMap(args , sendMapCb);
}
function sendMapCb(data)
{
	document.getElementById("show").innerHTML = data;
}


index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>DWR入门</TITLE>
<script type='text/javascript'  src='<%=request.getContextPath()%>/dwr/interface/hello.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script>
<script type='text/javascript' src="<%=request.getContextPath()%>/dwr/util.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/hellodwr.js"></script>
</HEAD>
<BODY>
<h3>DWR入门</h3>
请输入您的名字<input id="name" name="name" type="text"/><br>
<input type="button" value="发送简单请求" onClick="sendMessage();"/>
<input type="button" value="发送对象参数" onClick="sendObject();"/>
<input type="button" value="返回JavaBean" onClick="getBean();"/><br>
<input type="button" value="返回Object" onClick="getObject();"/>
<input type="button" value="返回Bean集合" onClick="getBeanList();"/>
<input type="button" value="返回Bean数组" onClick="getBeanArray();"/><br>
<input type="button" value="返回Bean Map" onClick="getBeanMap();"/>
<input type="button" value="发送Bean集合" onClick="sendBeanList();"/>
<input type="button" value="发送Bean Map" onClick="sendBeanMap();"/><br>
<hr>
下面是服务器的回应:<br>
<div id= "show"></div>
</BODY>
</HTML>
分享到:
评论

相关推荐

    DWR实现DEMO

    DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...

    dwr_demo_test

    下面是对DWR及其在`dwr_demo_test`中的应用进行的详细解释。 1. **DWR的基本概念**: DWR的核心功能是提供一种安全、高效的机制,让JavaScript可以调用Java对象的方法。这涉及到几个关键组件: - **Reverse AJAX*...

    DWR-demo.rar

    这个"DWR-demo.rar"文件包含了一个DWR的示例项目,帮助我们了解如何在实际开发中使用DWR。 DWR的核心功能在于提供一种安全、高效的AJAX解决方案,使得JavaScript可以调用服务器端的方法,更新页面内容而无需刷新...

    dwr.demo dwr实例

    这个"**dwr.demo dwr实例**"很可能是用来展示如何在实际项目中集成和使用DWR的示例代码。在深入探讨之前,让我们先理解一下DWR的基本概念。 DWR的核心功能是提供了一个JavaScript API,使得JavaScript可以调用...

    dwr-demo.rar_DEMO_DWR DE_dwr Demo_list set map

    在这个"DWR Demo"中,我们将会探讨如何使用DWR框架来处理和展示常见的数据结构,如List、Set和Map。 首先,让我们深入了解DWR的核心功能。DWR允许Java方法直接被JavaScript调用,就像它们是本地函数一样,无需手动...

    DWR框架 DEMO

    在"DWR框架 DEMO"项目中,我们可以看到一个DWR的简单示例。`DWRDemo`可能包含以下组成部分: 1. **Java后端**:定义了一个或多个Java类,其中包含了可供客户端调用的方法。这些方法通常处理业务逻辑,比如数据库...

    DWR框架DEMO下载

    DWR框架DEMO的下载提供了实践理解和学习DWR功能的机会。 DWR的核心特性包括: 1. **异步通信**:DWR通过AJAX(Asynchronous JavaScript and XML)技术实现了浏览器与服务器间的无刷新通信。用户在页面上的操作可以...

    DWR框架学习demo

    **DWR(Direct Web Remoting)框架学习指南** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现客户端与服务器端之间直接通信的技术。它允许JavaScript在浏览器端直接调用Java方法,实现了真正的Ajax...

    dwr demo dwr简单使用

    在"Dwr demo - Dwr简单使用"这个项目中,你可以通过以下步骤了解和学习DWR的基本用法: 1. **环境准备**:首先确保你有Eclipse IDE,并且已经安装了Java Development Kit (JDK)。由于DWR是一个Java库,所以你需要一...

    一个Dwr的demo

    在你提供的资源"一个Dwr的demo"中,这是一个面向初学者的教学示例,旨在展示如何使用DWR来实现动态网页功能。这个Demo将帮助你理解DWR的基本工作原理,以及如何在实际项目中集成和使用它。下面我们将深入探讨DWR的...

    dwr+demo+helloworld

    在这个"Dwr+Demo+helloworld"示例中,我们将探讨如何利用DWR轻松实现JavaScript与Java之间的交互,创建一个简单的"Hello, World!"应用程序。 首先,我们需要了解DWR的基本概念。DWR的核心功能是提供一个代理层,...

    Dwr入门Demo

    这个"Dwr入门Demo"是为初学者准备的一个简单示例,旨在帮助理解DWR的基本概念和用法。 首先,让我们了解DWR的核心功能: 1. **反向AJAX(Reverse Ajax)**:DWR实现了服务器端Java方法与客户端JavaScript之间的...

    dwr和ajax使用demo

    【DWR(Direct Web Remoting)与Ajax技术详解】 DWR(Direct Web Remoting)是一种在Web应用程序中实现异步JavaScript和XML(Ajax)的方法,它简化了客户端和服务器之间的通信,使得动态更新网页变得更加简单。DWR...

    dwr3.x demo 实例 例子

    在这个"Dwr3.x demo 实例 例子"中,我们可以学习到以下几个关键知识点: 1. **反转Ajax**:DWR的核心特性之一就是反转Ajax,它将传统的请求-响应模式反转过来,使得服务器可以直接调用客户端的JavaScript方法,而...

    DWR入门demo

    通过深入学习和实践这个"DWR入门demo",你将能够掌握如何在Web应用中集成DWR,以及如何利用它来构建更互动、更动态的用户界面。同时,你也将了解到DWR在实际项目中的应用和优势,为进一步的RIA开发打下坚实基础。

    DWR 修正Demo版

    **DWR(Direct Web Remoting)修正Demo版** DWR是一种开源JavaScript库,它允许Web应用程序在客户端和服务器之间进行实时通信,无需刷新页面。DWR使得开发人员能够轻松地在浏览器中调用服务器端的Java方法,就像...

    dwr入门demo

    这个“dwr入门demo”是一个实例,可以帮助初学者理解并掌握DWR的基本用法。 DWR的核心功能在于它提供了一种方式,使得JavaScript可以直接调用服务器上的Java方法,就像调用本地函数一样,从而极大地增强了Web应用的...

    dwr-demo:dwr测试项目

    在"**dwr-demo**"项目中,我们可以通过以下几个关键知识点来理解DWR的工作原理和应用: 1. **配置DWR**: 在Java项目中集成DWR通常需要在`web.xml`文件中配置DWR的servlet,例如`DWRServlet`。配置包括设置映射路径...

    DWRDemo.rar_DEMO_dwr Demo

    DWRDemo.rar_DEMO_dwr Demo是一个关于DWR的实际应用示例,它可以帮助我们理解DWR的工作原理和如何在项目中集成DWR。 **1. DWR的基本概念** DWR的核心是远程方法调用(Remote Method Invocation, RMI),但它是在Web...

Global site tag (gtag.js) - Google Analytics