JR 精品文章 - DWR使用手记
快速业务开发平台+在线自定义WEB报表平台+多级数据上报解决方案


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » 开发框架 评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
DWR使用手记
warmcool 原创   更新:2006-02-28 16:43:28  版本: 1.0   

      前段时间想做个东西玩玩,又想学点新的技术,就想起来用DWR(Direct Web Remoting)。把东西做完之后,想想DWR用起来还是很方便的,DWR主要是为了方便javascript调用java class方法,在中间起了一个协调作用。DWR可以声明哪些类可以供javascript调用,可以细到只能调用哪些方法。目前DWR还支持调用spring beans。总结一下使用过程:
 

    1.在WEB.XML中配置DWRServlet:

 <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <display-name>DWR Servlet</display-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

 <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

 

上面配置debug=true后,我们就可以通过http://localhost/webapp/dwr/查看,当前有哪些类可以供javascript调用,同时还可以对类中方法进行测试.对于DWRServlet还有一些参数可以自行设置,如logLevel设置日志级别等.具体可以参照源码.

 

  2 DWR默认的读取/WEB-INF/dwr.xml文件,dwr.xml文件配置如下:

<dwr>
  <allow>

        <init></init>
        <create creator="new" javascript="Ask">
             <param name="class" value="com.test.Ask"/>
        </create>
        <convert converter="bean" match="Message"/>

        <signatures></signatures>
   </allow>
</dwr>

 

      从上面可以看出来dwr.xml文件的基本结构,每个<create>声明一个可供javascript调用的类,javascript="Ask"表明:在javascript中可以用Ask调用类Ask的方法,creator="new"表明每个请求都新建一个Ask实例.

 

      下面的<convert>是:如果在类中把一个对象作为参数(例如A.take(B b)),从javascript调用此方法时,DWR会自动把javascript传过来的参数自动转为对应的bean对象.dwr中已经声明了部分参数类型的自动转换,例如string,int等.

 

      如果我们不想每个请求都新建一个对象,所有请求使用一个实例,我们可以这样配置:(需要bsf.jar)

  <create creator="script" javascript="Ask">

         <param name="language" value="beanshell"/>

         <param name="script">

            <![CDATA[

                         import com.test.Ask;

                         return Ask.getInstance();

           ]]>

        </param>

   </create>

  同时在<create>中还可以加入<include method="answe"/>一个或多个,用来限制javascript可以调用哪些方法. 

 

       <signatures>:如果我们在类方法中声明了List这样的类型参数,DWR不知道传过来的值自动转化为什么类型放到List中,这时候我们就需要在这个标签中声明,一般的我们还是建议放到List中的是javabean,不要是Date等这些类型.

<signatures>
  <![CDATA[
  import java.util.List;
  import com.example.Check;
  Check.setLotteryResults(List<Integer> nos);
  ]]>
</signatures>

  3.JAVA类和JAVASCRIPT调用
   只举简单例子:public class Ask{   public String answer(String question)   {      return question;   }}
页面文件:
<script type='text/javascript' src='dwr/engine.js'></script><script type='text/javascript' src='dwr/util.js'></script>
<!--下边这个是必须的--><script type='text/javascript' src='dwr/interface/Ask.js'></script><script language="javascript">function getAnswer(){    //用一个function接收返回值    Ask.answer(gotAnswer);}//ans即为返回值function gotAnswer(ans){   alert(ans);}</script>
    总体用起来DWR那是"相--当"灵活的,目前DWR.JAR到了1.1BETA版, 官方网站http://getahead.ltd.uk/dwr/index


版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     9       0
作者其它文章: 作者全部文章

这个文章共有 0 条评论
主题: 让你的Java会说话-用Java实现IRC文本到语音转换 上一篇文章
返回文章列表 返回〔开发框架〕
下一篇文章 主题: (转)Oracle高手必读,不要错过噢!


文字广告链接
       自主、快速定制基于JAVA的B/S业务系统        重量级企业在线自定义WEB报表平台
       数巨报表: 全程图形化设计无须代码,适合J2EE、ASP及.NET等环境,功能强大的Web报表工具
       Max@X Analyser5: 快速建立企业级决策分析平台,释放IT系统价值的能力
       上海网域网:上海、香港、美国服务器租用 服务器托管专家

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号