0

JSP を使用して、いくつかの基本的なチェックを行った後、別のページにリダイレクトする必要があります。ターゲット URL には、いくつかの追加データ (行われたチェックに関連する) を指定する必要があります。1つの明白な方法はこれです:

String extraData = [calculate extra data];
response.setHeader("Loction", "target.jsp?extradata=" + extraData);

ただし、ブラウザーのアドレス ボックスで余分なデータをユーザーに公開したくありません。

これはすべて JSP にあるため、セッション属性を設定する別のオプションがあります。

String extraData = [calculate extra data];
session.setAttribute("extradata", extraData);
response.setHeader("Location", "target.jsp");

そして、target.jsp はセッション属性から追加データを取得できます。

ただし、ターゲット ファイルは別のサーバー上にある可能性があり、もちろん同じセッションを共有することはありません。

別の URL にリダイレクトして、URL 自体にない余分なデータを渡す方法は他にありますか? たとえば、HttpServletRequest でターゲット URL に配信される追加のヘッダーをおそらく定義する方法はありますか?

4

1 に答える 1

1

応答にカスタム ヘッダーを追加できます。これらのヘッダーは受信者に送信されるため、応答のヘッダーから読み取ることができます。

 response.addHeader(name, value);
 request.getRequestDispatcher("target.jsp").forward(request, response);

ただし、これは現在のサーブレット コンテキストの外に拡張することはできません。リダイレクトを使用する場合:

  response.sendRedirect("target.jsp");

ヘッダーは失われます。

別の方法として、URL 内のデータをエンコードして、見えないようにすることもできます。これには、クライアント側の受信者ページでデコードする必要があります。

AJAX を使用すると、データを隠すのに役立つ場合があります。他のサーバーのページが (上記のように) リダイレクトされると、サーバー上の別のサーブレットに AJAX 呼び出しが行われ、送信したいデータが応答にカプセル化されて応答されます。

于 2013-10-11T09:15:25.963 に答える