DWR框架入门

系统 1368 0

dwr框架(菜鸟入门)

该文可以看做是作者的学习笔记,部分内容可以认为是个人理解,请读者注意辨别。

DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.
DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.

要使用dwr要先下载 http://getahead.org/dwr/
下载内容
DownloadVersion 2.0.3Size
JAR File: dwr.jar(489Kb)
WAR File:dwr.war(2.14Mb)
Sources:dwr-2.0.3-src.zip (20.78Mb)

首先看下工程里面:

DWR框架入门

多了dwr.jar(dwr jar包),dwr.xml(dwr的配置文件),dwr20.dtd(在编辑xml配置文件时,提供自动提示功能),其实web.xml配置文件也配置了dwr的servlet,来看下:

DWR框架入门

至于这个url为什么还要用"/dwr/*"还不是很清楚,我想的是如果客户端有请求过来经过dwr的都被指定的servler处理(个人理解)。

在来看下dwr.xml的配置:

无标题

红线框的是关于dwr智能提示的配置,里面蓝线框的是上面提到的dwr20.dtd的路径,如果路径或者文件名不对,那么前面就会出现警告:

如果出错了也无所谓,只不过是不能智能提示,如果你能把这写节点记住的话,那就不需要了,否则就把dwr20.dtd拷贝到与dwr.xml相同的目录下。

在看重要的部分dwr的节点:

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

<create>标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript="sayHello"属性指定javascript代码访问对象时使用的名称。</create>

name这里一般用class指一个类,value指类的全名,包括包名。

好了配置文件我们算做好了,在来看看jsp中在JavaScript中所做的配置。

第一个是dwr的引擎js文件,第二个是用户自己要访问java的类的js文件。

在来看看JavaScript调用java类的方法

DWR框架入门

注意这里的sayHello还有上面配置的sayHello.js(文件名)要和dwr.xml中配置JavaScript的名字要相同,否则就报错。

下来看下java类中的方法。

DWR框架入门

在上面的JavaScript中有人就想问,为什么调用Hello的方法时要传入一个函数。来说下,第一个是java方法的参数,第二个方法是回调函数,这个函数是负责接受JavaScript调用java类后返回的结果。

到这里一个简单的dwr框架就搞完了,来先看下是否成功,启动jsp的服务器,然后下图:

DWR框架入门

点击查看文件,先把里面所有的东西删除了,然后浏览你的jsp页面,就出出现一下2个文件

就是我们刚才配置的两个js文件,如果客户端通过JavaScript调用sayHello.Hello的话,那么就会由sayHello.js处理,然后转交给engine引擎,之后由引擎向服务器请求。

来看下效果,

DWR框架入门

很好,看来运行很好,但是发现个问题,我刚才在配置文件里配置的com.dwr.sayHello中所有的方法我们都可以访问的嘛?其实并不是这样的,要是不设置的话,就默认允许调用所有的方法,要是想要指定的方法允许访问,那么就要在dwr.xml中配置了。来看:

DWR框架入门

好了,具体配置就是这样的。

原文地址: http://blog.sina.com.cn/s/blog_5a39b0c70100bgdh.html

还有一片续: http://blog.sina.com.cn/s/blog_5a39b0c70100bgfy.html

DWR框架入门


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论