Einführung in die Verwendung von FreeMarker in Spring MVC

Einführung in die Verwendung von FreeMarker in Spring MVC

1. Überblick

FreeMarker ist eine Java-basierte Vorlagen-Engine der Apache Software Foundation. Wie andere Template-Engines unterstützt FreeMarker HTML-Webseiten in Anwendungen, die dem MVC-Muster folgen. Dieses Tutorial zeigt, wieconfigure FreeMarker for use in Spring MVC als Alternative zu JSP verwendet werden.

In diesem Artikel werden die Grundlagen der Verwendung von Spring MVC nicht erläutert. Weitere Informationen hierzu finden Sie unterthis article. Darüber hinaus soll dies kein detaillierter Blick auf die umfangreichen Funktionen von FreeMarker sein. Weitere Informationen zur Verwendung und Syntax von FreeMarker finden Sie unterits website.

2. Maven-Abhängigkeiten

Da es sich um ein Maven-basiertes Projekt handelt, fügen wir zunächst die erforderlichen Abhängigkeiten zupom.xml hinzu:


    org.freemarker
    freemarker
    2.3.23


    org.springframework
    spring-context-support
    ${spring.version}

3. Konfigurationen

Lassen Sie uns nun in die Konfiguration des Projekts eintauchen. Dies ist ein annotationsbasiertes Spring-Projekt, daher wird die XML-basierte Konfiguration nicht demonstriert.

3.1. Spring Web-Konfiguration

Erstellen Sie eine Klasse zum Konfigurieren der Webkomponenten. Dazu müssen wir die Klasse mit@EnableWebMvc,@Configuration und@ComponentScan versehen.

@EnableWebMvc
@Configuration
@ComponentScan({"com.example.freemarker"})
public class SpringWebConfig extends WebMvcConfigurerAdapter {
    // All web configuration will go here.
}

3.2. Konfigurieren SieViewResolver

Spring MVC Framework bietet dieViewResolver-Schnittstelle, über die Ansichtsnamen tatsächlichen Ansichten zugeordnet werden. Wir werden eine Instanz vonFreeMarkerViewResolver erstellen, die zur Abhängigkeit vonspring-webmvcgehört.

Dieses Objekt muss mit den erforderlichen Werten konfiguriert werden, die zur Laufzeit verwendet werden. Zum Beispiel werden wir den Ansichtsauflöser so konfigurieren, dass FreeMarker für Ansichten verwendet wird, die mit.ftl enden:

@Bean
public FreeMarkerViewResolver freemarkerViewResolver() {
    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
    resolver.setCache(true);
    resolver.setPrefix("");
    resolver.setSuffix(".ftl");
    return resolver;
}

Beachten Sie auch, dass wir hier auch den Caching-Modus steuern können - dieser sollte nur für Debugging und Entwicklung deaktiviert werden.

3.3. Konfiguration des FreeMarker-Vorlagenpfads

Als Nächstes legen wir den Vorlagenpfad fest, der angibt, wo sich die Vorlagen im Webkontext befinden:

@Bean
public FreeMarkerConfigurer freemarkerConfig() {
    FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
    freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/ftl/");
    return freeMarkerConfigurer;
}

3.4. Konfiguration des Federreglers

Jetzt können wir einen Federregler fürprocess a FreeMarker template for display verwenden. Dies ist einfach ein herkömmlicher Federkontroller:

@RequestMapping(value = "/cars", method = RequestMethod.GET)
public String init(@ModelAttribute("model") ModelMap model) {
    model.addAttribute("carList", carList);
    return "index";
}

Die zuvor definiertenFreeMarkerViewResolver und Pfadkonfigurationen sorgen dafür, dass der Ansichtsnameindex in die richtige FreeMarker-Ansicht übersetzt wird.

4. FreeMarker HTML-Vorlage

4.1. Erstellen Sie eine einfache HTML-Vorlagenansicht

Es ist jetzt Zeit, einHTML template with FreeMarker zu erstellen. In unserem Beispiel haben wir dem Modell eine Liste von Autos hinzugefügt. FreeMarker kann auf diese Liste zugreifen und sie anzeigen, indem der Inhalt durchlaufen wird.

Wenn eine Anforderung für den URI/carsgestellt wird, verarbeitet Spring die Vorlage unter Verwendung des bereitgestellten Modells. In unserer Vorlage gibt#list directive an, dass FreeMarker dascarList-Objekt aus dem Modell durchlaufen soll, wobeicar verwendet wird, um auf das aktuelle Element zu verweisen und den Inhalt innerhalb dieses Blocks zu rendern.

Der folgende Code enthält auchFreeMarkerexpressions, um auf die Attribute jedes Elements incarList zu verweisen. Um beispielsweise diemake-Eigenschaft des aktuellen Autoelements anzuzeigen, verwenden wir den Ausdruck$\{car.make}.


Add Car
Make :
Model:

<#list model["carList"] as car>
Make Model
${car.make} ${car.model}

Nach dem Stylen der Ausgabe mit CSS generiert die verarbeitete FreeMarker-Vorlage eine Form und eine Liste von Autos:

browser_localhost-300x235

5. Fazit

In diesem Artikel diskutierten wir die Integration vonFreeMarker in a Spring MVC application. FreeMarkers Fähigkeiten gehen weit über das, was wir demonstrierten, also besuchen Sie dieApache FreeMarker website für detailliertere Informationen über seine Verwendung.

Der Beispielcode in diesem Artikel ist in einem Projekt fürGithub verfügbar.