文档章节

GWT的RPC调用

johnnyky
 johnnyky
发布于 2015/06/12 14:43
字数 502
阅读 19
收藏 0
点赞 0
评论 0
首先在客户端,需要定义一个接口(这个接口的实现类则在服务器端)。这个接口要实现GWT RemoteService 接口。你可以在这个接口里面定义你需要的业务方法。另外你还可以通过一个annotation 来定义子路径:
package com.google.gwt.sample.stockwatcher.client;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
 
@RemoteServiceRelativePath("stockPrices")//子路径
public interface StockPriceService extends RemoteService {
 //客户端需要的业务方法
 StockPrice[] getPrices(String[] symbols);
}


 

实现类如下:

package com.google.gwt.sample.stockwatcher.server;

  

import com.google.gwt.sample.stockwatcher.client.StockPrice;

import com.google.gwt.sample.stockwatcher.client.StockPriceService;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

  

public class StockPriceServiceImpl extends RemoteServiceServlet implements StockPriceService {

  

 public StockPrice[] getPrices(String[] symbols) {

   // TODO Auto-generated method stub

   return null;

 }

  

}

接下来,要到web.xml中配置servlet

 

 <servlet>

   <servlet-name>stockPriceServiceImpl</servlet-name>

   <servlet-class>com.google.gwt.sample.stockwatcher.server.StockPriceServiceImpl</servlet-class>

 </servlet>

  

 <servlet-mapping>

   <servlet-name>stockPriceServiceImpl</servlet-name>

   <url-pattern>/stockwatcher/stockPrices</url-pattern>

 </servlet-mapping>

 

为了能进行异步调用,还要在客户端新增一个接口:

package com.google.gwt.sample.stockwatcher.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface StockPriceServiceAsync {

 void getPrices(String[] symbols, AsyncCallback<StockPrice[]> callback);

}

注意几点,这个接口的命名需要遵循规范:同步接口后面加Async

里面的方法要遵循规范:方法个数和名称完全一样,但是返回值一律没有了(因为是异步的),同时参数列表的最后,增加一个AsyncCallback,这是个泛型的容器类,里面的类别就是同步方法的返回类。这用来调用完成时做些处理。

 

接下来是真正调用的类,这个类命名没什么规定,但是要记得他是在client端的,因此有些限制。

 private ArrayList<String> stocks = new ArrayList<String>();

//创建一个代理,通过这个代理去访问后台的东西

private StockPriceServiceAsync stockPriceSvc = GWT.create(StockPriceService.class);

  

private void refreshWatchList() {

   // Initialize the service proxy.

   if (stockPriceSvc == null) {

     stockPriceSvc = GWT.create(StockPriceService.class);

   }

  

   // 实现一个匿名的Callback类

   AsyncCallback<StockPrice[]> callback = new AsyncCallback<StockPrice[]>() {

     public void onFailure(Throwable caught) {

       // TODO: Do something with errors.

     }

  

     public void onSuccess(StockPrice[] result) {

       updateTable(result);

     }

   };

  

   // 真正的调用

   stockPriceSvc.getPrices(stocks.toArray(new String[0]), callback);

 }

我们注意到,真正的调用代码上并没有出现url,那么GWT的客户端如何得知要访问哪个servlet?答案就在同步interfaceannotation中,看蓝色字体表示的单词就明白了。


本文转载自:http://blog.sina.com.cn/s/blog_6df370b70100q78g.html

共有 人打赏支持
johnnyky
粉丝 3
博文 67
码字总数 3719
作品 0
无锡
程序员
使用GWT简化AJAX开发

Google Web工具包(GWT)是一种Java开发框架,它力求简化AJAX应用程序的开发。GWT让开发人员可以使用常用的Java开发工具,开发及调试用 Java开发的AJAX应用程序,并且把同一应用程序作为客户端...

红薯 ⋅ 2009/01/17 ⋅ 1

Google GWT的RPC原理浅析

主要是为了转发个帖子,Mark一下。 工作的时候遇到个问题,打包的war包部署到线上环境时发现post请求都发到了cdn.xx.com去了,这才产生了想法。 整个项目使用Google GWT的框架进行开发,GWT...

来吧 ⋅ 2013/09/12 ⋅ 0

OfficeFloor 1.3.0 发布,IoC 框架

OfficeFloor 是一个 IoC 2.0 的实现,主要是聚焦于方法的依赖注入而不是对象。OfficeFloor 还拥有一个基于Eclipse的图形化配置插件,如下图所示: 该版本集成了 GWT 用于支持直接在 POJO 方法...

红薯 ⋅ 2011/06/19 ⋅ 1

GWT 入门 &amp; 基于NetBenas开发

1.安装JDK 2、 下载和安装GWT 请访问http://code.google.com/webtoolkit/下载GWT的最新版本,将下载的压缩文件解压缩到C:/GWT目录下。本书中的后续内容中将使用%GWT_HOME%变量来引用这个目录...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Google Web工具包 GWT v1.5.3 发布

Google Web 工具包 (GWT) 通过允许开发人员用 Java 编程语言快速构建和维护复杂但高性能的 JavaScript 前端应用程序来减轻该负担。 有了 Google Web 工具包 (GWT),可以使用 Java 编程语言编...

红薯 ⋅ 2008/12/17 ⋅ 0

异步RESTful客户端--GWT-REST

GWT-REST是一个用于GWT应用程序的异步RESTful客户端实现。GWT-REST可以与GWT-RPC一起使用或者代替它。

匿名 ⋅ 2008/09/13 ⋅ 0

Vaadin 简单集合 GWT示例

Vaadin 是一个基于GWT的框架,其中各种add-on,还可以与Spring等集成,但是当用户数量达到一定程度,或者需要提高反应速度,则要使用Vaadin进行Client端的开发了,因为Vaadin的自身组件会频繁...

首席贱人 ⋅ 2015/01/29 ⋅ 14

Errai 1.1 M1 发布,异步消息传递

Errai是JBoss开发的一个基于GWT的框架,使用下一代WEB技术,用于构建富客户端应用。该框架构建在ErraiBus基础上,为客户端与服务器的异步消息传递提供了一个真正统一的消息基础设施。 该版本...

红薯 ⋅ 2010/05/13 ⋅ 1

JRebel 6.2.0 发布,J2EE 开发工具

JRebel 6.2.0 发布,此版本包括几个重大改进和 bug 修复,甚至包括@Inject, JAX-RS, 和 WildFly 上的 JAX-WS。最主要的改进是支持TomEE, Vaadin, 和 GWT 一体化。现在 JRebel 支持完整的 Ja...

oschina ⋅ 2015/05/26 ⋅ 19

解码GWT的JS小工具--degwt

degwt是一个解码GWT(google的网页工具包)生成的javascript代码的小工具。使用方法: 1.访问任何开启GWT的站点,例如:http://www.whirled.com/ 。 2.将下边的代码粘贴到地址栏。 javascript...

匿名 ⋅ 2012/05/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 17分钟前 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 26分钟前 ⋅ 0

springcloud+jps+mybatis多数据库配置

多数据库配置 配置我们目录结构设置: config ---datasource ----jpa ----mybatis ----redis Datasource中是数据的相关配置 Jap中是springDatajpa的相关配置 Mybatis中是mybatis的相关配置 ...

大-智-若-愚 ⋅ 33分钟前 ⋅ 0

Spring mvc HandlerMapping 实现机制

概述 当DispatcherServlet接受到客户端的请求后,SpringMVC 通过 HandlerMapping 找到请求的Controller。 HandlerMapping 在这里起到路由的作用,负责找到请求的Controller。 Spring MVC 默认...

轨迹_ ⋅ 36分钟前 ⋅ 0

JavaScript零基础入门——(十)JavaScript的DOM基础

JavaScript零基础入门——(十)JavaScript的DOM基础 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们了解了JavaScript中的函数,这一节课,我们来了解一下JavaScript的DOM。 第一节...

JandenMa ⋅ 今天 ⋅ 0

Weex起步

本教程假设你已经在你的本地环境安装了node 其实weex起步教程在 https://github.com/lilugirl/incubator-weex 项目说明文件中都已经有了,但为了有些同学看到英文秒变文盲,所以这里我重新写...

lilugirl ⋅ 今天 ⋅ 0

Jenkins实践1 之安装

1 下载 http://mirrors.jenkins.io/war/latest/jenkins.war 2 启动 java -jar jenkins.war 前提:安装jdk并配置环境变量 启动结果节选: ************************************************......

晨猫 ⋅ 今天 ⋅ 0

组合数学 1-2000 中,能被6或10整除的数的个数

1--2000 中,能被6或10整除的数的个数 利用集合的性质 能被6整除的个数 2000/6 = 333 能被10整除的个数 2000/10 = 200 能被6和10整除的个数 2000/30 = 66 能被6或10整除的个数 333+200-66 =...

阿豪boy ⋅ 今天 ⋅ 0

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 今天 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部