Introduktion til brug af FreeMarker i Spring MVC

1. Oversigt

FreeMarker er en Java-baseret skabelonmotor fra Apache Software Foundation. Ligesom andre skabelonmotorer er FreeMarker designet til at understøtte HTML-websider i applikationer, der følger MVC-mønsteret. Denne vejledning illustrerer, hvordan man gør det konfigurere FreeMarker til brug i Spring MVC som et alternativ til JSP.

Artiklen diskuterer ikke det grundlæggende i foråret MVC-brug. For en grundig gennemgang af det henvises til denne artikel. Derudover er dette ikke beregnet til at være et detaljeret kig på FreeMarkers omfattende kapaciteter. For mere information om FreeMarker-brug og syntaks, besøg dets websted.

2. Maven-afhængigheder

Da dette er et Maven-baseret projekt, tilføjer vi først de krævede afhængigheder til pom.xml:

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

3. Konfigurationer

Lad os nu dykke ned i konfigurationen af ​​projektet. Dette er et annoteringsbaseret Spring-projekt, så vi demonstrerer ikke den XML-baserede konfiguration.

3.1. Forår webkonfiguration

Lad os oprette en klasse til konfiguration af webkomponenter. Til det er vi nødt til at kommentere klassen med @EnableWebMvc, @Konfiguration og @ComponentScan.

@EnableWebMvc @Configuration @ComponentScan ({"com.baeldung.freemarker"}) offentlig klasse SpringWebConfig udvider WebMvcConfigurerAdapter {// Al webkonfiguration går her. }

3.2. Konfigurer ViewResolver

Spring MVC Framework giver ViewResolverinterface, der kortlægger visningsnavne til faktiske visninger. Vi opretter en forekomst af FreeMarkerViewResolver, som hører til fjeder-webmvc afhængighed.

Objektet skal konfigureres med de krævede værdier, der vil blive brugt i løbetid. For eksempel konfigurerer vi visningsopløseren til at bruge FreeMarker til visninger, der slutter på .ftl:

@Bean offentlig FreeMarkerViewResolver freemarkerViewResolver () {FreeMarkerViewResolver resolver = ny FreeMarkerViewResolver (); resolver.setCache (sand); resolver.setPrefix (""); resolver.setSuffix (". ftl"); returopløsning; }

Bemærk også, hvordan vi også kan kontrollere cachetilstanden her - dette bør kun deaktiveres til fejlfinding og udvikling.

3.3. FreeMarker-skabelonsti-konfiguration

Dernæst indstiller vi skabelonstien, som angiver, hvor skabelonerne er placeret i webkonteksten:

@Bean offentlig FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = ny FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / visninger / ftl /"); returner freeMarkerConfigurer; }

3.4. Spring Controller Configuration

Nu kan vi bruge en Spring Controller til at behandle en FreeMarker-skabelon til visning. Dette er simpelthen en konventionel fjedercontroller:

@RequestMapping (værdi = "/ biler", metode = RequestMethod.GET) offentlig strenginit (@ModelAttribute ("model") ModelMap-model) {model.addAttribute ("carList", carList); returner "indeks"; }

Det FreeMarkerViewResolver og stykonfigurationer, der er defineret tidligere, sørger for at oversætte visningsnavnet indeks til den korrekte FreeMarker-visning.

4. FreeMarker HTML-skabelon

4.1. Opret enkel HTML-skabelonvisning

Det er nu tid til at oprette en HTML-skabelon med FreeMarker. I vores eksempel tilføjede vi en liste over biler til modellen. FreeMarker kan få adgang til denne liste og vise den ved at gentage dens indhold.

Når der fremsættes en anmodning om / biler URI, Spring behandler skabelonen ved hjælp af den model, den leveres. I vores skabelon, #liste direktiv angiver, at FreeMarker skal løkke over carList objekt fra modellen ved hjælp af bil at henvise til det aktuelle element og gengive indholdet inden for den blok.

Følgende kode inkluderer også FreeMarker udtryk at henvise til attributterne for hvert element i carList; eller f.eks. for at få vist det aktuelle bilelement lave egenskab, bruger vi udtrykket $ {bil.mak}.

FreeMarker Spring MVC Hello World

Tilføj bilmærke:

Model:

LaveModel
$ {bil.mak}$ {bil.model}

Efter styling af output med CSS genererer den behandlede FreeMarker-skabelon en form og en liste over biler:

5. Spring Boot

Hvis vi bruger Spring Boot, kan vi simpelthen importere spring-boot-starter-freemarker afhængighed:

 org.springframework.boot spring-boot-starter-freemarker 2.3.4.RELEASE 

Derefter skal vi blot tilføje vores skabelonfiler under src / main / ressourcer / skabeloner. Spring Boot har ansvaret for andre standardkonfigurationer som f.eks FreeMarkerConfigurer og FreeMarkerViewResolver.

6. Konklusion

I denne artikel diskuterede vi, hvordan man integrerer FreeMarker i en Spring MVC-applikation. FreeMarkers kapaciteter går langt ud over, hvad vi demonstrerede, så besøg Apache FreeMarker-webstedet for mere detaljeret information om brugen.

Eksempelkoden i denne artikel er tilgængelig i et projekt på Github.