`
gzcj
  • 浏览: 291391 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

dwr例子

阅读更多

应该是半原创吧,自己改了点,然后又调试了一下。

一、web.xml的修改
首先要使用dwr,需要修改web.xml,要在web.xml里加入如下配置

<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>

 
其中的<servlet-mapping>不论是什么应用中要加入dwr都是使用<url-pattern>/dwr/*</url-pattern>这个值。
二、配置dwr.xml
要使用dwr还要配置dwr.xml,其配置项比较多,如下所示:

<dwr>
        <allow>
                <create creator="new" javascript="Demo">
                        <param name="class" value="dwrtest.Demo" />
                </create>
                <create creator="struts" javascript="testFrm">      
                  <param name="formBean" value="testActionForm"/> 
                </create> 
               <create creator="new" javascript="inputtest">
                 <param name="class" value="dwrtest.inputTest"/>
               </create>
           <convert converter="bean" match="dwrtest.UserBean"/>
        </allow>
</dwr>

 
其中,creator表示由什么方式来生成对象,可以是struts,也可以是spring。
javascript表示在客户端生成的js的文件名,也是在js脚本里所使用的对象名称。
具体的参数解释,以后补充。
三、在指定的包里写java类文件

package dwrtest;

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

public class inputTest {
    private List names = new ArrayList();
    
    public inputTest(){
        names.add("abe");
        names.add("abeo");
        names.add("a王");
        names.add("ahner");
        names.add("javap");
        names.add("marcus");
        names.add("北沟");
        names.add("marge");
        names.add("tianjing");
        names.add("北京");
        names.add("上海");
    }
    
    public List getNames(String name){
        NameService service = NameService.getInstance(names);
        List matching = service.findNames(name);
        return matching;
        
    }
}

 

四、在jsp中调用dwr

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type='text/javascript' src='/dwr/dwr/engine.js'> </script>
<script type='text/javascript' src='/dwr/dwr/util.js'> </script>
<script type='text/javascript' src='/dwr/dwr/interface/inputtest.js'> </script>
<style type="text/css">
.mouseOut {
background: #708090;
color: #FFFAFA;
}
.mouseOver {
background: #FFFAFA;
color: #000000;
}
</style>
<script type="text/javascript">
/*var xmlHttp;
var completeDiv;
var inputField;
var nameTable;
var nameTableBody;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function findNames() {
initVars();
if (inputField.value.length > 0) {
createXMLHttpRequest();
var url = "/testajax/AutoCompleteServlet";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = callback;
xmlHttp.send("names=" +inputField.value );
} else {
clearNames();
}
}
*/

function findNames() {
initVars();
if (inputField.value.length > 0) {
inputtest.getNames(inputField.value,setNames);
}
else
{
clearNames();
}
}
function initVars() {
inputField = document.getElementById("names");
nameTable = document.getElementById("name_table");
completeDiv = document.getElementById("popup");
nameTableBody = document.getElementById("name_table_body");
}

/*
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
setNames(xmlHttp.responseXML.getElementsByTagName("name"));
} else if (xmlHttp.status == 204){
clearNames();
}
}
}*/

function setNames(the_names) {
 clearNames();
 var size = the_names.length;
 setOffsets();
 var row, cell, txtNode;
 for (var i = 0; i < size; i++) {
  var nextNode = the_names[i];
  row = document.createElement("tr");
  cell = document.createElement("td");
  cell.onmouseout = function() {this.className='mouseOver';};
  cell.onmouseover = function() {this.className='mouseOut';};
  cell.setAttribute("bgcolor", "#FFFAFA");
  cell.setAttribute("border", "0");
  cell.onclick = function() { populateName(this); } ;
  txtNode = document.createTextNode(nextNode);
  cell.appendChild(txtNode);
  row.appendChild(cell);
  nameTableBody.appendChild(row);
 }
}

function setOffsets() {
var end = inputField.offsetWidth;
var left = calculateOffsetLeft(inputField);
var top = calculateOffsetTop(inputField) + inputField.offsetHeight;
completeDiv.style.border = "black 1px solid";
completeDiv.style.left = left + "px";
completeDiv.style.top = top + "px";
nameTable.style.width = end + "px";
}

function calculateOffsetLeft(field) {
return calculateOffset(field, "offsetLeft");
}

function calculateOffsetTop(field) {
return calculateOffset(field, "offsetTop");
}

function calculateOffset(field, attr) {
var offset = 0;
while(field) {
offset += field[attr];
field = field.offsetParent;
}
return offset;
}

function populateName(cell) {
inputField.value = cell.firstChild.nodeValue;
clearNames();
}

function clearNames() {
var ind = nameTableBody.childNodes.length;
for (var i = ind - 1; i >= 0 ; i--) {
nameTableBody.removeChild(nameTableBody.childNodes[i]);
}
completeDiv.style.border = "none";
}
</script>


</head>
<body>
Names:
<input type="text" size="20" id="names" onkeyup="findNames();"
        style="height:20;" />

<div style="position:absolute;" id="popup">
<table id="name_table" bgcolor="#FFFAFA" border="0" cellspacing="0"
        cellpadding="0" />
        <tbody id="name_table_body"></tbody>
</table>
</div>
OK
</body>
</html>

 
其中的黑体字所表示的js的名称与dwr.xml配置的是一致的。在调用的时候所用的名称也是他,如文中的黑体字所示。
在findNames里调用了由dwr生成的inputtest.getNames(inputField.value,setNames);其中,setNames是返回结果后
的处理函数。本jsp中还包含了传统的ajax的调用,注释部分就是传统的ajax的调用方式。
五、部分参数解释
dwr.xml中加入struts的設定,其中formBean的參數的value值,會對應到struts-config.xml中<form-beans>的設定

分享到:
评论

相关推荐

    dwr 例子

    在这个名为“dwr例子”的压缩包中,包含了一个名为“dwrdemo1”的示例项目。这个项目可能是一个简单的DWR应用,用于展示如何配置和使用DWR框架。下面,我们将详细讨论DWR的关键概念和使用方法。 1. **DWR配置**: ...

    DWR例子(完整调试版)

    这个"**DWR例子(完整调试版)**"可能是一个包含所有必要组件和配置的示例项目,用于帮助开发者理解和实践DWR的功能和用法。 在深入讲解DWR之前,我们先来了解一下什么是Web Remoting。Web Remoting是通过网络进行...

    dwr例子注册模块

    这个“dwr例子注册模块”是一个基于DWR技术构建的用户注册功能模块,使用了MySQL作为数据库,并且在开发环境中使用了MyEclipse5.5。 首先,DWR的核心概念是远程方法调用(Remote Method Invocation),它通过创建一...

    ajax框架dwr例子.rar

    这个"ajax框架dwr例子.rar"是一个针对初学者的教程资源,旨在帮助理解如何在实际项目中使用DWR进行Ajax开发。 DWR的核心功能在于提供了一个简单的方法来调用服务器端的Java方法,并将结果直接返回到客户端的...

    DWR例子

    在本例子中,“DWR例子”将向我们展示如何配置和使用DWR来实现这一功能。 首先,要使用DWR,我们需要在项目中添加DWR库。这通常涉及将DWR的JAR文件添加到项目的类路径中,并在Web应用的WEB-INF目录下创建一个名为...

    dwr例子 eclipse 可用

    在这个“dwr例子 eclipse 可用”的压缩包中,你可能会找到一个精心整理的DWR学习资源,包括如何在Eclipse环境下配置和使用DWR的实例。 DWR的主要功能包括: 1. **反向Ajax**:DWR允许服务器端代码直接调用客户端的...

    最简单的dwr 例子

    这个“最简单的dwr例子”可能是一个入门教程,帮助开发者理解如何使用DWR来创建异步、动态的Web应用程序。 DWR的核心功能在于提供了一个桥梁,使得JavaScript可以调用服务器端的Java方法,就像它们是本地函数一样,...

    一个DWR例子,直接导入eclipse可运行

    这个"一个DWR例子,直接导入eclipse可运行"的压缩包提供了一个实战性的教程,帮助开发者了解并实践DWR的基本用法。 DWR的核心功能在于创建一种透明的远程调用机制,使得JavaScript可以像操作本地对象一样调用服务器...

    第一個DWR例子源程序

    在本"第一个DWR例子源程序"中,我们将深入探讨DWR的基础概念、工作原理以及如何通过实例来实现一个简单的DWR应用。 首先,DWR的核心功能在于提供了一个桥梁,使得JavaScript可以直接调用服务器端的Java方法,而无需...

    ajax框架dwr例子

    在"ajax框架dwr例子"中,我们看到的是一个展示如何在Eclipse环境中使用DWR的简单示例。Eclipse是一款广泛使用的Java集成开发环境,对于开发基于DWR的应用提供了良好的支持。 首先,我们需要理解DWR的核心概念: 1. ...

    一个简单DWR例子,实现前后台不刷新页面交互

    在这个"一个简单DWR例子"中,我们可以预期包含以下组成部分: 1. **DWR配置**:项目中应有一个DWR配置文件(通常为`dwr.xml`),用于定义允许前端访问的Java类和方法。例如,可能有一个`UserService`类,其中包含...

    dwr例子演示级联菜单

    这个例子“dwr例子演示级联菜单”旨在帮助我们理解如何使用DWR来创建动态的、交互式的级联下拉菜单。级联菜单常用于Web应用程序中,例如在选择国家时自动更新相应的省份列表。 首先,让我们了解一下DWR的基本工作...

    一个简单的dwr例子dwrTest

    在这个"一个简单的dwr例子dwrTest"中,我们将会探讨DWR的基础用法以及如何在一个MyEclipse环境中设置和运行这个入门实例。 首先,DWR的主要功能是提供AJAX(异步JavaScript和XML)的支持,使得Web应用能够无需刷新...

    简单的ext+dwr例子

    标题"简单的EXT+DWR例子"暗示我们将探讨如何将EXT与DWR集成,创建一个简单的Web应用。这个例子可能是为了展示如何利用EXT的组件和DWR的远程调用来创建一个可直接部署并运行的应用。 首先,EXT的主要组件包括表格、...

    调用带JavaBean参数方法的DWR例子

    在“调用带JavaBean参数方法的DWR例子”中,我们将深入探讨如何使用DWR来调用包含JavaBean作为参数的方法。 首先,我们需要理解DWR的基本工作原理。DWR通过创建一个JavaScript接口,该接口映射到服务器上的Java类和...

    dwr简单例子

    通过学习这个简单的DWR例子,你可以了解到如何在实际项目中集成DWR,以及如何利用它来构建动态、交互性强的Web应用。这将有助于提升你的Web开发技能,尤其是对于那些希望增强前端和后端交互能力的开发者来说。

    Dwr例子带注释

    这个"TestDwr"压缩包文件提供的例子是一个简单的DWR应用示例,适合初学者理解和学习。 1. **DWR基本概念**: - DWR的核心组件包括`DWR Engine`、`Reverse AJAX`和`JavaBeans`。 - `DWR Engine`是DWR的核心,它...

    ajax dwr例子

    在这个"ajax dwr例子"中,我们可以探讨DWR如何简化Ajax开发以及其主要功能。 1. **DWR的基本概念**:DWR的核心思想是通过动态生成JavaScript,使得服务器端的方法可以直接在客户端调用,仿佛它们是本地JavaScript...

    经典DWR例子

    在"经典DWR例子"中,我们看到的是一个利用DWR来实现的Web端游戏,这个游戏展示了Java后端与JavaScript前端之间的交互,使得用户可以体验到更加流畅和动态的网页应用。 DWR的核心功能在于它的远程方法调用(Remote ...

    DWR例子代码

    这个"DWR例子代码"压缩包很可能包含了一些示例代码,用于展示如何在实际项目中有效利用DWR技术。下面将详细解释DWR的核心概念和其在Web开发中的应用。 DWR的主要功能是实现JavaScript与Java后端之间的无缝通信,这...

Global site tag (gtag.js) - Google Analytics