DWR学习笔记(一):第一个dwr应用

DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).

按照Getahead官方网站上的步骤,可以按照如下的步骤来尝试第一个DWR应用:

1.  我首先创建了一个简单的Tomcat项目dwrstudyIDEEclipse

2.  将已经下载的dwr.jar文件放入WEB-INF/lib目录下;

3.  在部署描述符文件(web.xml)中注册如下一个servlet

   <servlet>

       <servlet-name>dwr-invoker</servlet-name>

       <display-name>DWR Servlet</display-name>

       <servlet-class>uk.ltd.getahead.dwr.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>

4.  创建一个dwr.xml放在WEB-INF目录下面,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC

    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"

    "http://getahead.org/dwr/dwr20.dtd">

<dwr>

    <allow>

        <create creator="new" javascript="JDate">

            <param name="class" value="java.util.Date"/>

    </create>

</allow>

</dwr>

上面的文件表明将会根据java.util.Date类创建一个JDate.js文件,

5. 在浏览器中输入http://localhost:8888/dwrstudy/dwr/index.html此时将会列出所有的JS文件名以及它所对应的Java例如本例中将显示如下列表JDate (java.util.Date),点开链接会看到关于这个类的详细说明。

6. 如何使用dwr呢?按照说明,我新建了一个index.html文件,内容如下:

<!DOCTYPE html PUBLIC "-//W 3C //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=UTF-8">

       <title>Insert title here</title>

    </head>

    <script src='/dwrstudy/dwr/interface/JDate.js'></script>

    <script src='/dwrstudy/dwr/engine.js'></script>

    <script type='text/javascript'                

              src='/dwrstudy/dwr/util.js'></script>

    <body>

       <input class='ibutton' type='button' onclick='JDate.toString(reply5);'

           value='Execute'

           title='Calls JDate.toString(). View source for details.' />

       <script type='text/javascript'>

           var reply5 = function(test){

        if (test != null && typeof test == 'object')  

           alert(dwr.util.toDescriptiveString(test, 2));

        else

       dwr.util.setValue('d5', dwr.util.toDescriptiveString(test, 1));

           }

       </script>

        <span id='d5' class='reply'></span>

    </body>

</html>

    红色背景的代码是我们必须要引入的js,这些js应该是由DWR自动给我们生成的。细细看了一下,隐藏了AJAX的原理。首先,onclick事件触发的函数是JDate.toString这个函数是dwr自动给我们生成的,它会相应调用java.util.Date类的toString方法,它的参数只有一个reply5,这是一个函数的指针,它是一个回调函数,当java.util.Date类的toString方法执行完毕之后会调用reply5所指向的函数。这个回调函数,有一个参数,它所接收的值就是java.util.Date类的toString方法的返回值。整个流程就和传统的ajax很类似了,通常我们是通过xmlHttpRequest请求服务器端的某个方法,执行完毕后通过onreadystatechange事件来调用回调函数,服务端的执行结果可以写在response中通过xmlHttpRequestresponseXml来获得并进行相应的处理。有点类似于DWR帮我们把这些过程都包装起来了,DWR的理念也就是Easy AJAX For JAVADWR is a Java open source library which allows you to write Ajax web sites.

 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值