RSS
热门关键字:  Linux  图形  项目管理  LAMP  java
当前位置 : 主页>开源技术>AJAX技术>列表

Ajax简介

来源:中国开源社区 作者:sherman 时间:2007-09-18 点击:

让我们仔细分析一下示例代码,弄清它是如何工作的。 字串2

应用程序细节:DWR分析 字串8

  关于应用程序,首先要注意的是,它是一个标准的Java应用程序,使用分层架构(Layered Architecture)设计模式。使用DWR通过JavaScript公开一些服务并不影响您的设计。

字串3

字串2

  下面是一个简单的Java服务,我们将使用DWR框架直接将其向JavaScript代码公开: 字串6

package com.tearesolutions.service;public interface AjaxSampleSvc {   Article castVote(int rank);} 

字串4

  这是一个被简化到几乎不可能的程度的例子,其中只有一篇文章可以投票。该服务由Spring管理,它使用的bean名是ajaxSampleSvc,它的持久性需求则依赖于ArticleDao。详情请参见applicationContext.xml。 字串8

  为了把该服务公开为JavaScript对象,需要配置DWR,添加dwr.xml文件到WEB-INF目录下: 字串6

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd"><dwr> <allow>  <create creator="spring" javascript="ajaxSampleSvc">   <param name="beanName" value="ajaxSampleSvc" />  </create>  <convert converter="bean" match="com.tearesolutions.model.Article"/>  <exclude method="toString"/>  <exclude method="setArticleDao"/> </allow></dwr> 字串1 

  dwr.xml文件告诉DWR哪些服务是要直接向JavaScript代码公开的。注意,已经要求公开Spring bean ajaxSampleSvc。DWR将自动找到由应用程序设置的SpringApplicationContext。为此,必须使用标准的servlet过滤器ContextLoaderListener来初始化Spring ApplicationContext。

字串7

  DWR被设置为一个servlet,所以把它的定义添加到web.xml: 字串3

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD  Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <display-name>Ajax Examples</display-name> <listener>  <listener-class>      org.springframework.web.context.ContextLoaderListener  </listener-class> </listener> <servlet>  <servlet-name>ajax_sample</servlet-name>  <servlet-class>com.tearesolutions.web.AjaxSampleServlet</servlet-class>  <load-on-startup>1</load-on-startup> </servlet> <servlet>  <servlet-name>dwr-invoker</servlet-name>  <display-name>DWR Servlet</display-name>  <description>Direct Web Remoter Servlet</description>  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  <init-param>   <param-name>debug</param-name>   <param-value>true</param-value>  </init-param> </servlet> <servlet-mapping>  <servlet-name>ajax_sample</servlet-name>  <url-pattern>/ajax_sample</url-pattern> </servlet-mapping> <servlet-mapping>  <servlet-name>dwr-invoker</servlet-name>  <url-pattern>/dwr/*</url-pattern> </servlet-mapping></web-app> 

字串9

  做完这些之后,可以加载

字串6

  • http://localhost:7001/ajax-demo/dwr,看看哪些服务可用。结果如下:

    字串8

    字串2

    字串6

  • 图3. 可用的服务

    字串9

      单击ajaxSampleSvc链接,查看有关如何在HTML页面内直接使用服务的示例实现。其中包含的两个JavaScript文件完成了大部分的功能:

    字串7

    <script type='text/javascript'    src='/ajax-demo/dwr/interface/ajaxSampleSvc.js'></script><script type='text/javascript'    src='/ajax-demo/dwr/engine.js'></script> 字串6 

    ajaxSampleSvc.js是动态生成的: 字串5

    function ajaxSampleSvc() { }ajaxSampleSvc.castVote = function(callback, p0){   DWREngine._execute(callback, '/ajax-demo/dwr',  'ajaxSampleSvc', 'castVote', p0);} 字串7 

      现在可以使用JavaScript对象ajaxSampleSvc替换所有的XmlHttpRequest代码,从而重构raw-ajax.html文件。可以在dwr-ajax.html文件中看到改动的结果;下面是新的JavaScript函数:

    字串7

    function castVote(rank) {  ajaxSampleSvc.castVote(processResponse, rank);}function processResponse(data) { var voteText = "
    			
  • 最新评论共有 0 位网友发表了评论
    发表评论
    评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
    用户名: 密码:
    匿名?
    注册