2013-02-21 6 views
5

Gibt es etwas sicherer als JSP? Ich habe keine sinnvollen Antworten über Google gefunden. Derzeit verwenden wir das Spring MVC-Framework und JSP zum Rendern von HTML. Ich bin dazu gekommen, die dynamische Natur des JSP-Renderings zu hassen, indem Sie auf ein Modell wie ${model.someAttribute} verweisen, aber nicht wissen, ob dieses Attribut im gegebenen Modul verfügbar ist oder den Typ des Modells angibt, das das Template erwartet. Es wird sehr schwierig, die Getter der Modelle zu refaktorieren, da Eclipse nicht weiß, welche Vorlagen das Modell verwenden, und außerdem die Getter nicht mit den Eigenschaftenzugriffsmitteln in Vorlagen verknüpfen kann.Alle typsicheren Alternativen zu JSP Templating

Gibt es eine Templating-Technologie, die weniger hässlich ist, als HTML-Code über imperativen Code auszuspucken und mehr Typ/kompilieren als JSPs?

+0

vielleicht versuchen IntelliJ? – irreputable

+0

@irreputable, unterstützt es irgendwie das Refactoring von Bean-Eigenschaftsnamen und kümmert sich auch um Vorlagen? – d56

Antwort

0

Lift (basierend auf Scala) bietet ein sehr schönes Modell mit guter Trennung des HTML-Layouts vom eigentlichen Anwendungscode (Snippets genannt). Während die Eintrittsbarriere zunächst hoch erscheinen mag, sind die Gewinne auf längere Sicht sehr groß. Ein großer Vorteil ist, dass es auf der JVM ausgeführt wird, so dass Sie die meisten Ihrer Java-Bibliotheken und anderen Code wiederverwenden können.

+0

Scheint auch nicht kompiliersicher zu sein, oder gibt es Tools, die sicherstellen, dass Sie nicht auf undefinierte Eigenschaften und Werkzeuge zugreifen, die beim Refactoring von Eigenschaftsnamen helfen? – d56

+0

@ d56 Eigentlich ist es. In Ihrem HTML-Code markieren Sie einfach Ihre Elemente, die die Anwendung dynamisch mit speziellen CSS-Klassen oder IDs füllen soll. Der Code, der sie ausfüllt, ist normaler Scala-Code, den der Compiler und Ihre IDE in vollem Umfang validieren, einschließlich Typ-Sicherheit. –

0

Ich glaube, JXT Ziele sind sowohl XSS Sicherheit und Typ-Modell Sicherheit, und es wurde entwickelt, um einfach von JSPs zu wechseln.

Ihre pipeline Beschreibung erklärt, dass ihre Ausdrücke Java-Ausdrücken näher zugeordnet werden, so erhalten Sie Java-artige Fehler, wenn Ihre Ausdrücke einen Typ nicht übereinstimmen.

+0

OPs Problem ist Tool-Unterstützung für statische Analyse, Refactoring, Code-Vervollständigung etc. – irreputable

+0

@irreputable, interpretierte ich "ich fragte mich nur, ob es etwas sicherer als JSP ist ..." und "Es sollte eine Art mehr statische Templating-Technologie sein da draußen ... "als nach Alternativen zu JSP fragen. Wenn Sie glauben, dass ich einen Fehler gemacht habe, bitten Sie das Poster um eine Klarstellung. –

2

Sie können Typhinweise, z. die type attribute in JSP: UseBean und in den Attributdeklarationen von JSP-Tag-Dateien (und wahrscheinlich an anderen Orten wie JSTL-Tags). IntelliJ wird dann alle guten, auf statischem Typ basierenden Sachen für Sie erledigen (genaue Vorschläge zur Code-Vervollständigung, Refactoring, Verwendungen finden, schnelle javadoc zeigen, etc.).

Ich habe gerade darüber im Zusammenhang von JSP tag files geschrieben.

0

Haben es nicht tatsächlich verwendet, aber Twirl (https://www.playframework.com/documentation/2.5.x/JavaTemplates) nennt sich "eine Art sichere Vorlage-Engine auf Scala" (kann anscheinend in Play für Java verwendet werden).

Zitat:

Eine Art sichere Motor Vorlage basierte auf Scala Wiedergabe mit Whirl kommt, ein leistungsstarken Scala-basierten Template-Engine, dessen Design von ASP.NET Razor inspiriert wurde. Insbesondere ist es:

kompakt, ausdrucksstark und flüssig: Es minimiert die Anzahl der Zeichen und Tastenanschläge in einer Datei benötigt, und ermöglicht eine schnelle, flüssige Codierung Workflow. Im Gegensatz zu den meisten Schablonensyntaxen müssen Sie Ihre Codierung nicht unterbrechen, um Serverblöcke innerhalb Ihres HTML explizit zu kennzeichnen. Der Parser ist schlau genug, dies aus Ihrem Code abzuleiten. Dies ermöglicht eine sehr kompakte und ausdrucksstarke Syntax, die sauber, schnell und einfach zu schreiben ist.

leicht zu erlernen: Sie können schnell produktiv werden, mit einem Minimum an Konzepten. Sie verwenden einfache Scala-Konstrukte und all Ihre vorhandenen HTML-Kenntnisse.

keine neue Sprache: Wir haben uns bewusst dafür entschieden, keine neue Sprache zu erstellen. Stattdessen wollten wir es Scala-Entwicklern ermöglichen, ihre vorhandenen Scala-Sprachkenntnisse zu nutzen und eine Template-Markup-Syntax zur Verfügung zu stellen, die einen beeindruckenden HTML-Konstruktionsworkflow ermöglicht.

editierbar in jedem Texteditor: Es erfordert kein spezielles Werkzeug und ermöglicht es Ihnen, in jedem einfachen alten Texteditor produktiv zu sein.