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
一日がかりで出来上がったもの。
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);
}