JSP Erzeugten JSP HTML-Quelltext in html-Datei speichern

skummy

Aktives Mitglied
Hallo,

folgende Situation:

Ich nutze ein externes System in das über Plugins Java-Servlets eingebunden werden können. Diese Servlets lassen sich über das externe System cronjob-gesteuert ausführen.
Nun habe ich zur Statistik-Erzeugung so ein Servlet erstellt, das circa 5 Minuten benötigt bis die Daten auf einer jsp-Seite dargestellt werden können. Performancetechnisch ist da nicht mehr viel zu machen, da die Datenbasis einfach zu groß ist.

Die Idee ist nun die jsp-Datei sozusagen nächtlich statisch generieren zu lassen. Und genau das ist eigentlich auch meine Frage:
Wie kann ich aus einem angezeigten jsp-Seite den HTML-Quelltext abspeichern und in eine extra Datei schreiben? Diese generierte HTML-Datei könnte ich dann einfach über ein IFrame auf der vom Benutzer aufgerufenen Seite einbinden und fertig.

Alternativ könnte man auch manuell den HTML-Content, den eigentlich jsp-Datei erzeugen würde, erstellen und in eine Datei abspeichern, oder?


Grüße
 
wenn die Datei "gebaut" ist, und du unix einsetzt (gehe davon aus, wegen Cronjobs) dann baue dir einfach eine kleines Shellscript und lade die Datei Nachts (wget <url> -O /pfad/staticHtml.html) dann hast du den HTML Inhalt.
Die Datei kannst du ja dann weiter verarbeiten, bzw. ber IFrame einbinden

Grüße
 
Also nach meinem Kenntnisstand wird aus einer JSP intern ein Servlet erzeugt (quasi die JSP einmal "umgestülpt"), welches auch als class hinterlegt wird. Wenn man diese nun decompiliert, hast Du ja Deine JSP als java-Servlet-Quellcode vorliegen und kannst es weiterebearbeiten, z.B. direkt im Servlet den erzeugten Code in eine Datei schreiben.

Oder gleich das ganze als Servlet und nicht als JSP aufbauen.
 
Ich hab es jetzt einfach so gemacht:

Ein neues Servlet geschrieben (und als nächtlicher Job im System integriert), das über HttpURLConnection die URL des (rechenintensiven) Servlets aufruft. Nach Auswertung des Response Codes verwende ich einen BufferedReader der über die Methode getInputStream() der Klasse HttpURLConnection den kompletten HTML-Content des rechenintensiven Servlets zurückgibt.
Diesen InputStream verwende ich dann mit der FileWriter-Klasse, die einfach jede Zeile des InputStreams in eine HTML-Datei mit dynamischen Datei-Namen schreibt.
Diese kann ich dann einfach in einem iframe einbinden.

Diese Vorgehensweise kommt wohl der Lösung mit wget gleich. Nur sind die Aufrufe des Servlets dynamisch und da ich nicht sonderlich fit in Shell-Scripting bin, verwende ich die Java-Lösung.


Vielen Dank trotzdem!
 
Code:
#!/bin/sh
wget http://www.google.de -O /home/sence/google.txt
und fertig 🙂

das scirpt nur noch in Cron einbinden
greetz
 

Zurück
Oben