初学DWR开源框架

该程序的完整代码下载地址:http://download.csdn.net/detail/yanglun1/8779629

首先来说明一些什么是DWR,它能用来做什么?

DWR(Direct Web Remoting)是一个用于改善Web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含Ajax技术的网站。它可以允许在浏览器里的代码调用运行在Web服务器上的java方法,就像它就在浏览器里一眼。它包含两个主要部分:一部分允许JavaScript从Web服务器上一个遵循了Ajax原则的Servlet或Action中获取数据;另一部分是一个JavaScript库可以帮助网站开发人员
轻松地利用获取的数据来动态改变网页的内容。

比较一下jQuery和DWR:首先要说的就是jQuery是一个.js文件,DWR则是一个.jar文件;再有就是它们的主要功能肯定是不相同的,jQuery的特点是前端功能强大、灵活,对页面中的DOM控制自如,但在MVC或是JSP+JAVABEAN+SERVLET模式中,前端页面的JavaScript如果要读取后台Java类中的方法或属性,此时jQuery就显得有点苍白无力。不过还好,DWR可以帮助我们解决这一问题。将jQuery和DWR配合起来实现struts的Ajax是不是会很完美,的确是这样的。因为DWR有强大的Java类属性读取功能,而jQuery有灵活、强大的前台DOM操作功能,也就是DWR负责实现在JavaScript中调用远程java方法,而获取的数据则交给jQuery显示出来。

下面就针对DWR框架来做我们第一个小程序。

首先我们需要的是两个.jar包,一个是commons-logging-1.0.4.jar,该包是日志控制文件,如果没有该jar包,控制台会报告日志控制方面的错误,一个则是我们的核心jar包dwr.jar。

还是像以往项目博客一样,先看整体目录结构:

其中要解释一点,其中的ajaxserver.jsp和index2.jsp是我之前写的东西,在此不涉及,我也不想在项目中删除,还请忽略。

再接下来要做的就是配置DWR框架,就像web.xml文件一样,我们需要在WEB-INF下创建dwr.xml配置文件。dwr.xml的配置信息如下:

<dwr>

<allow>

<!-- javascript指定在Javascript代码中访问对象时使用的名称 -->

<create
creator="new"
javascript="Hello">

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

</create>

</allow>

</dwr>

下面是配置文件中常用的一些标签及解释:

<dwr>标签用来包含DWR所有的配置信息,处于最顶层。在其下还有以下标签:

<allow>标签中可以暴露给JavaScript访问的东西

<create>指定JavaScript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定Java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例。JavaScript="testClass"属性指定JavaScript代码访问对象时使用的名字。

<param>指定要公开给JavaScript访问的东西

<include>指定要公开给JavaScript的方法。不指定的话就是公开所有方法。

<exclude>与<include>标签相对,该标签指定被禁止访问的方法。

<convertor>负责这些方法的参数和返回类型。

<convertor>下还有两个重要的属性,分别是converter和match,其作用是时converter="bean"属性指定转换的方式采用JavaBean命名规范,match="com.dwr.TestBean"属性指定要转换的JavaBean的名称。

然后我们再看web.xml中的配置:

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<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>

<filter>

<filter-name>strutsDemo01</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

<init-param>

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

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

</init-param>

</filter>

<filter-mapping>

<filter-name>strutsDemo01</filter-name>

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

</filter-mapping>

最后我们在看一下显示界面index.jsp中的代码:

在此还需要解释一点就是,就像你们看到的,我用了两种方式去显示我的界面。第一种是使用了DWR的方式去设置页面的属性,value等,第二种方式则是用jQuery的方式,我比较推荐使用这一种,毕竟在页面展现方面jQuery更强大一些。但是不管你页面是怎么展示出来的,其中获取数据都是通过DWR来获取的,这是毋庸置疑的。此处的Hello对应的是你在dwr.xml配置文件中配置的名字,而sayHello则是我们java文件中的一个方法。

到此这个小程序就结束了,实现的功能也很简单,就是在一个文本框里输入一些数字,然后单击按钮,在当前页面显示出你输入的文字。对于大神来说的确有点简单了,但对于初学者来说还是可以作为入门基础来看的。

时间: 2024-12-29 10:31:26

初学DWR开源框架的相关文章

J2EE开发常用开源框架技术(转)

主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层:1)Hibernate这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射对 于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装Que

【框架】[Spring3]下载安装、开源框架与IoC控制反转详解

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 昨天刚刚初学Spring3,也许Spring3有点老了哈,不过还是先把3学了再去学习4吧,首先先介绍一下如何去下载Spring的必须包吧. (本篇博客适用于初学Spring的朋友) java spring4现在不推荐使用xml配置文件- 当然啦,这些知识点在Spring4还是可以用的. 不过我在这里详解的还是Spring3哈,见谅~ 下载SpringJAR包/文档: Spring官

J2EE开发常用开源框架技术(转)

1持久层:1)Hibernate这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射对 于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做 HibernateDAO.也可以直接利用它2) iBATIS另一个ORM工具,Apache的,没有Hibernate那么集成,自由度比较大 2:

Android开源框架ImageLoader:加载图片的三级缓存机制

前言:可从  https://github.com/nostra13/Android-Universal-Image-Loader 下载三级缓存机制的开源框架.下文简单介绍该框架中主要的常用方法,掌握这些方法,基本就可应对多数图片下载的需求. 注意:以下代码为示意代码片断,仔细读一下应能知道怎么用.蓝色表示为开源框架中的类. 1.初始化ImageLoader类对象: ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.

Android开源框架 Android-Universal-Image-Loader

Android开源框架Universal-Image-Loader就像图片加载守护者,为我们提供了丰富的功能特性: (1)多线程加载图像(异步或同步): (2)高度可定制化imageloader配置(线程池.图片下载器.解码器.内存和磁盘缓存.显示图像选项等): (3)每一个显示图像有许多自定义选项(存根图片,缓存开关,解码选项,位图处理和显示等): (4)支持内存和磁盘上的图像缓存(设备的文件系统和SD卡): (5)监听加载过程(包括下载进度): 下来我们详解如何配置使用Universal-I

android-async-http开源框架的详细解释

Android网络请求库:android-async-http开源框架 之前有一篇描述了客户端请求服务器端的方式-Post的请求方式.今天介绍一个请求服务器的一个开源库-android-async-http库. 1. 概念: 这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法(匿名内部类)处理请求结果. 2. 特征: (1).处理异步Http请求,并通过匿名内部类处理回调结果 **(2).**Http异步请

《开源框架那点事儿25》:对框架模板引擎实现方式的改造实录

点滴悟透设计思想,Tiny模板引擎优化实录! 增加框架设计兴趣小组:http://bbs.tinygroup.org/group-113-1.html Tiny模板引擎的实现方式原来是採用的编译方式,近期发生了一些问题.因此我认为有必要把编译方式调整为解释方式,为此就開始了此次实现活动. 编译方式存在的问题 当时採用编译方式.主要是考虑到编译方式在执行时不必再去遍历语法树.因此就採用了编译方式. 可是在实际应用其中,出现了例如以下问题: 文件路径冲突的问题 因为採用的是编译方式,这个时候就存在在

六款值得推荐的android(安卓)开源框架简介

1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http 项目地址:https://github.com/loopj/android-async-http

Android酷炫实用的开源框架(UI框架)

前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架.DB框架). 1.Side-Menu.Android分类侧滑菜单,Yalantis 出品.项目地址:https://github.com/Yalantis/Side-Menu.Android2.Context-Menu.Android可以方便快速集成漂亮带有动画效果