2

クライアント向けのサイトをホストしており、クライアントは、サーバーにあるヘッダーをホストしているページに含めることを望んでいます。そのため、変更するたびに、サイト上で自動的に変更されます。

JSP コードで「include」タグを使用しようとしています。使用しているコードは次のとおりです。

<%@ include file="www.CLIENT.com/CLIENT2/MiddlePageFiles/Vendor_header.html" %>

私たちも試しました

<%@ include file="**http://**www.CLIENT.com/CLIENT2/MiddlePageFiles/Vendor_header.html" %>

残念ながら、これらは私たちにとってはうまくいきません。起こっているように見えるのは、コードがこのファイルをローカルで探しているだけで、「外部」に行って探しているようには見えないということです。

iframe を使用する場合、ヘッダーをページに取り込むことができますが、ヘッダーの構成/コーディング方法が原因で、iframe を使用する場合、マウス オーバー ドロップダウン メニューが正常に機能しません。ドロップダウン メニューは、ページの残りのコンテンツの下に「カスケード」されており、「トップ」に移動できませんでした。

一時的な回避策として、独自のサーバーで HTML をホストしています。

何か案は?

4

4 に答える 4

3

これを Java で行う場合は、Apache Commons の HttpClient を使用すると簡単です。

public static String fetchSourceHtml( String urlString ) {

  try {
    HttpClient httpClient = new HttpClient();
    GetMethod getMethod = new GetMethod( urlString );
    getMethod.setFollowRedirects( true );

    int httpStatus = httpClient.executeMethod( getMethod );

    if (httpStatus >= 400) {
      return "";
    }

    String sourceHtml = getMethod.getResponseBodyAsString();
    return sourceHtml;
  }
  catch (IOException e) {
    return "";
  }
}

迅速で汚い解決策として、JSP でこのメソッドを直接呼び出すことができます。もちろん、必要に応じてメソッドを呼び出す taglib タグを作成することもできます。

HttpClient のタイムアウトと再試行のメカニズムを変更したい場合があります。デフォルトでは、最大 3 回まで自動的に試行され、各試行は 30 秒後にタイムアウトします。

ただし、適切な期間、文字列をキャッシュすることを検討することをお勧めします。サイトへの各ページ アクセスに対して 2 つの外部 HTTP リクエストをブロックすることは本当に望ましくありません。

于 2008-10-09T13:24:24.613 に答える
1

JSPには、リモートファイルのインクルードがサポートされていないため、相対URLが必要です。http://java.sun.com/products/jsp/syntax/1.2/syntaxref1214.html

そのページへの接続を開き、コンテンツをダウンロードして、独自のoutストリームに出力する関数を作成することをお勧めします。次に、その関数をローカルファイルに配置しますinclude

于 2008-10-09T13:17:15.907 に答える
1

JSTL コア ライブラリを使用して、次のことを行うのはどうですか。

<c:import url="http://www.CLIENT.com/CLIENT2/MiddlePageFiles/Vendor_header.html" />

リクエスト時にリモートコンテンツを含めることができるはずです。

于 2008-10-09T13:52:08.193 に答える
-1

JSP インクルードは、外部サーバーでそのように機能することを意図していません。これはあなたの問題を解決するための完全に恐ろしい方法ですが、同様の状況で私にとって唯一の選択肢でした. そのサイトの html を実際に解析するクラスを作成し、それを出力します。このようなことを行う場合は常に、何らかの認証メカニズムを用意しておくことをお勧めします。

于 2008-10-09T13:24:52.023 に答える