JSP的那些事儿(2)----DWR2.0 的配置和使用

分类: Web开发 JAVA 2009-04-23 15:43 999人阅读 评论(0) 收藏 举报
 
 

刚开始用JSP开发网站项目,发现下拉菜单级联不及ASP.NET那么便利,于是寻找JAVA中的AJAX框架,至于AJAX是什么,本文就不再叙述,而DWR是不得不说的一个亮点,在网络上找了很多资料,按照过程一步步的配置,结果发现还是没有显示,今天才终于获取成功,所以决定花点时间写本篇文章帮助“菜鸟一族”脱离不会配置和使用DWR的苦海。

如有什么意见可以提出。

如有转载请注明:本文源自于blog.csdn.net/rocket5725

《DWR 2.0配置与使用》目录大致包括

1、DWR 2.0简介

2、DWR 2.0下载以及所需文件

3、DWR 2.0配置过程

4、DWR 2.0使用

5、DWR 2.0参考资料

********************************************************************

一、DWR 2.0简介

DWR是一个可以允许你去创建AJAX WEB站点的JAVA开源库。它可以让你在浏览器中的Javascript代码调用Web服务器上的Java代码,就像在Java代码就在浏览器中一样。 DWR包含2个主要部分:
 一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。
 运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。
DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。 Java从根本上讲是同步机制,然而AJAX却是异步的。所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调 (callback) 功能的DWR。

这个图片显示了DWR如何选择一个下拉列表的内容作为JavaScript 的onclick事件的结果。

DWR动态在JavaScript里生成一个AjaxService类,去匹配服务气端的代码。由eventHandler去调用它,然后DWR处理所有的远程细节,包括倒置 (converting) 所有的参数以及返回Javascript和Java之的值。在示例中,先在eventHandler方法里调用AjaxService的getOptions() 方法,然后通过反调 (callback) 方法populateList(data) 得到返回的数据,其中data就是String[]{"1", "2", "3"},最后再使用DWR utility 把data加入到下拉列表。 好了,DWR介绍完了,现在大家肯定很想知道如何做出第一个DWR吧!

二、DWR 2.0下载以及所需文件

目前dwr最高版本为Version 3.rc1,但其还不稳定,所以强力推荐使用DWR2.0或者更老版本1.0,具体下载的地址如下:

1、dwr2.0 jar包:https://dwr.dev.java.net/files/documents/2427/101132/dwr.jar

2、war事例:https://dwr.dev.java.net/files/documents/2427/101133/dwr.war

war只是一个例子,直接放到tomcat/webapp下就可以使用,对于想立即感受dwr功能的用户可以直接下载使用。

3、dwr2.0必须文件commons-loggin.jar:commons-logging

官网的原话是:From version 2.0, DWR also requires commons-logging.

从2.0版本后必须使用该jar包,用户必须下载,否则无法正常使用,本人第一次配置失败就是没有认真阅读官方提供的文档。希望大家不要犯同样错误。

把上面这些文件下载后,就可以开始进行配置工作了。

三、DWR 2.0配置过程

先假设:http://localhost:8080/youproject/是一个在本机可以运行的应用程序。配置工作依次按照以下步骤操作:

注意:以下的目录均为项目下的目录

1、将dwr2.0 jar以及commons-loggin.jar拷贝到WEB-INF/lib下。

2、修改WEB-INF/web.xml,在该文件添加以下内容:

注意事项:要把<servlet>和其他<servlet>放在一起,<servlet-mapping>要和其他<servlet-mapping>放在一起

  1. <servlet>
  2. <servlet-name>dwr-invoker</servlet-name>
  3. <display-name>DWR Servlet</display-name>
  4. <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  5. <init-param>
  6. <param-name>debug</param-name>
  7. <param-value>true</param-value>
  8. </init-param>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>dwr-invoker</servlet-name>
  12. <url-pattern>/dwr/*</url-pattern>
  13. </servlet-mapping>

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-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、在web.xml的目录下新建文件dwr.xml.添加内容如下:

  1. <?xml version="1.0" encoding="GBK"?>
  2. <dwr>
  3. <allow>
  4. <create creator="new" javascript="JDate">
  5. <param name="class" value="java.util.Date"/>
  6. </create>
  7. </allow>
  8. </dwr>

<?xml version="1.0" encoding="GBK"?>
<dwr>
<allow>
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>
</allow>
</dwr>

4、到此步为止,dwr的配置工作基本结束了,但是如果用户需要添加其他的class文件,直接在dwr.xml中添加即可。为方便测试,在此只添加java.util.Date类。

四、DWR 2.0使用

配置结束后,用户即可使用dwr2.0了,具体测试页面为:http://localhost:8080/youproject/dwr

浏览页面如下:

Classes known to DWR:

JDate就是可以使用的类,用户点击它后可以进入测试页面进行测试该类中的所有方法。

Methods For: JDate (java.util.Date)

To use this class in your javascript you will need the following script includes:

  <script type='text/javascript' src='/app/dwr/interface/JDate.js'></script>
<script type='text/javascript' src='/app/dwr/engine.js'></script>

In addition there is an optional utility script:

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

Replies from DWR are shown with a yellow background if they are simple or in an alert box otherwise.
The inputs are evaluated as Javascript so strings must be quoted before execution

到此为止,dwr2.0测试成功。如果要在页面中使用dwr2.0,则必须注意上面的提示信息,需要添加几个js代码。

五、DWR 2.0参考资料

1、DWR官方网站:http://getahead.ltd.uk/dwr/
2、JavaScud Wiki:http://wiki.javascud.org/display/dwrcn/Home
3、IBM中国:http://www.ibm.com/developerworks/cn/

4、学习文章,推荐以下三篇文章,由林信良台湾的技术作家写的:
DWR 入門與應用(一):
http://blog.csdn.net/caterpillar_here/archive/2006/09/06/1186566.aspx
DWR 入門與應用(二):
http://blog.csdn.net/caterpillar_here/archive/2006/09/18/1239538.aspx
DWR 入門與應用(三):
http://blog.csdn.net/caterpillar_here/archive/2006/09/30/1311605.aspx

JSP的那些事儿(2)---- DWR2.0 的配置和使用的更多相关文章

  1. Linux Tomcat 6.0安装配置实践总结

    系统环境: Red Hat Enterprise Linux Server release 5.7 (Tikanga)  64位 Tomcat下载 从官方网站 http://tomcat.apache ...

  2. Apache2.2+Tomcat7.0整合配置详解

    一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...

  3. CentOS 7.0安装配置Vsftp服务器

    一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  4. Solr4.0 如何配置使用UUID自动生成id值

    原文链接http://blog.csdn.net/keepthinking_/article/details/8501058#comments 最近学习了Lucene,随便也学习了Solr,Solr规 ...

  5. 网站开启https后加密协议始终是TLS1.0如何配置成TLS1.2?

    p { margin-bottom: 0.1in; line-height: 120% } 网站开启https后加密协议始终是TLS1.0如何配置成TLS1.2? 要在服务器上开启 TLSv1.,通常 ...

  6. 驱动开发学习笔记. 0.01 配置arm-linux-gcc 交叉编译器

    驱动开发读书笔记. 0.01 配置arm-linux-gcc 交叉编译器 什么是gcc: 就像windows上的VS 工具,用来编译代码,具体请自己搜索相关资料 怎么用PC机的gcc 和 arm-li ...

  7. RHEL 7.0 本地配置yum源

    RHEL 7.0 本地配置yum源  yum简介  yum = Yellow dog Updater, Modified 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它 ...

  8. CentOS 7.0系统安装配置LAMP服务器(Apache+PHP+MariaDB)

    CentOS 7.0接触到的用户是比较少的,今天看了站长写了一篇关于centos7中安装配置LAMP服务器的教程,下面我把文章稍加整理一下转给大家学习交流,希望例子能给各位带来帮助哦.   cento ...

  9. CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

随机推荐

  1. Add Binary <leetcode>

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  2. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  3. C++ dll调用

    HINSTANCE PH=LoadLibrary(_T("APlayerCaller.dll")); HWND hwnd = AfxGetMainWnd()->m_hWnd; ...

  4. 2015年毕业生收到的offer和薪资透露

    个人情况:全国排名70多的大学,非211,计算机专业硕士 收到的offer: 苏州同程旅游--6k/月 ,自己要了这么多,就给了这么多,没有规范.苏州蜗牛科技--8k/月 ,给了个口头offer,要去 ...

  5. Python基础(七)内置函数

    今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. 1 2 3 ...

  6. dojo 加载Json数据

    1.今天研究了dojo datagrid加载WebService后台传上来的数据.研究来研究去发现他不是很难.用谷歌多调试一下就好了. 2.看很多例子,这个例子能够更好的帮我解决问题:https:// ...

  7. [转载]Altium规则详解及设置

    在Altium中进行PCB的设计时,经常会使用规则(Rule)来进行限定以确定线宽孔径等参数,此文将简要的介绍规则中的一些标量代表了什么. Electrical——电气规则.安全间距,线网连接等 Ro ...

  8. Bootstrap 栅格系统(转载)

    源地址:http://www.cnblogs.com/linjiqin/p/3559800.html Bootstrap 栅格系统 目录1.简介2.栅格选项3.列偏移4.嵌套列5.列排序 1.简介Bo ...

  9. cmd.ExecuteReader(CommandBehavior.CloseConnection)

    有些开发人员坚持认为,如果您设置 CommandBehavior.CloseConnection 选项,则 DataReader 及其相关联的连接会在 DataReader 完成数据读取时自动关闭.这 ...

  10. 《CSS3秘籍》(第三版)-读书笔记(4)

    第12章  CSS页面布局 网页布局的类型: 固定宽度.不管浏览器窗口的宽度多大,网页内容的宽度始终保持不变. 流式.流式设计采用百分比,它会根据浏览器的宽度(无论有多宽)自动进行调整.网页会随着访问 ...