0

サーブレットに要求を送信したすべてのクライアントに、キャッシュされたオブジェクトの変更をフィードする非同期サーブレットを作成しました。

要求を使用して、クライアントはさまざまなパラメーターを含めることにより、キャッシュのサブセクションを取得できます。

単純にリクエストを ArrayList に格納し、変更が発生するたびにリクエストを反復処理して、クライアントにレスポンスを送り返しています。

クライアントが別のパラメーターを使用して 2 番目の要求を送信する状況を処理する必要があることを除いて、すべてが正常に機能しています。

それが発生した場合、保存した古いリクエストをこの新しいリクエストに置き換えたいと思います。しかし、そのためには、リクエストが同じユーザーからのものかどうかを知る必要があります。サーブレット 3.0 を使用している同じユーザーからリクエストが送信されたかどうかをテストする方法はありますか?

4

1 に答える 1

1

古いリクエストを処理する必要があります。Connection:closed ヘッダーを使用して、エラー応答を送信できます。

同じクライアントからの要求を関連付ける唯一の方法は、Cookie を使用することです。2 つのリクエストのセッション ID (Cookie) を比較できます。着信リクエストにセッションがない場合は、(request.getSession() によって) セッションを確立してからリダイレクトを実行し、クライアントが jsessionid Cookie を使用してリクエストを再試行するようにする必要があります。

if request.getSession(false)==null
    request.getSession(true);
    response.sendRedirect( request.uri +"?"+ request.query )

通常は応答を返すまでに時間がかかるため、この場合はリダイレクトが必要ですが、できるだけ早く Cookie を設定したいと考えています。

于 2013-03-23T01:11:22.470 に答える