当前位置: 首页 > 图文教程 > Java技术 > Web框架 > Web框架:DWR中signatures标签的使用

Web框架
Struts开发过程中的异常处理机制
ServletContext与ServletConfig分析
使用Ajax的挑战
Web程序从Struts向Stripes框架的移植
Shale不是Struts
Web框架:基于Ajax的应用程序架构汇总
Web框架:使用Ajax技术开发Web应用程序
Web框架:简单理解Hibernate三种状态的概念及互相转化
Web框架:浅谈Struts2中拦截器应用
Web框架:Struts2中的Action
Web框架:Struts2高级文件上传
Web框架:小编谈嵌入XFire服务介绍及实现
Web框架:DWR中signatures标签的使用
WEB框架:小编总结Struts2的经典输入校验
WEB框架:小编祥谈Struts2的数据标签中Action与Bean标签的使用
Web框架:小议struts2类型转换
Web框架:小编浅谈Struts2的pub-sub事件模型
Web框架:小编简述JSF
Web框架:Hibernate事务管理
Web框架:Struts高级特性(StrutsAdvancedFeature)验证

Web框架:DWR中signatures标签的使用


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 241 ::
收藏到网摘: n/a

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

DWR包含2个主要部分:

?1.一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。

?2.运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。

DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从JavaJavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。 Java从根本上讲是同步机制,然而AJAX却是异步的。所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调 (callback) 功能的DWR

DWR使用反射机制在转换过程中找到它应该使用的类型。有时候类型的信息无法获得,在这种情况下你要在此处用方法签名给予暗示。 signatures段使DWR能确定集合中存放的数据类型。例如下面的定义中我们无法知道list中存放的是什么类型。 public class Check { public void setLotteryResults(List nos) { ... } }

signatures段允许我们暗示DWR应该用什么类型去处理。格式对以了解JDK5的泛型的人来说很容易理解。 <signatures> <![CDATA[ import java.util.List; import com.example.Check; Check.setLotteryResults(List<Integer> nos); ]]> </signatures>

将来的DWR版本会使用一个更正式的解析器,这个编译器会基于官方Java定义,所以你最好不要使用太多这个不严格的东西。 signatures段只是用来确定泛型参数中的类型参数。DWR会自己使用反射机制或者运行时类型确定类型,或者假设它是一个String类型。所以: 不需要signatures - 没有泛型参数: public void method(String p); public void method(String[] p);

需要signatures - DWR不能通过反射确定: public void method(List<Date> p); public void method(Map<String, WibbleBean> p);

不需要signatures - DWR能正确的猜出: public void method(List<String> p); public void method(Map<String, String> p);

不需要signatures - DWR可以通过运行时类型确定: public List<Date> method(String p);

没有必要让Javascript中的所有对象的key都是String类型 - 你可以使用其他类型作为key。但是他们在使用之前会被转换成String类型。DWR1.xJavascript的特性把key转换成StringDWR2.0可能会用toString()方法,在服务段进行这一转换。