DWR 入门教程

什么是DWR(DirectWeb Remote)?

DWR是一种AJAX解决方案!

 

DWR包括一个java库,以及一套javascript,使得我们可以用一种非常简单的方式,在页面上使用javascript直接调用后台的java对象!

DWR架构

 

DWR的javascript库包括几个部分:dwr的javascript引擎(即对AJAX调用的封装)、 dwr提供的一些非常有用的辅助javascript函数库、 以及dwr自动帮我们生成的专门用于调用后台JavaBean方法的javascript库!

 

<script type="text/javascript" src="dwr/engine.js"></script>

<script type="text/javascript" src="dwr/util.js"></script>

<script type="text/javascript" src="dwr/interface/test1.js"></script>

 

 

Dwr在运行的时候,动态生成一个javascript库,这个库是对后台javabean调用的封装,我们可以直接使用这个库来实现直接调用JavaBean的目的!

 

注意:是在运行的时候动态生成!

 

下面我们来看看如何安装和使用(基于DWR2.x版本):

如何下载、安装与使用?

官方网址: http://getahead.org/dwr

 

1、 下载dwr.jar,将其加入web-inf/lib目录

2、 修改web.xml文件,添加DWRServlet的映射

  <servlet>

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

    <servlet-class>org.directwebremoting.servlet.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>

 

3、 配置dwr,即在WEB-INF目录下,添加dwr.xml文件,让dwr知道在运行的时候应该给哪些JavaBean生成相应的javascript库!

 

<?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="test1">

      <param name="class" value="com.bjsxt.dwr.Test1"/>

    </create>

  </allow>

</dwr>

这个配置的意思是,要创建的是Test1对象的javascript库,而且这个库的名字叫test1,同时,这也是我们在JSP页面上调用这个对象的时候所使用的名称,请看下面的JavaBean代码和JSP实例:

 

4、下面是Test1这个JavaBean的源代码:

package com.bjsxt.dwr;

 

 

public class Test1 {

 

       public String sayHello(String name){

              return "你好,"+name;

       }

 

}

 

5、在JSP中的使用!

 

<%@ page language="java" contentType="text/html; charset=GB18030"

    pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<script type="text/javascript" src="dwr/engine.js"></script>

<script type="text/javascript" src="dwr/util.js"></script>

<script type="text/javascript" src="dwr/interface/test1.js"></script>

<title>Insert title here</title>

<script type="text/javascript">

function sayHello(){

    test1.sayHello("李四ddd",

       function(data){

           alert(data);

       }

    );

}

</script>

</head>

<body>

<a href="#" onclick="sayHello()">Test1</a>

</body>

</html>

让我们简单看一下这个JSP文件:首先引入DWR中的两个核心javascript库:engine.js和util.js,它们分别是dwr中的核心引擎库和辅助工具函数库!

 

第三个引入的dwr/interface/test1.js,实际上这个文件并不存在,这是由dwr在运行的时候动态生成的!test1这个名称,跟dwr.xml文件中配置的对应对象的javascript属性一致!

 

而且,我们在使用的时候,直接使用test1这个名称,作为这个对象的引用。直接调用这个对象的方法:sayHello,这个方法的名称必须与JavaBean中的方法名称一致!

 

sayHello方法有一个参数,同时返回一个值。我们可以直接传递参数,同时指定一个javascript函数来处理这个返回值(如上例所示)。

 

l      如何传递参数

n        如果要调用的方法有参数,则将参数放在前面

l      如何处理返回值

n        定义一个函数来处理返回值,这个函数有一个参数,就是JavaBean方法的返回值

 

DWR Javascript库中常用函数的使用

l      设置异步/同步模式

n        默认情况下,DWR以异步的方式跟服务器通信,即不同方法可以同时向服务器发送请求,如果想要改为同步的方式,可以调用:dwr.engine.setAsync(false);

l      获得对某个页面元素对象的引用

n        $(“元素的ID或name”)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值