DWR使用

一、DWR简介

DWR是一个可以允许你去创建AJAX WEB站点的JAVA开源库。它可以让你在浏览器中的JavaScript代码调用Web服务器上的Java代码,就像Java代码运行在浏览器中一样。

DWR包含2个主要部分:
1.一个运行在服务器端的Java Servlet,他处理请求并且向浏览器发回响应。
2.运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页

1.将DWR放入你的工程
从http://directwebremoting.org/dwr/download 下载dwr.jar包 放入你的工程/WEB-INF/lib下

2.编辑配置文件
web.xml
<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>

dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
    <allow>
        <create creator="new" javascript="Hello">
            <param name="class" value="onlyfun.caterpillar.Hello" />
        </create>
    </allow>
</dwr>

package onlyfun.caterpillar;
public class Hello {
    public String hello(String name) {
        return name;   
    }
}

页面
要引用几个dwr的js文件,engine.js为必要文件,util.js需要用到其中功能时加入。
引用dwr自动生成的js文件,dwr/interface/Hello.js ,这个js的文件名需要和dwr.xml中配置的一致。

Hello.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=BIG5">
       <title>第一個DWR程式</title>
       <script type='text/javascript' src='dwr/interface/Hello.js'></script>
       <script type='text/javascript' src='dwr/engine.js'></script>
       <script type='text/javascript' src='dwr/util.js'></script>
       <script type='text/javascript' src='hello.js'></script>
    </head>
    <body>
       <input id="user" type="text" /><input type='button' value='哈囉' onclick='hello();' />
       <div id="result"></div>
    </body>
</html>

hello.js
<!--
function hello() {
    //$为util.js中的功能相当于document.getElementById
    var user = $('user').value;
    Hello.hello(user, callback);
}

//回调函数(callback)
function callback(msg) {
    DWRUtil.setValue('result', msg);
}
-->


dwr.xml
一般来说只需要一个dwr.xml文件,并且会被设为默认位置WEB-INF/dwr.xml
<init-param>
  <param-name>config*****</param-name>
  <param-value>WEB-INF/dwr.xml</param-value>
  <description>What config file do we use?</description>
</init-param>

<servlet>
  <servlet-name>dwr-user-invoker</servlet-name>
  <servlet-class>
    org.directwebremoting.servlet.DwrServlet
  </servlet-class>
  <init-param>
    <param-name>config-user</param-name>
    <param-value>WEB-INF/dwr-user.xml</param-value>
  </init-param>
</servlet>
<servlet>
  <servlet-name>dwr-admin-invoker</servlet-name>
  <servlet-class>
    org.directwebremoting.servlet.DwrServlet
  </servlet-class>
  <init-param>
    <param-name>config-admin</param-name>
    <param-value>WEB-INF/dwr-admin.xml</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-admin-invoker</servlet-name>
  <url-pattern>/dwradmin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>dwr-user-invoker</servlet-name>
  <url-pattern>/dwruser/*</url-pattern>
</servlet-mapping>


<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
    <!-- 仅当需要扩展DWR时才需要 -->
    <init>
        <creator id="..." class="..." />
        <converter id="..." class="..." />
    </init>
    <allow>
        <create creator="spring" javascript="test">
            <param name="beanName" value="test"/>
            <include method="list"/>
            <include method="getAll"/>
        </create>
        <create creator="new" javascript="user">
            <param name="class" value="bean.User" />
            <include method="checkLogin" />
        </create>
        <convert converter="bean" match="bean.User">
            <param name="include" value="username,password" />
        </convert>
    </allow>
     <!-- 有必要告诉DWR方法签名 -->
    <signatures>...</signatures>
</dwr>


<init>标签
如果你想去定义一个新的Creator 或者Converter,就要在此被申明。
这种方式很像Java中的import语句

<allow>标签
allow部分定义了DWR能够创建和转换的类。

Creator
creator属性
new:指用java的new操作符创建对象
spring:通过spring framework创建对象
struts:使用struts的FormBean

scope属性
选项可以是: application, session, request 和page

param 元素
定义访问的具体java类。

include 和 exclude 元素
<create creator="new" javascript="Fred">
  <param name="class" value="com.example.Fred" />
  <include method="setWibble" />
</create>


Converter
你可以为某一个单独的类打开转换器:
<convert converter="bean" match="your.full.package.BeanName"/>
如果要允许转换一个包或者子包下面的所有类,可以这样写:
<convert converter="bean" match="your.full.package.*"/>


<signatures>标签
<signatures>
  <![CDATA[
  import java.util.List;
  import com.example.Check;
  Check.setLotteryResults(List<Integer> nos);
  ]]>
</signatures>


DWR util.js工具包的使用
$()
DWRUtil.getText(id)
DWRUtil.getValue(id)
DWRUtil.setValue(id,value)
DWRUtil.getValues()
DWRUtil.setValues()
DWRUtil.addOptions and DWRUtil.removeAlloptions
DWRUtil.addRows and DWRUtil.removeAllRows
DWRUtil.onReturn
DWRUtil.toDescriptiveString
DWRUtil.useLoadingMessage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值