DWR基础学习

DWR简介 

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

      DWR包括两个部分:一个运行在服务器端的Java Servlet,负责处理浏览器的请求并发送反馈给浏览器;另一个是运行在浏览器端的JavaScript,负责发生请求并动态修改web页面。
步骤如下:
(1)、下载dwr.jar,将WEB-INF\lib下的jar文件放在web-inf/lib目录下
(2)、修改web.xml,增加:
<servlet>   
    <servlet-name>dwr-invoker</servlet-name>   
    <display-name>DWR Servlet</display-name>   
    <servlet-class>uk.ltd.getahead.dwr.DWRServletservlet-class> //如果是DWR 2.x,改成org.directwebremoting.servlet.DwrServlet    
    <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>  
(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="Hello" scope="page/request/session/application"> //可以设置对象保存的位置
             <param name="class" value="com.dwr.HelloWorld"/>  //实体bean
        </create>  
    </allow>  
</dwr>  
(4)、
一般jsp页面中需要加入:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
<title>DWR's  HelloWorld</title>  
<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>  
</head>  
<body>  
<input id="user" type="text" /><input type='button' value='哈罗' οnclick='hello();' />  <div id="result"></div>  
</body>  
</html> 

其中最后一个js文件是自定义的文件,其他的是动态生成的
(5)、写服务端的JAVA类

package com.dwr;

public class HelloWorld {
      private String name;
      public HelloWorld(){}
      public String getName(){
           return name;
      }
      public void setName(String name){
          this.name=name;
      }
      public String sayHello(String name){
          return "hello,"+name;
      }

}


(6)、写客户端的js
function hello() {

    var user = $('user').value;
    Hello.sayHello(user, callback);
}
 
function callback(msg) {//回调方法
    DWRUtil.setValue('result', msg);
}

dwr相关的几个配置文件介绍

1.web.xml中dwr定义的一点小技巧
加下面的参数,可以让dwr以debug模式产生测试页面
<init-param>   
    <param-name>debug</param-name>  
    <param-value>true</param-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)一般结构如下,对每个要在远程访问方法的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对象的名字,也就是说,是一个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函数

转载于:https://www.cnblogs.com/flyingzqx/archive/2009/12/14/1623696.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值