`
lynnwoo
  • 浏览: 33996 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

DWR(Direct Web Remoting)js调用java方法

    博客分类:
  • dwr
阅读更多
DWR(Direct Web Remoting)是一个用于改善web页面与java类交互的远程服务器端Ajax开源框架。(JavaScript访问java类中的方法)

1.          配置web.xml
<!-- 配置dwr处理器 -->
        <servlet>
                <servlet-name>dwr-invoker</servlet-name>
                <servlet-class>
                        org.directwebremoting.servlet.DwrServlet
                </servlet-class>
        </servlet>

        <servlet-mapping>
                <servlet-name>dwr-invoker</servlet-name>
                <url-pattern>/dwr/*</url-pattern>
        </servlet-mapping>


2.           完成需要被调用的类,即被调用者
User.java

package lynn;

 

public class User {

        

        // 登陆ID,主键唯一

        private String id;

        // 姓名

        private String name;

        // 口令

        private String password;

        // 电子邮件

        private String email;

//各属性的get和set方法

... ...

UserDAO.java

package lynn;

 

import java.util.HashMap;

import java.util.Map;

 

public class UserDAO {

        // 存放保存的数据

        private static Map<String, User> dataMap = new HashMap<String, User>();

 

        // 持久用户

        public boolean save(User user) {

                if (dataMap.containsKey(user.getId()))

                        return false;

                System.out.println("下面开始保存用户");

                System.out.println("id:" + user.getId());

                System.out.println("password:" + user.getPassword());

                System.out.println("name:" + user.getName());

                System.out.println("email:" + user.getEmail());

                dataMap.put(user.getId(), user);

                System.out.println("用户保存结束");

                return true;

        }

 

        // 查找用户

        public User find(String id) {

                return (User) dataMap.get(id);

        }

}


3.配置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="DWRUserAccess">

                        <param name="class" value="lynn.DWRUserAccess" />

                </create>

                

                <convert converter="bean" match="lynn.User" />

        </allow>

</dwr>


1)<allow>标签中包括可以暴露给javascript访问的东西。

2)<create>标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。

creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" DWRUserAccess"属性指定javascript代码访问对象时使用的名称,即所要生产的js的名称,必须与html中导入的js名称一致。

<param>标签指定要公开给javascript的java类名。

<include>标签指定要公开给javascript的方法。不指定的话就公开所有方法。

<exclude>标签指定要防止被访问的方法。

3)<creator>标签负责公开用于Web远程的类和类的方法,<convertor>标签则负责这些方法的参数和返回类型。

convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。DWR自动地在Java和JavaScript表示之间调整简单数据类型。这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。DWR也能把JavaBean转换成JavaScript 表示,但是出于安全性的原因,要求显式的配置,<convertor>标签就是完成此功能的。converter="bean"属性指定转换的方式采用JavaBean命名规范,match="lynn.user"属性指定要转换的javabean名称,标签指定要转换的JavaBean属性。

4.完成html,即调用者
test.html

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

<HTML>

        <HEAD>

                <TITLE>DWR测试</TITLE>

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

                <script src="dwr/engine.js"></script>

                <script src="dwr/util.js"></script>

                <script src="dwr/interface/DWRUserAccess.js"></script>

        </HEAD>

        <SCRIPT LANGUAGE="JavaScript">

function saveFun(data) {

        if (data) {

                alert("注册成功!");

        } else {

                alert("登陆ID已经存在!");

        }

}

 

function OnSave() {

 

        var userMap = {};

        userMap.id = regForm.id.value;

        userMap.password = regForm.password.value;

        userMap.name = regForm.name.value;

        userMap.email = regForm.email.value;

        DWRUserAccess.save(userMap, saveFun);

}

 

function findFun(data) {

        if (data == null) {

                alert("无法找到用户:" + queryForm.id.value);

                return;

        }

        alert("找到用户,nid:" + data.id + ",npassword:" + data.password + ",nname:"

                        + data.name + ",nemail:" + data.email);

}

 

function OnFind() {

        DWRUserAccess.find(queryForm.id.value, findFun);

}

</SCRIPT>

        <BODY>

                <B>用户注册</B>

                <br>

                ------------------------------------------------

                <Br>

                <form name="regForm">

                        登陆ID:

                        <input type="text" name="id">

                        <br>

                        口 令:

                        <input type="password" name="password">

                        <br>

                        姓 名:

                        <input type="text" name="name">

                        <br>

                        电子邮件:

                        <input type="text" name="email">

                        <br>

                        <input type="button" name="submitBtn" value="提交" onclick="OnSave()">

                        <br>

                </form>

 

                <br>

                <br>

                <B>用户查询</B>

                <br>

                ------------------------------------------------

                <Br>

                <form name="queryForm">

                        登陆ID:

                        <input type="text" name="id">

                        <br>

                        <input type="button" name="submitBtn" value="提交" onclick="OnFind()">

                        <br>

                </form>

                <br>

        </BODY>

</HTML>


1)必须导入

<script src="dwr/engine.js"></script>

<script src="dwr/util.js"></script>

<script src="dwr/interface/DWRUserAccess.js"></script>

其中engine.js和util.js都在dwr-2.0.3-src.zip的java/org/dwrwebremoting/目录下。DWRUserAccess.js是自动生产的,注意路径必须是*/interface/*.js。

2)调用java方法

function saveFun(data) {

        if (data) {

                alert("注册成功!");

        } else {

                alert("登陆ID已经存在!");

        }

}

 

function OnSave() {

 

        var userMap = {};

        userMap.id = regForm.id.value;

        userMap.password = regForm.password.value;

        userMap.name = regForm.name.value;

        userMap.email = regForm.email.value;

        DWRUserAccess.save(userMap, saveFun);

}


DWR组件名称.调用的java方法名称(方法参数,方法的返回值)

5.DWR和Spring的整合
需要更改的地方:

1)Web.xml中添加

<!--初始化WebApplicationContext-->

        <context-param>

                <param-name>contextConfigLocation</param-name>

                <param-value>

                        /WEB-INF/applicationContext.xml

                </param-value>

        </context-param>

        <listener>

                <listener-class>

                        org.springframework.web.context.ContextLoaderListener

                </listener-class>

</listener>


注意applicationContext.xml的路径

2)applicationContext.xml中配置bean

<bean id="DWRUserAccess" class="lynn.DWRUserAccess"></bean>

3)修改dwr.xml

<dwr>

        <allow>

                <create creator="spring" javascript="DWRUserAccess">

                        <param name="beanName" value="DWRUserAccess" />

                </create>

                

                <convert converter="bean" match="lynn.User" />

        </allow>

</dwr>


creator的值可以是new、spring、struts。

<param>标签配置被调用的bean。
分享到:
评论

相关推荐

    Direct Web Remoting3.0

    DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...

    DWR框架包(包含所有jar、js)

    DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...

    DWR实现DEMO

    DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...

    ajax开发框架DWR.jar

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

    dwr.jar实现Ajax小例子

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

    AJAX框架:dwr.jar

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

    ajax dwr 2.0 框架 jar包 中文官方文档 天涯浪子

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单. DWR 是一个开放源码的使用 Apache 许可协议的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。...

    dwr入门+springmvc实现

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

    Dwr3.0 与 Dwr2.0 区别

    DWR(Direct WebRemoting)是一个WEB远程调用框架,能够在javascript直接调用java方法,而不必去写一大堆的javascript代码,利用这个框架可以让AJAX开发变得很简单.

    使用DWR实时推送后台环境量和报警数据

    DWR(逆向Ajax),Direct Web Remoting是一个开放源码的使用Apache许可协议的解决方案,它包含服务器端Java库、一个 DWR Servlet以及 JavaScript库。它的实现是基于Ajax的,可实现无刷新的效果。这个框架最大的优点...

    DWR框架及其整合SSH

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

    代码学习笔记

    dwr DWR(Direct Web Remoting)是在Java EE中较流行的AJAX框架,它的最大优势就是可以像使用本地的Javascript函数一样,调用服务器上的Java方法。

    DWR实现三级联动.pdf

    dwr:direct web remoting 是我们通过javascript方便的操作业务方法。我以一个三级联动下拉框的例子给大家演示dwr是如何实现的。我用到的技术有spring 2.0.5 ,dwr2.0.5,hibernate3.2.3.ga,struts1.2.9,主要涉及到...

    DWR.xml配置文件说明书(含源码)

    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt; 整个配置文件的大体结构如下: &lt;dwr&gt; &lt;create creator="..." javascript="..." scope="..."&gt; ...

    DWR简单实用

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

    DWR开发包常规客户端服务器端面向对象编程

    DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd"&gt; &lt;dwr&gt; &lt;allow&gt; &lt;!-- 通过NEW创建对象 --&gt; &lt;create creator="new" javascript="JDate"&gt; ...

    Ajax实例2 改善用户体验

    使用 Ajax 技术可以改善传统应用中一些不方便的地方,从而为用户的操作带来便利性。...另外,本章还简单介绍了DWR(Direct Web Remoting)框架和Rico LiveGrid 组件的使用,并解释了AHAH 与Ajax 之间的关系。

    js脚本中执行java后台代码方法解析

    使用场景:关闭页面弹窗时执行sql语句。 其实js里执行sql语句有多种方式。 方式一:直接在js代码里调用sql语句,原则上不能...DOCTYPE dwr PUBLIC -//GetAhead Limited//DTD Direct Web Remoting 2.0//EN http://www.ge

    AJAX实践DWR篇

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

    Ajax详解.rar

    第 14部分:面向 Java 开发人员的 Ajax 结合 Direct Web Remoting 使用 Ajax 154 1.1 DWR 是什么? 155 1.2 关于示例 155 1.3 实现目录 156 1.4 测试部署 157 1.5 调用远程对象 158 1.6 实现购物车 160 1.7 ...

Global site tag (gtag.js) - Google Analytics