appengine project中 client和server之间实现数据的传递

来源:互联网 发布:增长率算法 编辑:程序博客网 时间:2024/06/08 02:22

client 负责显示,server端处理数据。 这里又两个包  xxx.xxx.client就是client端 xxx.xxx.server就是服务端。他们通过service这个东西传递数据。

1.首先在client端 提供一个接口,提供所要实现的方法。这里就一个方法要实现。这个接口要继承RemoteService类。

import com.google.gwt.user.client.rpc.RemoteService;import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;@RemoteServiceRelativePath("stockPrices")public interface possibleService extends RemoteService{stockprice[] getPrices(String[] symbols) throws DelistedException;}

这里@RemoteServiceRelativePath("stockPrices")  提供一个相对路径,等下在web.xml中会指明servlet的路径。

2.然后要生成一个 异步接口 

import com.google.gwt.user.client.rpc.AsyncCallback;public interface possibleServiceAsync {void getPrices(String[] symbols, AsyncCallback<stockprice[]> callback);}
这个好像涉及服务器异步传递的方式  反正要生成一个这个接口,后面似乎是通过他 去生成一个叫call的东西和服务器交流。暂时这么说吧。用eclipse 直接生成。不行就照着写。

3.然后在服务器端server端写实现这个接口的方法:

public class possibleServiceImpl extends RemoteServiceServlet implements possibleService{@Overridepublic stockprice[] getPrices(String[] symbols) throws DelistedException {。。。}
这个实现类继承RemoteServiceServlet 实现提供的接口。

4.然后我们就要在client中调用这个,在这个之前,有个事实 ,原话是这么说的:

Every service implementation is ultimately a servlet, but rather than extending HttpServlet, it extends RemoteServiceServlet instead. RemoteServiceServlet automatically handles serialization of the data being passed between the client and the server and invoking the intended method in your service implementation.

每个service 这个东西 在这里就是possibleServiceImp 说到底都是一个servlet。

所以要在web.xml对这个service进行servlet式的配置才能调用他。

  <servlet>    <servlet-name>possibleServiceImpl</servlet-name>    <servlet-class>com.harvey.version.server.possibleServiceImpl</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>possibleServiceImpl</servlet-name>    <url-pattern>/possible/stockPrices</url-pattern>  </servlet-mapping>
这个地方/possible/stockPrices  possible 是project的名字。 stockPrices就是上面定义接口的时候定义的相对路径。
<url-pattern>/possible/stockPrices</url-pattern>
5.然后调用了。首先client端里建一个 这个东西。

private possibleServiceAsync stockPriceSvc = GWT.create(possibleService.class);

possibleServiceAsync就是异步的接口,GWT通过新建possibleService的类放入异步接口 stockPriceSvc。

AsyncCallback<stockprice[]> callback = new AsyncCallback<stockprice[]>() {      public void onFailure(Throwable caught) {        // TODO: Do something with errors.       }      public void onSuccess(stockprice[] result) {      }    };

然后要生成一个callback 里面有两个方法onFailure 和 onSuccess,睡了 这两个的作用明天弄清楚了再讲。