HTTPセッション属性を取得するためにGWTでRPC呼び出しを行う唯一の方法ですか?
rpc 呼び出しを行わずに、クライアント側のコードでそれらを直接取得する方法はありますか?
ブラウザがセッションを維持している場合、セッション変数のためにサーバーに再度アクセスする必要があるのはなぜですか?
HTTPセッション属性を取得するためにGWTでRPC呼び出しを行う唯一の方法ですか?
rpc 呼び出しを行わずに、クライアント側のコードでそれらを直接取得する方法はありますか?
ブラウザがセッションを維持している場合、セッション変数のためにサーバーに再度アクセスする必要があるのはなぜですか?
HTTPセッション属性を取得するためにGWTでRPC呼び出しを行う唯一の方法ですか?
セッション属性を取得するには、さまざまなアプローチを使用できます(たとえば、JSONを使用)。GWT-RPCは、標準のHTTPを介してサーバーとの間でJavaオブジェクトをやり取りするためのメカニズムの1つにすぎません。この記事を読む:サーバーとの通信。
rpc呼び出しを行わずに、クライアント側のコードでそれらを直接取得する方法はありますか?
すぐに、サーバーからそれらを取得しない限り、それらにアクセスすることはできません。すべてのGWTアプリケーションはエンドユーザーのWebブラウザーでJavaScriptコードとして実行されますが、セッションはサーバー側に存在するためです。だからあなたはあなたのサーバーから彼らに尋ねなければなりません。
ブラウザがセッションを維持している場合、なぜセッション変数のためにサーバーに再度アクセスする必要があるのですか?
あなたはセッションについて間違った認識を持っています、それらはあなたのブラウザによって維持されていません。セッションを制御するには、非同期コールバックまたは別の手法を使用してサーバー側を呼び出す必要があります。または、クライアント側のWebセッションを意味する場合は、 Cookieを使用してそれらを制御できます。
ブラウザにはセッション変数がありません! それが持っているのは、セッション識別子 (通常は Cookie に保持されます) だけです。
セッションはサーバー側でのみ利用可能で、GWT は Js で Java をコンパイルするため、クライアント側でセッションを利用できません。
セッション値の一部と一致するように Cookie 値を設定したいだけかもしれません。認証時にこれを行い、
public boolean authentication() {
// Do authentication stuff
getResponse().addCookie(new Cookie("SOMESESSIONID", session.getId()));
}
public HttpServletResponse getResponse() {
return RemoteServiceUtil.getThreadLocalResponse();
}
クライアント側では、Cookie クラスを使用してこれらの値をフェッチするだけです。
HttpSession session = RemoteServiceUtil.getThreadLocalRequest().getSession();
Google グループの投稿を読む- 同期通話
GWT は、簡単に実行できるようにするための努力を一切行いません。同期リクエストを許可する RequestBuilder の独自の拡張機能を作成する必要があります。
同期リクエストの問題は、ブラウザーが応答を待っているのをブロックする傾向があり、アプリケーションがロックされているように見えることです。これは特に悪いアプリケーション設計です。クライアント マシンやクライアント マシンとサーバー間のネットワークを制御することはできないため、アプリケーションがロックされているように見える時間を指定することさえできません。
したがって、最善の方法は、単純に非同期メソッドを使用し、提供されたコールバックを介して実行を継続することです。ユーザー エクスペリエンスが大幅に向上し、よりプロフェッショナルな外観のアプリケーションになります。