4

c:import または c:url を使用して、ページ (adserver) のコンテンツを取得したいと考えています。さらに、タイムアウトを指定する必要があります。呼び出しがタイムアウトするか、ページにアクセスできない場合は、デフォルトのテキストを値として返す必要があります。

これを行うためのjstlタグライブラリはありますか? それとも、自分で作成する必要がありますか?

4

1 に答える 1

4

すこし。

c:import はサーバーへのソケットを開き、接続が何をするかを返すだけです(あなたの場合は生のhtml)。サーバーが 404 のページを返した場合はそれが表示され、500 の場合はそのエラー ページが表示されます。

これはソケットであるため、すべてのソケット エラーにアクセスできます。タイムアウトの場合:

 java.net.ConnectException: Operation timed out    

未知のホスト:

 java.net.UnknownHostException: www.googasdasdasdassdle.com

これは、インポートを catch ステートメントでラップして、ページ上ですぐに処理できることを意味します。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:catch var="socketExceptionVariable">
    <c:import url="www.googasdasdasdassdle.com"/>
</c:catch>

<c:if test="${socketExceptionVariable != null}">
    <p>There was an error here</p>
    <c:out value="${socketExceptionVariable}"/>
</c:if>

インポートが行われた場合は意図したとおりに機能しますが、何か (何か) がうまくいかない場合は、エラー ページが表示されます。

独自のインポート タグを作成することもできますが、それはこれをカプセル化しますが、このソリューションに比べてかなりの作業が必要です。

于 2009-02-25T02:42:46.443 に答える