Google Web Toolkitを触ってみた時のメモ。

1.com.google.gwt.core.client.EntryPointを実装したクラスが必要。
 ※ここにクライアント側のコードを書く。まるでSwingのコードを書いてるような気がした。

2.com.google.gwt.user.client.rpc.RemoteServiceを継承したinterfaceが必要。
3.2で作ったinterfaceを実装、com.google.gwt.user.server.rpc.RemoteServiceServletを継承したサーバ側のコードを書く。
 ※2で作ったinterfaceが@RemoteServiceRelativePath("search")だった場合のweb.xml
 <servlet>
  <servlet-name>サーブレット名</servlet-name>
  <servlet-class>クラス名</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>サーブレット名</servlet-name>
  <url-pattern>/パッケージ.モジュール名/search</url-pattern>
 </servlet-mapping>

4.com.google.gwt.user.client.rpc.IsSerializableを実装したクラスが必要。
 ※クライアント⇔サーバ間のやり取りの戻り値となるクラスに実装する。たぶんプリミティブ型なら要らない。

5.呼び出、イベント用のインターフェースが必要。


コンパイルして出来上がったjavascriptをHTMLに設定する。
 ※/パッケージ.モジュール名/の場所にたくさんファイルが出来上がる。
 ※<script type="text/javascript" language="javascript" src="/パッケージ.モジュール名/パッケージ.モジュール名.nocache.js"></script>

Google Web Toolkit Javadoc
 http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/index.html

gwt-servlet.jarが必要。


一日がかりで出来上がったもの。
http://kuru2srch.appspot.com/gwtsearch.html

                                      • -

1.


.
.略
.
public class SearchModule implements EntryPoint {
.
.略
.
public void onModuleLoad() {
.
.略
.
}
.
.略
.
private void doSearchService( final String input, final String page, final String type ) {
.
.サーバ呼出、イベント取得のところ(5.で作成したinterfaceを使う)
.
final SearchServiceAsync searchService = GWT.create(SearchService.class);
searchService.searchServer(
input
,page
,type
,new AsyncCallback<SearchServiceResult>() {
public void onFailure(Throwable caught) {
.
.失敗
.
}
public void onSuccess(SearchServiceResult result) {
.
.成功
.
}
});

}

}

2.


@RemoteServiceRelativePath("search")
public interface SearchService extends RemoteService {
↓戻り値のクラスはIsSerializable
SearchServiceResult searchServer(String input, String page, String type);
}

3.


.
. com.google.gwt.user.server.rpc.RemoteServiceServletを継承、2で作成したinterfaceを実装
.
public class SearchServiceImpl extends RemoteServiceServlet implements SearchService {
↓戻り値のクラスはIsSerializable
public SearchServiceResult searchServer(String input, String page, String type) {
.
.略
.
}
}

4.


public class SearchServiceResult implements IsSerializable {
.
. 面倒なのでsetter/getterがない
.
public int currentPage = 0;
public int pages = 0;

@SuppressWarnings("unchecked")
public ArrayList results = new ArrayList();

public static class ResultWeb implements IsSerializable {
public String title = null;
public String url = null;
public String summary = null;

public ResultWeb() {

}
}

public static class ResultImage implements IsSerializable {
public String title = null;
public String url = null;
public String summary = null;
public String clickUrl = null;
public String refererUrl = null;
public String thumbnail_Url = null;
}
}

5.


public interface SearchServiceAsync {
void searchServer(String input, String page, String type, AsyncCallback<SearchServiceResult> asyncCallback);
}