二级java:DWR的Converter实现原理简单分析及应用
来源:优易学  2011-6-25 14:48:58   【优易学:中国教育考试门户网】   资料下载   IT书店
 我们在应用 DWR 调用远程方法时涉及到 JS 与 JAVA 之间参数和返回值的数据转换,例如:
  JS 的 123 与 Java 的 int  或 Integer、long 间的转换
  JS 的 "2009-06-23" 与 Java 的 java.util.Date 之间的转换
  JS 的 "[1,2,3]" 与 Java 的 int[] 间的转换
  JS 的 "{id:123, name: 'Unmi'}" 与 Java 的 Class Person{int id; String name} 间的转换
  或者更复杂的嵌套类型( "{id:123, name: 'Unmi', blogs:['http://unmi.blogjava.net','http://blog.csdn.net/kypfos']}" ) 与 Java 类型间的转换,等等。那么这一切是怎么进行的呢?其实我们见识过很多组件的类型映射,如 Java 的 PropertyEditor、Hibernate(UserType)、iBatis(TypeHandler) 的类型映射,Struts1/2 中 Form/Model 用的 Converter 等。
  这里我来稍稍分析 DWR 的 Converter 实现,以及说明如何定制自己的 Converter。本文所用 DWR 是 2.0.5 版。
  1. DWR 内置的 Converter 及应用类型
名称 应用类型 转换器
null void,java.lang.Void NullConverter
enum   EnumConverter
primitive boolean,byte,short,int,long,float,double,char,

java.lang.Boolean,java.lang.Byte,java.lang.Short,

java.lang.Integer,java.lang.Long,java.lang.Float,

java.lang.Double,java.lang.Character

PrimitiveConverter
bignumber java.math.BigInteger,java.math.BigDecimal BigNumberConverter
string java.lang.String StringConverter
array [Z,[B,[S,[I,[J,[F,[D,[C,[L* ArrayConverter
map java.util.Map MapConverter
collection java.util.Collection CollectionConverter
date java.util.Date,java.sql.Date,java.sql.Time,

java.sql.Timestamp,java.util.Calendar

DateConverter
dom org.w3c.dom.Node,org.w3c.dom.Element,org.w3c.dom.Document DOMConverter
dom4j org.dom4j.Document,org.dom4j.Element,org.dom4j.Node DOM4JConverter
jdom org.jdom.Document,org.jdom.Element JDOMConverter
xom nu.xom.Document,nu.xom.Element,nu.xom.Node XOMConverter
servlet javax.servlet.ServletConfig,javax.servlet.ServletContext,

javax.servlet.http.HttpServletRequest,

javax.servlet.http.HttpServletResponse,

javax.servlet.http.HttpSession

ServletConverter
bean   BeanConverter
object   ObjectConverter
hibernate2   H2BeanConverter
hibernate3   H3BeanConverter
url java.net.URL URLConverter
exception   ExceptionConverter
miniException java.lang.Throwable MinimalistExceptionConverter

  它们是应用启动的时候,通过 org.directwebremoting.servlet.DwrServlet 初始化 dwr-2.0.5.jar!/org/directwebremoting/dwr.xml 文件加载进来的。例如:
  <converter id="date" class="org.directwebremoting.convert.DateConverter"/> 注册了 date 转换器
  <convert converter="date" match="java.util.Date"/> 应用注册的 date 转换器应用到 java.util.Date 类型
  看到上面,你也许会惊讶一下,我们平时可能也就用下 bean 转换器,其他用内置就行。然而 DWR 确为我们考虑的很周到的,包括 hibernate 相关的,URL、Servlet、Dom 等相关类型的转换器。

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训