转自:http://www.cnblogs.com/wyqtomorrow/archive/2007/06/11/778985.html

DWR是一个开源的java包,可以使浏览器中的代码使用web服务器中java类的方法,就像这个方法就是在浏览器中一样。

DWR包括两个部分:一个运行在服务器端的Java Servlet,负责处理浏览器的请求并发送反馈给浏览器;另一个是运行在浏览器端的Java Script,负责发生请求并动态修改web页面。
步骤:
(1)、下载dwr.jar,放在web-inf/lib目录下
(2)、修改web.xml,增加:
<servlet>  
<servlet-name>dwr-invokerservlet-name>  
<display-name>DWR Servletdisplay-name>  
<servlet-class>uk.ltd.getahead.dwr.DWRServletservlet-class> //如果是DWR 2.x,改成org.directwebremoting.servlet.DwrServlet   
<init-param>  
  <param-name>debugparam-name>   
   <param-value>trueparam-value>  
<init-param>  
<servlet>     
<servlet-mapping>  
<servlet-name>dwr-invokerservlet-name>  
<url-pattern>/dwr/*url-pattern>  
<servlet-mapping>  
(3)、创建dwr.xml放在与web.xml一个目录下面
<?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="JDate"> //JS使用的类名 
<param name="class" value="java.util.Date"/>  //实际java的类
<create>  
<create creator="new" javascript="Demo" scope="page/request/session/application"> //可以设置对象保存的位置
<param name="class" value="your.java.Bean"/>  
<create>  
<allow>  
<dwr>  
(4)、
一般jsp页面中需要加入: 
<script type='text/javascript' src='dwr/interface/Hello.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='hello.js'></script>
其中最后一个js文件是自定义的文件
(5)、写服务端的JAVA类
(6)、写客户端的js
function hello() { var user = $('user').value;
    Hello.hello(user, callback);
}
 
function callback(msg) {
   DWRUtil.setValue('result', msg);
}

1.web.xml中dwr定义的一点小技巧
加下面的参数,可以让dwr以debug模式产生测试页面
<init-param>   
<param-name>debugparam-name>  
<param-value>trueparam-value>  
<init-param>  
2.dwr.xml介绍
格式:
<dwr>     
<init>   
<creator id="..." class="..."/>  
<converter id="..." class="..."/>  
< init>   
<allow>  
<create creator="..." javascript="..."/>  
<convert converter="..." match="..."/>  
< allow>  
<signatures>   
  ...    
<signatures>    
<dwr>

(1)、create元素介绍,一般结构如下,对每个要在远程访问方法的java类都要定义一个creator

<create creator="..." javascript="..." scope="...">  
<param name="..." value="..."/>  
<auth method="..." role="..."/>  
<exclude method="..."/>   
<include method="..."/>  
<create>   对各个元素进行描述
(2)、 creator属性
new:指用java的new操作符创建对象
none:并不产生对象
scripted:用脚本语言创建对象,如BeanShell 或 Groovy via BSF
spring:通过spring framework创建对象
struts:使用struts的FormBean
pageflow:使用Beehive or Weblogic的PageFlow
(3)、javascript属性
         在浏览器端代理远程java对象的javascript对象的名字
(4)、scope属性
         远程java对象scope可以设置page、request、session、application。
(5)、param子元素:定义访问的具体java类。

(6)、include和exclude子元素:限制访问的方法

DWR util.js工具包的使用
目录列表:
1、$()
2、DWRUtil.getText(id)
3、DWRUtil.getValue(id)
4、DWRUtil.setValue(id,value)
5、DWRUtil.getValues()
6、DWRUtil.setValues()
7、DWRUtil.addOptions and DWRUtil.removeAlloptions
8、DWRUtil.addRows and DWRUtil.removeAllRows
9、DWRUtil.onReturn
10、DWRUtil.toDescriptiveString
11、DWRUtil.useLoadingMessage

(1)、DWRUtil.selectRange("selectRangeBasic", 5, 15) 选中selectRangeBasic文本框里面从第五个字符到第15个字符之间的字符.
(2)、var arrayFive = [ 'One', 'Two', 'Three', 'Four', 'Five' ];
DWRUtil.addOptions('addOptionsBasic', arrayFive); 将数组添加到下拉菜单里面去;
(3)、DWRUtil.getValue('addOptionsBasic') 得到 addOptionsBasic 对象的值;
(4)、DWRUtil.getText('addOptionsBasic') 得到下拉框 addOptionsBasic 显示的文本;
(5)、var arrayObject = [
{ name:'One', value:'1' },
{ name:'Two', value:'2' },
{ name:'Three', value:'3' },
{ name:'Four', value:'4' },
{ name:'Five', value:'5' }
];DWRUtil.addOptions('addOptionsObject1', arrayObject, "name"); 将数组添加到下拉菜单里面去;后面的参数是确定那个是给用户显示的文本,同时也是值;如果是name表示名称和值都用name显示。
DWRUtil.addOptions('addOptionsObject1', arrayObject, "name","value"); 同上,不过后面参数是: 3=值;4=文本;
(6)、var map = { one:1, two:2, three:3, four:4, five:5 };
DWRUtil.addOptions('addOptionsMap1', map); 同上, one 是值;1 是文本;
DWRUtil.addOptions('addOptionsMap1', map,true); 同上, 1 是值;one 是文本;
(7)、DWRUtil.cloneNode('cloneNode1', { idPrefix:'pre', idSuffix:'suf' });克隆一个节点,参数一为要克隆的节点的id,第二个参数是在克隆的节点id前面加pre,后面加suf.(注意:如果该节点有子节点的话,子节点的名字也一样加
(8)、DWRUtil.onReturn(event, submitFunction);一般在form表单里面,防止在文本框上按回车就提交表单.
例如:
<input type="text"
οnkeypress="DWRUtil.onReturn(event, submitFunction)"/>
<input type="button" οnclick="submitFunction()"/>
submitFunction表示要调用的js函数

DWR学习笔记--转载相关推荐

  1. DWR学习笔记 - Hello World

    简介 DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用 ...

  2. 阿龙的学习笔记---转载及精炼总结github仓库:cpp-backend-reference

    -> 转载自https://github.com/chankeh/cpp-backend-reference 突击复习常见题,要提前批了,之前的忘了不少,知识广度先再拓展一下.文章中的一些详细讲 ...

  3. away3d学习笔记 转载

    http://abcdefgea.blog.163.com/blog/static/13278774120121155041956/ away3D_4.1.0_教程使用到的3D文件格式 .3ds(3D ...

  4. JBI学习笔记(转载于gaolin_bei)

    2019独角兽企业重金招聘Python工程师标准>>> 业界正在广泛寻求解决 B2B 以及 EAI (企业应用集成)所存在问题的方案.这些方案不同于基于 JMS 手段的面向消息中间件 ...

  5. HUAWEI视讯技术学习笔记(转载)

    一.平台介绍 业务管理 SMC2.0 . 网络控制 网络控制的核心--SC(switch center),是视讯业务的交换控制中心,主要有地址解析.接入控制.带宽管理.呼叫管理等功能.SC的交换控制是 ...

  6. NHibernate学习笔记(转载):many-to-one/one-to-many/many-to-many关系映射

    本文的内容: 介绍NH如何处理对象间many-to-one,one-to-many和many-to-many的双向映射关系(本文主要介绍了映射文件,对于类的生成可以跟据前两篇描述的方法生成): 经验教 ...

  7. Android 中的WiFi学习笔记(转载)----WIFI启动 代码流程走读---网络连接流程

    Android的WiFi 我们通常看到WiFi的守护进程wpa_supplicant在我们的ps的进程列表中,这个就是我们的wifi守护进程.wpa_supplicant在external/wpa_s ...

  8. oracle java写目录权限_oracle分配权限 学习笔记--转载

    在全局数据库ORCL下创建一个用户 首先在开始-->运行-->sqlplus,然后输入 sys/change_on_install as sysdba 以sys权限登陆进去 然后可以进行操 ...

  9. Freetype学习笔记(轉)

    Freetype学习笔记 转载时请注明出处:http://blog.csdn.net/absurd GTK+(基于DirectFB)的字体绘制是通过pango+freetype+fontconfig三 ...

  10. STM8L探索套件学习笔记(转)

    源:STM8L探索套件学习笔记 转载于:https://www.cnblogs.com/LittleTiger/p/4460631.html

最新文章

  1. 加拿大阿尔伯塔大学韩杰教授招收电子与计算机专业博士/博后
  2. USTC English Club Note20211215
  3. Hi3516A开发--i2c tools安装和使用
  4. TensorFlow2-神经网络基础
  5. mac下kafka环境搭建 测试
  6. Windows2003 安装AD失败,未能为域创建GPO,出现了扩展错误 的解决方法
  7. 多站合一音乐搜索神器网站源码
  8. nagios配置文件说明
  9. 【ElasticSearch】Es 源码之 DiskThresholdMonitor 源码解读
  10. Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
  11. springboot中的controller注解没有生效
  12. VB mschart控件的使用
  13. 西刺代理python_python网络爬虫实战——实时抓取西刺免费代理ip-Go语言中文社区...
  14. 视频教程-Hive在大数据分析和大数据仓库中应用实战-大数据
  15. 牢记公式,ardupilot EKF2就是纸老虎(五)!
  16. Windows的程序包管理器choco安装
  17. 微信撤回 服务器已删除,微信撤回已经毫无用处,99%都能找回!
  18. Linux技术社区—蜗窝科技
  19. 基于最小均值 (LMF) 和最小均方 (LMS) 算法进行系统识别附matlab代码
  20. 自己是一滩烂泥,却恨铁不成钢

热门文章

  1. 「干货」模拟信号和数字信号的差异
  2. ansible 通过加密码来批量管理主机及管理Windows主机
  3. springboot 项目中控制台打印日志以及每天生成日志文件
  4. getElementsByName和getElementByID
  5. dj打碟怎么学_关于DJ入门以及手把手教你如何打碟(转)
  6. android Activity生命周期总结
  7. html5实现效果代码,js+html5实现的自由落体运动效果代码
  8. java 原型模式_原型模式
  9. 今天安利一个超牛叉的黑客入侵的特效网页,我第一次打开就被惊艳到了
  10. java 睡眠_Java 线程和多线程执行过程分析