最简单的DWR例子
什么是DWR?
DWR是一个Open Source的 java项目。DWR可以让JavaScript调用运行在Web服务器里面的JAVA程序。简单一点或者专业一点就是Easy AJAX for JAVA. 官方网站:http://getahead.org/dwr ,下面将一步一步的介绍怎么完成一个简单DEMO :TestDwr。
一、从官方网站下载DWR.jar包
把他直接放到apache-tomcat-7.0.27\lib目录下面
二、新建Web Project工程

编写一个TestDwr.Java类如下:
// TestDwr.java
- package com.test.ajax;
 - publicclass TestDwr
 - {
 - public String getMyName()
 - {
 - return"Hello Casco!";
 - }
 - }
 
package com.test.ajax;
publicclass TestDwr
{   
    public String getMyName()
    {      
        return"Hello Casco!"; 
    }      
}  
三、修改web.xml
// web.xml
- <?xml version="1.0" encoding="UTF-8"?>
 - <web-app version="3.0"
 - 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_3_0.xsd">
 - <display-name></display-name>
 - <servlet>
 - <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>
 
<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="3.0"   
    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_3_0.xsd">  
  <display-name></display-name>   
  <servlet>  
    <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>  
四、新建dwr.xml文件
把TestDwr类配置在dwr.xml中,dwr.xml是DWR的配置文件,所有需要在JavaScript中调用的java的类都必须在这个文件中描述 (必须与web.xml同级)
// dwr.xml
- <?xml version="1.0" encoding="UTF-8"?>
 - <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
 - <dwr>
 - <allow>
 - <create creator="new" javascript="CASCO" scope="application">
 - <param name="class" value="com.test.ajax.TestDwr"/>
 - </create>
 - </allow>
 - </dwr>
 
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> <dwr> <allow> <create creator="new" javascript="CASCO" scope="application"> <param name="class" value="com.test.ajax.TestDwr"/> </create> </allow> </dwr>
五、配置DWR包中的引用
把\dwr\WEB-INF\lib复制到testDwr\WebRoot\WEB-INF\lib。
六、编写jsp文件
编写调用TestDwr类中的getMyName方法的index.jsp文件:
- <%@ 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/engine.js'></script>
 - <script type='text/javascript' src='dwr/util.js'></script>
 - <script type='text/javascript' src='dwr/interface/CASCO.js'></script>
 - <script language="javascript">
 - var mycall=function callBack(data){
 - dwr.util.setValue("demo1",data);
 - }
 - function showMyName(){
 - CASCO.getMyName(mycall);
 - }
 - function clearName(){
 - demo1.value="";
 - }
 - </script>
 - </head>
 - <body>
 - <h1>Ajax Test Page</h1>
 - <input type="button" value="显示姓名" onclick="javascript:showMyName()">
 - <input type="button" value="清空" onclick="javascript:clearName()"><br>
 - <input type="text" id="demo1"><br>
 - </body>
 - </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/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='dwr/interface/CASCO.js'></script>
<script language="javascript"> 
    var mycall=function callBack(data){
        dwr.util.setValue("demo1",data);
    }
    function showMyName(){
        CASCO.getMyName(mycall);
    }
    function clearName(){
        demo1.value="";
    }
</script>
</head>
<body>
    <h1>Ajax Test Page</h1>    
    <input type="button" value="显示姓名" onclick="javascript:showMyName()">   
    <input type="button" value="清空" onclick="javascript:clearName()"><br>    
    <input type="text" id="demo1"><br>    
</body>
</html>

七、编译运行
在浏览器中输入 http://localhost:8080/TestDwr/,按“显示姓名”按钮,即可显示我们的函数getMyName内容。

最简单的DWR例子的更多相关文章
- 一个简单的CORBA例子
		
因为对CORBA分析的需要,这里写一个简单的CORBA例子.从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题.这个例子实现一个简单的加减乘除的 ...
 - 菜鸟学习Hibernate——简单的一个例子
		
一.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了能够使用Hibernate快速上手,我们先讲解一个简单的Hibernate应用实例hibernate ...
 - 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
		
这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world ...
 - 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)
		
使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Netw ...
 - 使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)
		
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 ...
 - 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)
		
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 ...
 - 一个简单的cmake例子
		
一个简单的cmake例子CMakeLists.txt,生成动态库文件,可以指定发布目录. 尚不支持: 1.交叉编译环境配置 2.添加依赖库 #在当前目录新建一个build目录,然后cd build ...
 - vue双向数据绑定最最最最最简单直观的例子
		
vue双向数据绑定最最最最最简单直观的例子 一.总结 一句话总结:双向绑定既不仅model可以影响view的数据,view也可以影响model的数据 view model 数据 1.vue双向数据绑定 ...
 - 一个最简单的JStorm例子
		
最简单的JStorm例子分为以下几个步骤: 1.生成Topology Map conf = new HashMp(); //topology所有自定义的配置均放入这个Map TopologyBuild ...
 
随机推荐
- 基于modelform和ajax的注册
			
forms文件 创建ModelForm组件 from django import forms from crm import models from django.core.exceptions im ...
 - [AI开发]目标跟踪之计数
			
基于视频结构化的应用中,目标在经过跟踪算法后,会得到一个唯一标识和它对应的运动轨迹,利用这两个数据我们可以做一些后续工作:测速(交通类应用场景).计数(交通类应用场景.安防类应用场景)以及行为检测(交 ...
 - S7-1200 的运动控制
			
S7-1200 CPU本体集成点硬件输出点最高频率为100kHz,信号板上硬件集成点输出的最高频率为20kHz,CPU在使用PTO功能时将把集成点Qa.o,Qa.2或信号板的Q4.0作为脉冲输出点,Q ...
 - c++学习书籍推荐《深入理解C++11 C++11新特性解析与应用》下载
			
百度云及其他网盘下载地址:点我 编辑推荐 <深入理解C++11:C++11新特性解析与应用>编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑.系统.深 ...
 - 文件传输——TCP/IP协议介绍总结
			
一.链路层 数据链路层的工作特性: 1.为IP模块发送和接收IP数据报2.为ARP模块发送ARP请求和接收ARP应答(ARP:地址解析协议,将IP地址转换成MAC地址)3.为RARP发送RARP请求和 ...
 - 自定义SSL证书实现单双向ssl认证记录
			
自定义SSL证书: 1.ca证书 #openssl genrsa -out ca.key 2048 #openssl req -new -key ca.key -out ca.csr #openssl ...
 - 74859a颜色信息
			
74859a十进制的RGB值为R:116, G:133, B:154. CMYK值为C:24.675, M:13.636, Y: 0.0, K: 39.608 RGB 116, 133, 154 百分 ...
 - 【译】深入理解G1的GC日志(一)
			
本文翻译自:https://www.redhat.com/en/blog/collecting-and-reading-g1-garbage-collector-logs-part-2?source= ...
 - android值类型转换
			
各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数字类型. 字符串型转换成各种数字类型: String s = & ...
 - 如何在一个项目中兼容Wepy和Taro?
			
背景交待 NJ 项目启动初期,团队技术栈主要是基于 Vue,技术选择上就选择了类 Vue 的 wepy.迭代几个版本后 mpvue 出来了,简单调研了下,准备基于 mpvue-simple 开发部分页 ...