`
一纸红颜岂值倾尽天下
  • 浏览: 27924 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

dwr 操作使用

    博客分类:
  • dwr
dwr 
阅读更多

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>

 

1
0
分享到:
评论
2 楼 一纸红颜岂值倾尽天下 2014-10-09  
ajax是通过js发出请求,被Servlet拦截下来,通过Servlet来与持久层打交道,而DWR就是对这一层Servlet进行了封装,使得js可以直接调用持久层的方法。
1 楼 bewithme 2014-10-09  
用jquery ajax调用servlet不是很好吗为什么一定要用dwr

相关推荐

Global site tag (gtag.js) - Google Analytics