http://di201yao.iteye.com/blog/164095

什么是DWR?
    DWR是一个Open Source的 java项目。DWR可以让JavaScript调用运行在Web服务器里面的JAVA程序。简单一点或者专业一点就是Easy AJAX for JAVA.
官方网站:http://getahead.org/dwr

下面将一步一步的介绍怎么完成一个简单DEMO
开发工具NetBeans IDE 6.0+Apache Tomcat 6.0.14

1、从官方网站下载DWR.jar包(附件中也有)
把他直接放到Apache Tomcat 6.0.14\lib目录下面

2、编写一个Java类如下

Java代码  
  1. package com.test.ajax;
  2. public class DWRTest {
  3. public DWRTest(){
  4. }
  5. public String getMyName(){
  6. return "Hello Ajax";
  7. }
  8. }

package com.test.ajax;
public class DWRTest {
public DWRTest(){
}
public String getMyName(){
return "Hello Ajax";
}
}

3、修改web.xml

Java代码  
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
  3. <web-app id="dwr">
  4. <servlet>
  5. <servlet-name>dwr-invoker</servlet-name>
  6. <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  7. </servlet>
  8. <servlet-mapping>
  9. <servlet-name>dwr-invoker</servlet-name>
  10. <url-pattern>/dwr/*</url-pattern>
  11. </servlet-mapping>
  12. </web-app>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="dwr">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>

4、把DRWTest类配置在dwr.xml中,dwr.xml是DWR的配置文件,所有需要在JavaScript中调用的java的类都必须在这个文件中描述 (必须与web.xml同级)

Java代码  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
  3. <dwr>
  4. <allow>
  5. <create creator="new" javascript="MyTest" scope="application">
  6. <param name="class" value="com.test.ajax.DWRTest"/>
  7. </create>
  8. </allow>
  9. </dwr>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="MyTest" scope="application">
<param name="class" value="com.test.ajax.DWRTest"/>
</create>
</allow>
</dwr>

5、编写调用DWRTest类中的getMyName方法的jsp文件

Java代码  
  1. <%@ page language="java" contentType="text/html; charset=GB18030"
  2. pageEncoding="GB18030"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
  7. <title>DWR - Test Home</title>
  8. <script type='text/javascript' src='dwr/interface/MyTest.js'></script>
  9. <script type='text/javascript' src='dwr/engine.js'></script>
  10. <script type='text/javascript' src='dwr/util.js'></script>
  11. <script language="javascript">
  12. var mycall=function callBack(data){
  13. DWRUtil.setValue("demo1",data);
  14. }
  15. function showMyName(){
  16. MyTest.getMyName(mycall);
  17. }
  18. function clearName(){
  19. demo1.value="";
  20. }
  21. </script>
  22. </head>
  23. <body>
  24. <h1>Ajax Test Page</h1>
  25. <input type="button" value="显示姓名" οnclick="javascript:showMyName()">
  26. <input type="button" value="清空" οnclick="javascript:clearName()"><br>
  27. <input type="text" id="demo1"><br>
  28. </body>
  29. </html>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>DWR - Test Home</title>
<script type='text/javascript' src='dwr/interface/MyTest.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript">
var mycall=function callBack(data){
DWRUtil.setValue("demo1",data);
}
function showMyName(){
MyTest.getMyName(mycall);
}
function clearName(){
demo1.value="";
}
</script>
</head>
<body>
<h1>Ajax Test Page</h1>
<input type="button" value="显示姓名" οnclick="javascript:showMyName()">
<input type="button" value="清空" οnclick="javascript:clearName()"><br>
<input type="text" id="demo1"><br>
</body>
</html>

6、运行,在浏览器中输入 http://localhost:8084/WebApplication/

附件中是本人做好的例子和dwr.jar包

  • NetBeansProjects.rar (445.6 KB)

一个简单的DWR入门例子相关推荐

  1. 一个简单的iBatis入门例子

    一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. ibatis-2.3.4.726.jar ojdbc14.jar 2.创建类com/ ...

  2. 一个简单的三层架构例子(.NET入门)

    最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...

  3. 一个简单的epoll测试例子

    一个简单的epoll测试例子 一段简单的epoll测试例子,编译运行后可以直接用浏览器访问localhost来测试. 1 #include <unistd.h> 2 #include &l ...

  4. diybox路由器设置教程_一个简单的无线路由器入门设置教程,非常实用

    原标题:一个简单的无线路由器入门设置教程,非常实用 分享给朋友们一个简单的无线路由器入门设置教程,教大家怎么使用无线路由器.如何设置使用,非常实用. 一.无线路由器基本使用方法 1.拿到手的无线路由器 ...

  5. linux下glew例子,一个简单的GLSL Shader例子

    本例子选自OpenGL Shading Language中的第一个Shader例子,使用颜色平滑地表示一个表面的温度.温度及其颜色的范围在应用程序中进行设置. //先看顶点着色器temp.vert: ...

  6. 一个简单的规则引擎例子

    本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...

  7. 一个简单的马尔可夫过程例子

    什么是马尔可夫过程(Markov Process) 要说什么是马尔可夫过程,首先必须讲讲什么是随机过程(Stochastic Process). 設 (Ω,,P) (\Omega, \mathcal ...

  8. 如何写一个简单java接口的例子(内容详细,适合初学者)

    这里说一个简单的java接口的小例子(一个接口类,两个实现类) 先新建一个动态web工程: 我的项目目录是这样子的(接口写完之后目录) 先在test0609_test1包下new 一个interfac ...

  9. 一个简单的FastAPI入门项目

    FastAPI Demo项目 一个简单的使用FastAPI框架搭建的服务,包含了基本的数据库链接以及CRUD操作.请求体模式的定义.基本路径操作函数的编写等,非常适合fastapi入门者. 说明: 1 ...

最新文章

  1. altium designer布线调整时不自动删除旧线
  2. 2017年11月01日普及组 I Got a Matrix!
  3. 'staticfiles' is not a registered tag library. Must be one of:
  4. Centos 安装 Chrome
  5. PHP编写shell
  6. 软件测试宝藏图_tSQLt –数据库单元测试中被遗忘的宝藏
  7. 【编程珠玑】第六章 程序性能分析
  8. [整理] TPM 2.0 设备串口通讯协议中文文档
  9. Android 监听 摇杆,Android虚拟摇杆 摇杆 方向控制
  10. 如何才能把qlv格式转换成mp4格式
  11. Aho-Corasick(AC自动机)
  12. python数据可视化方法和库
  13. android开发之高仿中国建设银行App
  14. 关于网络安全行业你知道多少?
  15. 嵌入式linux开发,对pcf8563时钟操作报错:rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.
  16. NVP2650D+OX03C10,方案参考设计
  17. 机械键盘 酒精大法
  18. python中字符串的基本操作_python字符串的基本操作
  19. 以太网交换芯片行业研究及十四五规划分析报告
  20. 一个男人关心的东西 决定了他的层次

热门文章

  1. iOS之深入解析图片解压缩到渲染的过程与原理
  2. iOS之“支付宝支付”开发流程
  3. 2019年第十届蓝桥杯 - 省赛 - Java研究生组 - A. 立方和
  4. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - F. 加法变乘法
  5. PyTorch - torchvision - datasets
  6. 深入分析python的and or 返回值
  7. 树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
  8. 2018年第九届蓝桥杯C/C++ A组国赛 —— 第四题:约瑟夫环
  9. 《python从入门到精通》——生成由数字、字母组成的4位验证码
  10. 【Qt】数据库实战(一)