Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
jstachio__jstachio_CVE-2023-33962_1-0-0 — Typsicheres Java-Mustache-Templating-Engine mit Kompilierzeit-Template-Validierung, statischer Wertbindung und erweiterbarem Escaping für HTML und andere Inhaltstypen. | Kitploit
Tools/GitHubGitHub/shoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0
Allgemeine DienstprogrammeStatische Code-Analyse (SAST)Code-AnalyseWebsicherheitLernen & Bildung
GitHubshoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0

jstachio__jstachio_CVE-2023-33962_1-0-0

Typsicheres Java-Mustache-Templating-Engine mit Kompilierzeit-Template-Validierung, statischer Wertbindung und erweiterbarem Escaping für HTML und andere Inhaltstypen.

Repository anzeigen
19vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Maven Central Github

jstachio

Eine typsichere Java-Mustache-Template-Engine.

Templates werden in lesbaren Java-Quellcode kompiliert und Wertbindungen werden statisch geprüft.

Dokumentation

  • Neueste SNAPSHOT-JStachio-Dokumentation
  • Aktuell veröffentlichte JStachio-Dokumentation

Die Dokumentation ist auch auf javadoc.io verfügbar, aber nicht so aggregiert wie die obige. Das aggregierte Javadoc ist die bevorzugte Dokumentation, und der Rest dieser README dient hauptsächlich Propaganda Marketingzwecken.

Für frühere Versionen:

https://jstach.io/doc/jstachio/VERSION/apidocs

Wobei VERSION die gewünschte Version ist.

Warum JStachio wählen

Behandelt in why_jstachio_is_better.md.

Funktionen

  • Logiklose Mustache (v 1.3)-Syntax.

    • Volle Unterstützung der nicht-optionalen Anforderungen der Mustache-Spezifikation v1.3.0 (einschließlich Leerzeichen)
    • Optionale Unterstützung für Vererbung mit einigen Einschränkungen
    • Optionale Lambda-Unterstützung mit einigen Unterschieden aufgrund der statischen Natur
  • Erhalten Sie JEP 430-ähnliche Unterstützung bereits heute, aber mit noch mehr Leistungsfähigkeit.

  • Templates werden in Java-Code kompiliert

  • Wertbindungen werden statisch geprüft.

  • Methoden, Felder und Getter-Methoden können in Templates referenziert werden.

  • Verständliche Fehlermeldungen mit Kontext.

  • Keine Konfiguration. Es sind keine Plugins oder Anpassungen erforderlich. Alles wird mit standardmäßigem javac in jeder IDE und/oder jedem Build-System erledigt.

  • Nicht-HTML-Templates werden unterstützt. Die Menge der unterstützten Escaping-Inhaltstypen ist erweiterbar.

  • Layouts werden über die Mustache-Vererbungsspezifikation unterstützt.

  • Erweiterungspunkt für Fallback-Rendering über ServiceLoader

    • Nahtloser Fallback auf reflexionsbasiertes Laufzeit-Rendering über JMustache und mustache.java (nützlich für die Entwicklung und zum Ändern von Templates in Echtzeit)
    • Wenn Sie kein Fan von generiertem Code sind, können Sie JStachio dennoch verwenden, um Ihre Mustache-Templates typprüfen zu lassen.
  • Passen Sie die zulässigen Typen an, die ausgegeben werden können, andernfalls Compilerfehler (um toString bei Klassen zu vermeiden, die kein freundliches toString haben).

  • Formatter für benutzerdefiniertes toString von Variablen zur Laufzeit

  • Fügen Sie dem generierten Code zusätzliche implements-Schnittstellen für trait-artige Add-ons hinzu (@JStacheInterfaces)

  • Leistungsstarke Lambda-Unterstützung

  • Map<String, ?>-Unterstützung

  • Optional<?>-Unterstützung

  • Kompatibel mit den Listenindex-Erweiterungen von JMustache und Handlebars (wie -first, -last, -index)

  • Es ist mit Abstand die schnellste Java-Mustache-ähnliche Template-Engine und zugleich eine der schnellsten überhaupt.

  • Keine Abhängigkeiten außer JStachio selbst

  • Es ist eine Option mit absolut null Laufzeitabhängigkeiten verfügbar (d. h. der gesamte benötigte Code wird generiert und nicht einmal jstachio wird zur Laufzeit benötigt). Keine Notwendigkeit, Maven Shade für Annotation-Processor und andere Zero-Dependency-Projekte zu verwenden. Auch nützlich für native Graal-VM-Projekte, um einen möglichst minimalen Fußabdruck zu erzielen.

  • Erstklassige Unterstützung für Spring Framework (das Projekt selbst stellt also Plugins bereit, im Gegensatz zu einem Hilfsprojekt)

Leistung

Es ist nicht das Ziel dieses Projekts, die schnellste Java-Template-Engine zu sein!

(es ist jedoch derzeit die schnellste, die mir bekannt ist, als diese README zuletzt aktualisiert wurde)

Nicht, dass Leistung bei Template-Sprachen eine große Rolle spielt (sie ist selten der Flaschenhals), aber JStachio ist sehr schnell:

https://github.com/agentgt/template-benchmark

String-Ausgabe

Template Comparison

UTF-8-Byte-Ausgabe mit erweiterten Zeichen

Template Comparison

Kurzes Beispiel


@JStache(template = """
        {{#people}}
        {{message}} {{name}}! You are {{#ageInfo}}{{age}}{{/ageInfo}} years old!
        {{#-last}}
        That is all for now!
        {{/-last}}
        {{/people}}
        """)
public record HelloWorld(String message, List<Person> people) implements AgeLambdaSupport {
}

public record Person(String name, LocalDate birthday) {
}

public record AgeInfo(long age, String date) {
}

public interface AgeLambdaSupport {

    @JStacheLambda
    default AgeInfo ageInfo(Person person) {
        long age = ChronoUnit.YEARS.between(person.birthday(), LocalDate.now());
        String date = person.birthday().format(DateTimeFormatter.ISO_DATE);
        return new AgeInfo(age, date);
    }

}

@Test
public void testPerson() throws Exception {
    Person rick = new Person("Rick", LocalDate.now().minusYears(70));
    Person morty = new Person("Morty", LocalDate.now().minusYears(14));
    Person beth = new Person("Beth", LocalDate.now().minusYears(35));
    Person jerry = new Person("Jerry", LocalDate.now().minusYears(35));
    String actual = JStachio.render(new HelloWorld("Hello alien", List.of(rick, morty, beth, jerry)));
    String expected = """
            Hello alien Rick! You are 70 years old!
            Hello alien Morty! You are 14 years old!
            Hello alien Beth! You are 35 years old!
            Hello alien Jerry! You are 35 years old!
            That is all for now!
                            """;
    assertEquals(expected, actual);

}

Installation

Maven

<properties>
    <io.jstach.version>0.6.0-SNAPSHOT</io.jstach.version>
</properties>
...
<dependencies>
    <dependency>
        <groupId>io.jstach</groupId>
        <artifactId>jstachio</artifactId>
        <version>${io.jstach.version}</version>
    </dependency>
</dependencies>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>17</source> <!-- 17 is the minimum -->
                <target>17</target> <!-- 17 is the minimum -->
                <annotationProcessorPaths>
                    <path>
                        <groupId>io.jstach</groupId>
                        <artifactId>jstachio-apt</artifactId>
                        <version>${io.jstach.version}</version>
                    </path>
                    <!-- other annotation processors -->
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

N.B. Das Annotations-JAR (jstachio-annotation) wird transitiv eingebunden

Gradle

dependencies {
 
    implementation 'io.jstach:jstachio:VERSION'
 
    annotationProcessor 'io.jstach:jstachio-apt:VERSION'
}

Beispiele

user.mustache

{{#name}}
<p>Name: {{.}}, Name Length is {{length}}</p>
{{/name}}
Tool herunterladen