Ich bin ziemlich neu in JSP. Bisher sieht es so aus, als ob der Verarbeitungsfluss so groß ist, dass Java zuerst ausgeführt und dann eine JSP-Vorlage aufgefüllt wird.
Ich frage mich, ob es innerhalb von Java eine Möglichkeit gibt, eine JSP-Vorlage zu verwenden. Stellen Sie sich vor, ich hätte eine einfache "SimpleDiv.jsp" -Vorlage auf dem Klassenpfad:
<div id="${id}" class="${class}">
${content}
</div>
Und dann könnte ich in einer beliebigen Java-Datei (die möglicherweise nicht einmal auf einem Servlet ausgeführt wird) Folgendes tun:
private String getDivHtml( id, html ) {
Template simpleDiv = TemplateLoader.load("SimpleDiv.jsp");
simpleDiv.set("id", id);
simpleDiv.set("class", Whatever.CLASS_NAME);
simpleDiv.set("content", html);
return simpleDiv.toString();
}
Dies ist ein ziemlich simples Beispiel, damit Sie nicht in die Details geraten. Die Hauptfrage ist: Kann ich eine JSP-Vorlage in Java einbinden und HTML inline generieren lassen?
Antworten:
4 für die Antwort № 1Freemarker und Velocity sind sehr beliebt fürWenn Sie Inhalte aus Vorlagen generieren, können Sie eine davon ausprobieren. Da JSPs als Servlets implementiert sind (und die JSP-Spezifikation sie als Webkomponenten definiert), sind sie an den Servlet-Container gebunden.
2 für die Antwort № 2
Es gibt keine einfache Möglichkeit, dies mit einer einfachen JSP zu erreichen.
- Wie kann eine JSP-Layoutvorlage am besten erstellt werden?
- JSP-Tricks, um das Templating zu vereinfachen?
Eine andere Möglichkeit, JSP zu verwenden, wäre die Verwendung externer Frameworks, um die Aufgabe wie Apache Tiles und SiteMesh (hier erwähnt: Implementierung der JSP-Vorlage (zusammengesetztes Ansichtsmuster)).
Wenn Sie können, aktualisieren Sie auf Facelets, die aktuelle View-Technologie seit Java EE 6. Diese Technologie bietet bereits ein eingebautes Vorlagensystem, wie erläutert Hier und Hier.
2 für die Antwort № 3
Betrachten Sie diese Untermenge von JSP, die keine Abhängigkeit vom Servlet hat:
http://jstp.sourceforge.net/manual.html
0 für die Antwort № 4
Jsp ist eine innere Servelt, eine Java-Klasse, die normalerweise HTML ausgibt, wenn die Ausführung abgeschlossen ist.
Vielleicht solltest du die jsp-Datei einfach als reinen String behandeln, die "simpeDiv.set" -Methode ersetzt einfach die Werte von $ {key} durch $ {value}.