Frage

Wir sind eine Website für einen Client-Hosting und sie wollen, dass wir den Header sie auf ihrem Server in die Seiten müssen schließen wir hosten. Also, wann immer sie es ändern, wird es automatisch auf unserer Website ändern.

Wir versuchen, die "include" Tag in unserem JSP-Code zu verwenden. Der Code, den wir verwenden, ist wie folgt:

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

Wir haben auch versucht

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

Leider sind diese Arbeiten nicht für uns. Was passiert zu sein scheint, ist, dass der Code nur sucht lokal für diese Datei und scheint nie „draußen“ zu gehen, um es zu suchen.

Wir sind in der Lage die Header in unsere Seite zu ziehen, wenn wir einen Iframe verwenden, sondern wegen der Art und Weise wird der Header konstruiert / die Maus über Drop-Down-Menüs codiert sind nicht funktioniert wie sie sollten, wenn wir die iframe verwenden. Das Drop-Down-Menü „Kaskadierung“ unter dem Rest des Inhalts auf der Seite und wir waren nicht in der Lage zu bringen sie auf den „top“.

Als eine vorübergehende Arbeit um, wurden, werden die HTML-Datei auf unseren eigenen Servern hosten.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Wenn Sie dies in Java tun, es ist schön und einfach das Httpclient von Apache Commons verwendet wird.

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 "";
  }
}

Für eine schnelle und schmutzige Lösung, Ihre JSP können Sie diese Methode direkt aufrufen. Sie könnten natürlich, erstellen Sie ein taglib-Tag die Methode aufzurufen, wenn Sie es vorziehen.

Sie können das Time-out zu ändern, und versuchen Sie es erneut Mechanismus für Httpclient. Standardmäßig versucht es wird automatisch mit jedem Versuch Timing auf maximal 3 mal nach oben aus nach 30 s.

Sie möchten jedoch wahrscheinlich in das Zwischenspeichern der Saiten für einen geeigneten Zeitraum suchen. Sie wollen wirklich nicht 2 blockiert externe HTTP-Anfragen für jede Seite Zugriff auf Ihre Website machen.

Andere Tipps

JSP enthält keine einschließlich Remote-Dateien nicht unterstützen, weshalb eine relative URL erforderlich ist: http://java.sun.com/products/jsp/syntax/1.2/syntaxref1214.html

Ich schlage vor, das Schreiben einer Funktion, die eine Verbindung zu dieser Seite öffnet und lädt den Inhalt und dann druckt sie auf Ihrem eigenen out Strom. Dann können Sie diese Funktion in einer lokalen Datei setzen und nur, dass include.

Wie wäre es die JSTL Kern-Bibliothek und tun:

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

Das sollte Remote-Content auf Anfrage Zeit enthalten kann.

JSP enthält nicht dazu gedacht sind, wie das mit externen Servern zu arbeiten. Hier ist eine ganz schreckliche Art und Weise, Ihr Problem zu beheben, aber es war die einzige Möglichkeit für mich in einer ähnlichen Situation. Schreiben Sie eine Klasse, um tatsächlich die html von dieser Site zu analysieren, und dann ausdrucken. Ich möchte hinzufügen, dass, wenn Sie so etwas wie dies tun werden, ist es immer eine gute Idee, eine Art von Authentifizierungsmechanismus an seinem Platz zu haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top