DWR使用入门教程

1. DWR简介

DWR(Direct Web Remoting)是一个Ajax的开源框架,用于改善web页面与Java类交互的远程服务器端的交互体验,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。

2. 开发流程

1.       编写业务代码,该代码是和dwr无关的。

2.       确认业务代码中哪些类、哪些方法是要由javascript直接访问的。

3.       编写dwr组件,对步骤2的方法进行封装。

4.       配置dwr组件到dwr.xml文件中,如果有必要,配置convert,进行java和javascript类型互转。

5.       通过反射机制,dwr将步骤4的类转换成javascript代码,提供给前台页面调用。

6.       编写网页,调用步骤5的javascript中的相关方法(间接调用服务器端的相关类的方法),执行业务逻辑,将执行结果利用回调函数返回。

7.       在回调函数中,得到执行结果后,可以继续编写业务逻辑的相关javascript代码。

3. 简单样例

3.1. 样例说明

参照DWR源码自带样例,完成一个sayHello功能,通过此样例熟悉dwr的运行原理和编写规范。

3.2. 下载资源

从DWR官网下载最新版本的jar包,地址:

http://directwebremoting.org/dwr/downloads/index.html

将jar包放入WEB-INF的lib文件夹下。同时,dwr依赖于commons-logging.jar这个包,所以必须将这个jar包也放入到WEB-INF的lib文件夹下。

3.3. web.xml文件

首先是配置dwr的环境:

    <servlet>

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

       <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

       <init-param>

           <param-name>debug</param-name>

           <param-value>true</param-value>

       </init-param>

       <init-param>     

           <param-name>crossDomainSessionSecurity</param-name>     

           <param-value>false</param-value>     

        </init-param>

       <load-on-startup>1</load-on-startup>

    </servlet>

 

    <servlet-mapping>

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

       <url-pattern>/dwr/*</url-pattern>

   </servlet-mapping>

3.4. dwr.xml文件

从官网的jar.war文件中利用winRAR等软件提取出dwr.xml文件,并将其放入到WEB-INF文件夹下。

dwr.xml是dwr的核心配置文件,主要的标签有:<converter>、<convert>、<create>这三个标签。

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEdwrPUBLIC"-//GetAhead Limited//DTD Direct Web Remoting2.0//EN""http://getahead.org/dwr/dwr20.dtd">

 

<dwr>

  <allow>

    <createcreator="new"javascript="Demo">

      <paramname="class"value="com.agileai.test.simpletext.Demo"/>

    </create>

  </allow>

</dwr>

 

其中,creator和javascript是必须属性,其他可以忽略。creator包含有以下几个值:

1.       new:Java用“new”关键字创造对象

2.       none:它不创建对象  (v1.1+)

3.       scripted:通过BSF使用脚本语言创建对象,例如BeanShell或Groovy

4.       spring:通过Spring框架访问Bean

5.       struts:使用Struts的FormBean  (v1.1+)

6.       jsf:使用JSF的Bean  (v1.1+)

7.       pageflow:访问Weblogic或Beehive的PageFlow  (v1.1+)

8.       ejb3:使用EJB3session bean  (v2.0+)

3.5. Html文件

<html>

<head>

  <title>简单文本生成样例</title>

  <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>

  <scripttype='text/javascript'src='../dwr/engine.js'></script>

  <scripttype='text/javascript'src='../dwr/util.js'></script>

  <scripttype='text/javascript'src='../dwr/interface/Demo.js'></script>

 <scripttype="text/javascript">

  function update() {

      var name = dwr.util.getValue("demoName");

      Demo.sayHello(name, function(data) {

        dwr.util.setValue("demoReply", data);

      });

  }

  </script>

</head>

<body>

      姓名:

      <inputtype="text"id="demoName"value="Joe"/>

      <inputvalue="发送"type="button"onclick="update()"/><br/>

      回复:

      <spanid="demoReply"></span>

</body>

</html>

其中engine.js必须要,如果需要用到dwr提供的一些方便的工具要引用util.js,然后是dwr自动生成的js文件,名字必须和dwr.xml中create标签的javascript属性值一样,且是dwr/interface开头的目录。

3.6. Java文件

package com.agileai.test.simpletext;

 

publicclassDemo {

   

    public String sayHello(Stringname) {

       return "Hello, "+ name;

    }

 

}

3.7. 运行原理

1.       当你点击浏览器调用的“发送”按钮onclick事件,调用update()函数。

2.       在服务器上,DWR调用Demo.sayHello()的Java方法。

3.       该方法返回的时候,DWR调用回调函数,设置回复值。



DWR使用入门教程文档         下载



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值