- 浏览: 291388 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
chenchangqun:
这段示例代码没有客户端 没法实验
Java NIO原理和使用 -
congjl2002:
误,整理好了在发phk070832 写道垃圾代码,一大推的编译 ...
snmp trap的接收(jdmk方式) -
phk070832:
垃圾代码,一大推的编译错误,整理好了在发表吧。
snmp trap的接收(jdmk方式) -
zhangcctao:
我也遇到线程池的内存溢出问题。。不知道是不是这个原因呀?
多线程中使用静态方法 -
新入职:
分享了,这个eclise版本有没有讲究?我的3.3的可以么
windows下安装android及eclipse配置
应该是半原创吧,自己改了点,然后又调试了一下。
一、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>的設定
发表评论
-
java阻塞队列学习(转帖)
2010-06-06 11:50 3482import java.util.concurrent.Arr ... -
httpclient链接关闭问题(转帖)
2010-03-11 22:09 2156HttpClient client = new HttpCli ... -
J2EE集群原理(转贴)
2010-03-09 19:57 1229J2EE集群原理 什么是集群呢?总的来说,集群包括两个概念: ... -
Spring 实现ibatis事务回滚
2010-03-05 20:34 3654网上发现这篇文章,转过来学习一下,好不好用还没有实践,需要自己 ... -
java 可变参数
2009-12-14 20:50 14155vararg的意思是变量参数,它是与Jav ... -
java中的string
2009-11-25 14:45 1332从javaeye的论坛里看到这 ... -
使用JDBC对BLOB和CLOB进行处理
2009-11-12 20:33 4872从网上看到这篇文章,转过来做为学习用 设有表:create ... -
避免或最小化 Servlet 中的同步
2009-09-24 21:02 983servlet 是多线程的。基于 servlet 的应用程序必 ... -
httpclient 使用小记
2009-09-03 21:05 3399最近学习apache的httpclient 在使用postm ... -
httpclient 学习笔记
2009-08-23 16:52 1552前阵子,学习了一下APACHE 的httpclient,感觉h ... -
log4j使用
2009-06-19 21:08 1560从网上看到得,发现写 ... -
java虚拟机的一些概念
2009-05-24 10:22 1351从网上看到这篇文章,感觉适合初学jvm,就转来作为以后学习参考 ... -
xmlbean 生成带包路径的jar
2009-05-23 23:12 3309因为使用xmlbean生成 ... -
多线程中使用静态方法
2009-05-14 19:54 6649终于把内存泄漏问题解决了,不是多线程访问静态函数的问题,事实证 ... -
java Annotation入门
2009-04-16 21:22 1263因为偶然的原因需要使用Annotation,所以从网上找了这篇 ... -
MINA2.0简单使用
2009-04-12 16:12 5156一直知道MINA是apache 开发的一个开发socket编程 ... -
log4j参数配置说明
2009-03-22 20:31 2014前几天用到log4j,到网上查了一下他的参数配置,发现还是比较 ... -
portal之SSO开发文档
2009-03-02 20:12 4071前两天看到别人写的,感觉不错,就转了过来做为参考 ... -
cas在tomcat中的配置
2009-02-25 21:22 2852cas在tomcat上配置时,需要打开tomc ... -
SSO 原理浅谈
2009-02-25 19:41 2120SSO 是一个非常大的主题,我对这个主题有着深深的感受,自从 ...
相关推荐
在这个名为“dwr例子”的压缩包中,包含了一个名为“dwrdemo1”的示例项目。这个项目可能是一个简单的DWR应用,用于展示如何配置和使用DWR框架。下面,我们将详细讨论DWR的关键概念和使用方法。 1. **DWR配置**: ...
这个"**DWR例子(完整调试版)**"可能是一个包含所有必要组件和配置的示例项目,用于帮助开发者理解和实践DWR的功能和用法。 在深入讲解DWR之前,我们先来了解一下什么是Web Remoting。Web Remoting是通过网络进行...
这个“dwr例子注册模块”是一个基于DWR技术构建的用户注册功能模块,使用了MySQL作为数据库,并且在开发环境中使用了MyEclipse5.5。 首先,DWR的核心概念是远程方法调用(Remote Method Invocation),它通过创建一...
这个"ajax框架dwr例子.rar"是一个针对初学者的教程资源,旨在帮助理解如何在实际项目中使用DWR进行Ajax开发。 DWR的核心功能在于提供了一个简单的方法来调用服务器端的Java方法,并将结果直接返回到客户端的...
在本例子中,“DWR例子”将向我们展示如何配置和使用DWR来实现这一功能。 首先,要使用DWR,我们需要在项目中添加DWR库。这通常涉及将DWR的JAR文件添加到项目的类路径中,并在Web应用的WEB-INF目录下创建一个名为...
在这个“dwr例子 eclipse 可用”的压缩包中,你可能会找到一个精心整理的DWR学习资源,包括如何在Eclipse环境下配置和使用DWR的实例。 DWR的主要功能包括: 1. **反向Ajax**:DWR允许服务器端代码直接调用客户端的...
这个“最简单的dwr例子”可能是一个入门教程,帮助开发者理解如何使用DWR来创建异步、动态的Web应用程序。 DWR的核心功能在于提供了一个桥梁,使得JavaScript可以调用服务器端的Java方法,就像它们是本地函数一样,...
这个"一个DWR例子,直接导入eclipse可运行"的压缩包提供了一个实战性的教程,帮助开发者了解并实践DWR的基本用法。 DWR的核心功能在于创建一种透明的远程调用机制,使得JavaScript可以像操作本地对象一样调用服务器...
在本"第一个DWR例子源程序"中,我们将深入探讨DWR的基础概念、工作原理以及如何通过实例来实现一个简单的DWR应用。 首先,DWR的核心功能在于提供了一个桥梁,使得JavaScript可以直接调用服务器端的Java方法,而无需...
在"ajax框架dwr例子"中,我们看到的是一个展示如何在Eclipse环境中使用DWR的简单示例。Eclipse是一款广泛使用的Java集成开发环境,对于开发基于DWR的应用提供了良好的支持。 首先,我们需要理解DWR的核心概念: 1. ...
在这个"一个简单DWR例子"中,我们可以预期包含以下组成部分: 1. **DWR配置**:项目中应有一个DWR配置文件(通常为`dwr.xml`),用于定义允许前端访问的Java类和方法。例如,可能有一个`UserService`类,其中包含...
这个例子“dwr例子演示级联菜单”旨在帮助我们理解如何使用DWR来创建动态的、交互式的级联下拉菜单。级联菜单常用于Web应用程序中,例如在选择国家时自动更新相应的省份列表。 首先,让我们了解一下DWR的基本工作...
在这个"一个简单的dwr例子dwrTest"中,我们将会探讨DWR的基础用法以及如何在一个MyEclipse环境中设置和运行这个入门实例。 首先,DWR的主要功能是提供AJAX(异步JavaScript和XML)的支持,使得Web应用能够无需刷新...
标题"简单的EXT+DWR例子"暗示我们将探讨如何将EXT与DWR集成,创建一个简单的Web应用。这个例子可能是为了展示如何利用EXT的组件和DWR的远程调用来创建一个可直接部署并运行的应用。 首先,EXT的主要组件包括表格、...
在“调用带JavaBean参数方法的DWR例子”中,我们将深入探讨如何使用DWR来调用包含JavaBean作为参数的方法。 首先,我们需要理解DWR的基本工作原理。DWR通过创建一个JavaScript接口,该接口映射到服务器上的Java类和...
通过学习这个简单的DWR例子,你可以了解到如何在实际项目中集成DWR,以及如何利用它来构建动态、交互性强的Web应用。这将有助于提升你的Web开发技能,尤其是对于那些希望增强前端和后端交互能力的开发者来说。
这个"TestDwr"压缩包文件提供的例子是一个简单的DWR应用示例,适合初学者理解和学习。 1. **DWR基本概念**: - DWR的核心组件包括`DWR Engine`、`Reverse AJAX`和`JavaBeans`。 - `DWR Engine`是DWR的核心,它...
在这个"ajax dwr例子"中,我们可以探讨DWR如何简化Ajax开发以及其主要功能。 1. **DWR的基本概念**:DWR的核心思想是通过动态生成JavaScript,使得服务器端的方法可以直接在客户端调用,仿佛它们是本地JavaScript...
在"经典DWR例子"中,我们看到的是一个利用DWR来实现的Web端游戏,这个游戏展示了Java后端与JavaScript前端之间的交互,使得用户可以体验到更加流畅和动态的网页应用。 DWR的核心功能在于它的远程方法调用(Remote ...
这个"DWR例子代码"压缩包很可能包含了一些示例代码,用于展示如何在实际项目中有效利用DWR技术。下面将详细解释DWR的核心概念和其在Web开发中的应用。 DWR的主要功能是实现JavaScript与Java后端之间的无缝通信,这...