欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dwr 操作使用

程序员文章站 2022-05-13 12:53:57
...

DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).它的最新版本DWR0.6添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作.

 

第一步:

1.去官网下载dwr.jar包
http://directwebremoting.org/dwr/downloads/index.html



第二步:配置servlet
  <servlet>
      <servlet-name>dwrinvoker</servlet-name>
      <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
      <!-- 自动生成测试页面(写上下列代码,项目启动后浏览器上输入这个url:http://ip:端口/项目名/dwr/index.html
      页面上有个类的超链接点击后相信你会明白下一步该这么做) -->
      <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
      </init-param>
  </servlet>
 
  <!-- 配置映射关系 -->
  <servlet-mapping>
      <servlet-name>dwrinvoker</servlet-name>
      <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>



第三部:编写类
package com.chni.dwr;

public class FirstDWR {

    /**
     * 调用js测试方法
     * @param uname  传过来的用户名
     * @return
     */
    public String getTime(String uname){
        
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return uname+"你好:服务器上的时间是:"+System.currentTimeMillis();
    }
}

第四步:在WEB-INF下配置新建一个dwr.xml 文件
<!-- dwr.xml 配置文件 -->
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.org/dwr/dwr20.dtd">
    
    <dwr>
        <allow>
        <!-- javascript调用类方法使用的名字 creator 创建类的方式   scope 存储范围
        page/request/session/application/script
        creator:职责实例化:方式  new 、none、spring 跟多详细信息建议网上吸收
        -->
            <create javascript="FirstDWR" creator="new" scope="request" >
                <!-- 对应类 -->
                <param name="class" value="com.chni.dwr.FirstDWR"/>
                <!--
                <exclude method="getTime"/>禁止页面上调用那些方法
                <include method=""/>规定页面上只能调用那些方法
                <filter class=""></filter>
                <auth role="" method=""/>许你指定一个J2EE的角色作为将来的访问控制检查
                 -->
            </create>
            <!-- bean的转换器,可以将com.pojos包下的所有类转换成Bean对象 可以模糊匹配(比如说com.chni.* 配置了com.chni包下所有类) -->
            <!--
                <convert match="实体类" converter=""></convert>
             -->
        </allow>
    </dwr>

第五步:页面配置

<title>简单的dwr实现</title>
   <meta http-equiv="content-type" content="text/html; charset=UTF-8">
   <!-- FirstDWR.js是DWR引擎自动生成的脚本 -->
  <script type='text/javascript' src='/dwr/dwr/interface/FirstDWR.js'></script>
  <!-- 这个文件是DWR的核心库,只要需要使用DWR就不能缺少该文件-->
  <script type='text/javascript' src='/dwr/dwr/engine.js'></script>
  <!-- dwr.util.js 是js的工具包 -->
  <script type='text/javascript' src='/dwr/dwr/util.js'></script>

<script type="text/javascript">
    //响应页面事件 调用java方法
    function javaMethod(){
        //获取页面文本框的值
        var varStr=document.getElementById("name").value;
        /*
        还可以使用dwr中的组件名获取文本框的值
        var varStr=dwr.util.getValue("userName");
        */    
        /*调用服务器对应方法 第一个参数java需要传入的参数,
            第二个参数处理完之后返回来的值
        相当于sampleXMLHttpReq.onreadystatechange = processResponse;,
        */
        //页面加载
        document.getElementById("none").style.display="inline";
        FirstDWR.getTime(varStr,function(data){
            if(data!=""){
                document.getElementById("none").style.display="none";
            }
            document.getElementById("vardata").value=data;
        });
    }
    //清除
    function clare(){
        document.getElementById("name").value='';
        document.getElementById("vardata").value='';
    }
</script>
  </head>
 
  <body>
    <pre>
        你的用户名:
        <input type="text" name="userName" id="name" onchange="javaMethod()"/>
        <br>服务器回应:
        <textarea cols="50" rows="5" name="serverReplay" id="vardata"></textarea>
        <input type="button" value="清 除" onclick="clare()">
        </pre>
        <div align="center" id="none" style="display: none"><img src="images/load.gif"/></div>
</body>
</html>

 

相关标签: dwr