1

サードパーティのアプリケーションを Java アプリケーションに統合する次のシナリオがあります。サード パーティ アプリケーションが、私の Java アプリケーションとは異なるコンテキストで実行されています。認証情報などの特定のパラメーターを使用して呼び出す必要がある JSP を提供し、それに基づいて Cookie 値を生成し、ヘッダーに設定します。Java アプリケーションからこの JSP を呼び出し、応答からヘッダーを取得して Cookie 値を取得し、それをアプリケーションで作成される新しい Cookie に設定する必要があります。

を使用してJSPを呼び出すことができました

response.sendRedirect("http://<host>:<port>/<context>/authn.jsp").

authn.jsp は、認証に送信されたすべての値を取得し、Cookie 値を生成することができました。次に、

response.setHeader(attr,val).

ただし、サーブレットでこの応答ヘッダーを読み取る方法がわかりません。request.sendRedirect はこれを行う正しい方法ですか? これを実現するには、HTTPURLConnection クラスを使用する必要がありますか?

4

2 に答える 2

2

HTTPURLConnectionヘッダーを読み取るには、を使用する必要があります。は使用できませんresponse.sendRedirect(..)。ヘッダーを受け取ったらresponse.setHeader(attr,val)、コードを設定できます。

URL url = new URL("JSPURL");
URLConnection conn = url.openConnection();
for (int i = 0;; i++) {
  String headerName = conn.getHeaderFieldKey(i);
  String headerValue = conn.getHeaderField(i);
  System.out.println(headerName + "===");
  System.out.println(headerValue);
  if (headerName == null && headerValue == null) {
    break;
  }
}
于 2012-08-15T18:41:04.093 に答える
1

Tomcat を使用していて、両方のアプリケーションが同じサーバー インスタンスにデプロイされている場合は、両方のサーブレット アプリケーションを構成して、相互に着信要求を受け入れることができます。これは、コンテキスト構成crossContextの属性によって行われます。

次に、サーブレットからRequestDispatcher、他の Web アプリケーションに対してa を使用できます。

RequestDispather dispatcher = request.getRequestDispatcher("/<context>/authn.jsp");
dispatcher.forward(request, response);
// Process the headers
Enumeration<String> headerNames = response.getHeaderNames();
while(headerNames.hasMoreElements()) {
   Collection<String> values = response.getHeaders(headerNames.nextElement());
   // do whatever with the header values.
}

: 他のサーブレット コンテナーには、クロス コンテキスト機能を構成する同様の方法があります。コンテナーの構成ドキュメントを確認する必要があります。

于 2012-08-15T18:59:28.307 に答える