0

シナリオは次のとおりです。シングル ページ アプリ (AJAX ベース)、Cookie を許可しないがセッションが必要な環境、およびバックエンドの Tomcat (または JBoss)。

バックエンド コンテナー (Tomcat) にセッションを管理させる最も簡単な方法は何ですか?

JSESSIONID=SESSION_ID_GOES_HERE を作成するすべての AJAX リクエストに単純に追加する必要がありますか?Tomcat がセッションを取得するのに十分ですか?

4

1 に答える 1

0

はい、正確に、Cookie を使用できない場合は、サーバーへの呼び出しの間に JSessionid を追加して同じことを実現できます。これを URL 書き換えと呼びます。

ブラウザに返されるリンクに jsessionid を追加する必要があります。これにより、ブラウザはその後の呼び出しを同じ jsessionid でサーバーに送信します。ただし、それを行うには、サーブレットの応答パラメーターのメソッドを使用する必要があります。encodeURl() および setRedirect() を使用して、JSessionId を適切にアタッチします (本当に必要な場合)。

たとえば、サーブレット/jsp に次のリンクがあるとします。

out.println("<a href=\"/mycontext/newpage\">Next Page<a>");

あなたはそれを書くべきです:

 out.println("<a href=\"");
  out.println(response.encodeURL ("/mycontext/newpage"));
  out.println("\">Next Page</a>");

JSessionId が必要な場合 (たとえば、Cookie が無効になっている場合) は、JSessionId が自動的にアタッチされます。

同様に、リダイレクトを送信する必要がある場合は、次のようにする必要があります。

response.sendRedirect (response.encodeRedirectURL
    ("http://myhost/mycontext/newpage"));

詳細については、HttpServletResponseの JDK API を参照してください。

于 2012-11-13T08:09:17.490 に答える