3 Stimmen

Programmgesteuertes Aufrufen des JSP-Parsers

Ich würde den JSP-Parser gerne programmatisch aufrufen. Das bedeutet, dass ich in der Lage sein möchte, in Java eine JSP-Seite "auszuführen" und ihre Ausgabe zu erhalten, ohne sie an den Client zurückzuschicken (ich möchte die Ausgabe in einer Datei speichern). Ich möchte die Anfrage nicht an die JSP-Seite "weiterleiten". Ich möchte das auf mehreren JSP-Seiten hintereinander tun können.

Wie lässt sich dies am besten bewerkstelligen?

Ich habe Folgendes gefunden Frage aber BalusC beantwortet die Frage nicht wirklich direkt.

Falls Sie sich wundern, ich muss dies tun, weil ich die JSPs für die Verwendung auf anderen Plattformen als einem Java-Servlet-Container vorkompilieren möchte.

EDIT

Was ich brauche, ist nicht die .class-Datei, sondern die HTML-Ausgabe. In der Tat, das wird statisch sein, sobald generiert, aber ich habe einige benutzerdefinierte JSP-Tags und ich möchte den JSP-Parser nutzen, um sie zu erweitern.

1voto

duffymo Punkte 298898

Ich bin mir nicht sicher, ob ich den Sinn dieser ganzen Sache verstehe.

JSPs werden geparst und vorkompiliert zu .class Dateien. Sie sind zu diesem Zeitpunkt Java-Servlets. Sie benötigen eine Servlet-Engine, um sie auszuführen.

Wenn Sie beabsichtigen, die generierte HTTP-Antwort als "vorkompilierte" Antwort zu erfassen, würde dies bedeuten, dass es keinen dynamischen Inhalt gibt und die Antwort jedes Mal dieselbe ist, wenn Sie diese bestimmte Anfrage senden. Wenn das der Fall ist, haben Sie statisches HTML.

Wenn ich richtig liege, scheint dies ein schlechter Weg zu sein, um so etwas zu erzeugen.

Wenn Sie JSPs zu .class-Dateien vorkompilieren möchten, besteht das Problem darin, dass verschiedene Java EE-App-Server unterschiedliche JSP-Vor-Kompilierungs-Engines verwenden. Sie können JSPs nicht mit Tomcat vorkompilieren und sie dann in WebLogic verwenden.

1voto

Don Roby Punkte 39870

Der beste Weg, die Html-Ausgabe einer JSP-Seite zu erhalten, besteht darin, sie auf einem echten Webserver bereitzustellen und dann die Seite aufzurufen und die gerenderte Ausgabe zu speichern.

Wenn Sie einen Teil dieses Vorgangs automatisieren möchten, sollten Sie ein Testtool verwenden, das mit der echten Schnittstelle arbeitet, wie z. B. Selen oder die den Browser emuliert, wie z. B. HttpUnit .

Aber das ist viel mehr als nur der Aufruf des JSP-Compilers.

1voto

laufzeit Punkte 116

Vielleicht wäre es praktischer, Template-Engines zu verwenden wie http://freemarker.sourceforge.net/ ou http://velocity.apache.org/

Freemarker scheint sogar JSP Taglibs zu unterstützen: http://freemarker.sourceforge.net/features.html

0voto

Smiles in a Jar Punkte 359

Ist Ihre JSP dynamisch generiert. Wenn ja, geraten Sie in eine potenziell nachteilige Situation, in der Ihre JSP immer wieder neu kompiliert wird, was zu Leistungsproblemen führt.

Wenn Sie jedoch eine einzige große JSP mit allen Regeln haben, die Sie zur Vorbereitung Ihrer Anzeige benötigen, könnten Sie HttpClient verwenden, um Ihre eigene JSP aufzurufen, die dann das HTML zurückgibt. Damit wäre sichergestellt, dass Sie nicht vom App-Server abhängig sind. Wenn Sie JSP Parser verwenden, sind Sie vom Anbieter abhängig.

Wenn Ihre JSP jedoch dynamisch aufgebaut ist, sollten Sie sich Optionen ansehen, bei denen Ihr HTML auf der Java-Seite generiert werden kann. Wenn es sich jedoch um eine regelbasierte HTML-Erstellung handelt, ist es besser, sie in Java zu erstellen. Hierfür können Sie die Apache Jakarta ECS-Bibliothek verwenden.

Und ja, JSPs sind nicht für diesen Zweck gedacht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X