Skabelonmotorer til foråret

1. Oversigt

Spring Web Framework er bygget op omkring MVC-mønsteret (Model-View-Controller), hvilket gør det lettere at adskille bekymringer i en applikation. Dette giver mulighed for at bruge forskellige visningsteknologier, fra den veletablerede JSP-teknologi til en række skabelonmotorer.

I denne artikel skal vi se på de vigtigste skabelonmotorer, der kan bruges med Spring, deres konfiguration og eksempler på brug.

2. Spring View Technologies

I betragtning af at bekymringer i en Spring MVC-applikation er rent adskilt er det primært et spørgsmål om konfiguration at skifte fra en visningsteknologi til en anden.

For at gengive hver visningstype skal vi definere en ViewResolver bønne svarende til hver teknologi. Dette betyder, at vi derefter kan returnere visningsnavne fra @Kontrol kortlægningsmetoder på samme måde returnerer vi normalt JSP-filer.

I de følgende afsnit vil vi gennemgå mere traditionelle teknologier som f.eks Java-server sidersamt de vigtigste skabelonmotorer, der kan bruges med Spring: Thymeleaf, Groovy, FreeMarker, Jade.

For hver af disse vil vi gennemgå den nødvendige konfiguration både i en standard Spring-applikation og en applikation bygget ved hjælp af Spring Boot.

3. Java-server sider

JSP er en af ​​de mest populære visningsteknologier til Java-applikationer, og den understøttes af Spring out-of-the-box. Til gengivelse af JSP-filer er en almindeligt anvendt type ViewResolver bønne er InternalResourceViewResolver:

@EnableWebMvc @Configuration offentlig klasse ApplicationConfiguration implementerer WebMvcConfigurer {@Bean public ViewResolver jspViewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setPrefix ("/ WEB-INF / views /"); bean.setSuffix (". jsp"); retur bønne; }}

Dernæst kan vi begynde at oprette JSP-filer i / WEB-INF / visninger Beliggenhed:

    Brugerregistrerings-e-mail: Adgangskode: 

Hvis vi tilføjer filerne til en Spring Boot ansøgning, så i stedet for i ApplicationConfiguration klasse kan vi definere følgende egenskaber i en application.properties fil:

spring.mvc.view.prefix: / WEB-INF / views / spring.mvc.view.suffix: .jsp

Baseret på disse egenskaber, Spring Boot vil automatisk konfigurere det nødvendige ViewResolver.

4. Thymeleaf

Thymeleaf er en Java-skabelonmotor, der kan behandle HTML-, XML-, tekst-, JavaScript- eller CSS-filer. I modsætning til andre skabelonmotorer, Thymeleaf tillader brug af skabeloner som prototyper, hvilket betyder at de kan ses som statiske filer.

4.1. Maven afhængigheder

At integrere Thymeleaf med foråret skal vi tilføje thymeleaf og thymeleaf-spring4 afhængigheder:

 org.thymeleaf thymeleaf 3.0.11.RELEASE org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Hvis vi har et Spring 4-projekt, skal vi tilføje thymeleaf-spring4.

4.2. Forårskonfiguration

Dernæst skal vi tilføje den konfiguration, der kræver en SpringTemplateEngine bønne, samt en SkabelonResolver bønne, der angiver placeringen og typen af ​​visningsfilerne.

Det SpringResourceTemplateResolver er integreret med Spring's ressourceopløsningsmekanisme:

@Configuration @EnableWebMvc public class ThymeleafConfiguration {@Bean public SpringTemplateEngine templateEngine () {SpringTemplateEngine templateEngine = new SpringTemplateEngine (); templateEngine.setTemplateResolver (thymeleafTemplateResolver ()); returskabelonMotor; } @Bean public SpringResourceTemplateResolver thymeleafTemplateResolver () {SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver (); templateResolver.setPrefix ("/ WEB-INF / visninger /"); templateResolver.setSuffix (". html"); templateResolver.setTemplateMode ("HTML5"); retur skabelonResolver; }}

Vi har også brug for en ViewResolver bønne af typen ThymeleafViewResolver:

@Bean offentlig ThymeleafViewResolver thymeleafViewResolver () {ThymeleafViewResolver viewResolver = ny ThymeleafViewResolver (); viewResolver.setTemplateEngine (templateEngine ()); returner visningResolver; }

4.3. Thymeleaf Skabeloner

Nu kan vi tilføje en HTML-fil i WEB-INF / visninger Beliggenhed:

   Brugerregistrerings-e-mail: Adgangskode: 

Thymeleaf skabeloner er meget ens i syntaks til HTML-skabeloner.

Nogle af de funktioner, der er tilgængelige, når du bruger Thymeleaf i en Spring ansøgning er:

    • støtte til at definere formularer
    • bindende formularindgange til datamodeller
    • validering af formularindgange
    • visning af værdier fra meddelelseskilder
    • gengivelse af skabelonfragmenter

Du kan læse mere om brug Thymeleaf skabeloner i vores artikel Thymeleaf in Spring MVC.

4.4. Thymeleaf i Spring Boot

Spring Boot vil give automatisk konfiguration til Thymeleaf ved at tilføje spring-boot-starter-thymeleaf afhængighed:

 org.springframework.boot spring-boot-starter-thymeleaf 2.3.3.RELEASE 

Ingen eksplicit konfiguration er nødvendig. Som standard skal HTML-filer placeres i ressourcer / skabeloner Beliggenhed.

5. FreeMarker

FreeMarker er en Java-baseret skabelonmotor bygget af Apache Software Foundation. Det kan bruges til at generere websider, men også kildekode, XML-filer, konfigurationsfiler, e-mails og andre tekstbaserede formater.

Genereringen udføres på baggrund af skabelonfiler skrevet med FreeMarker-skabelonsprog.

5.1. Maven afhængigheder

For at begynde at bruge skabelonerne i vores projekt har vi brug for freemarker afhængighed:

 org.freemarker freemarker 2.3.23 

For integration af foråret har vi også brug for spring-context-support afhængighed:

 org.springframework spring-context-support 5.2.8.RELEASE 

5.2. Forårskonfiguration

Integrering FreeMarker med Spring MVC kræver definition af en FreemarkerConfigurer bønne, der specificerer placeringen af ​​skabelonfilerne:

@Configuration @EnableWebMvc public class FreemarkerConfiguration {@Bean public FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = ny FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / visninger /"); returner freeMarkerConfigurer; }}

Dernæst skal vi definere en passende ViewResolver bønne af typen FreeMarkerViewResolver:

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

5.3. FreeMarker Skabeloner

Vi kan oprette en HTML-skabelon ved hjælp af FreeMarker i WEB-INF / visninger Beliggenhed:

    Brugerregistrerings-e-mail: Adgangskode: 

I eksemplet ovenfor har vi importeret et sæt makroer defineret af Spring til at arbejde med formularer i FreeMarker, herunder bindende formularindgange til datamodeller.

Også den FreeMarker-skabelonsprog indeholder et stort antal tags, direktiver og udtryk til arbejde med samlinger, flowkontrolstrukturer, logiske operatorer, formatering og parsing af strenge, tal og mange flere funktioner.

5.4. FreeMarker i Spring Boot

I en Spring Boot applikation, kan vi forenkle den nødvendige konfiguration ved hjælp af spring-boot-starter-freemarker afhængighed:

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

Denne starter tilføjer den nødvendige autokonfiguration. Alt hvad vi skal gøre er at begynde at placere vores skabelonfiler i ressourcer / skabeloner folder.

6. Groovy

Spring MVC-visninger kan også genereres ved hjælp af Groovy Markup Template Engine. Denne motor er baseret på en byggesyntaks og kan bruges til at generere ethvert tekstformat.

6.1. Maven afhængigheder

Det groovy-skabeloner afhængighed skal føjes til vores pom.xml:

 org.codehaus.groovy groovy-skabeloner 2.4.12 

6.2. Forårskonfiguration

Integrationen af Markup Template Engine med Spring MVC kræver definition af en GroovyMarkupConfigurer bønne og en ViewResolver af typen GroovyMarkupViewResolver:

@Configuration @EnableWebMvc public class GroovyConfiguration {@Bean public GroovyMarkupConfigurer groovyMarkupConfigurer () {GroovyMarkupConfigurer configurer = ny GroovyMarkupConfigurer (); configurer.setResourceLoaderPath ("/ WEB-INF / visninger /"); returkonfigurator; } @Bean offentlig GroovyMarkupViewResolver thymeleafViewResolver () {GroovyMarkupViewResolver viewResolver = ny GroovyMarkupViewResolver (); viewResolver.setSuffix (". tpl"); returner visningResolver; }}

6.3. Groovy Markup Skabeloner

Skabeloner er skrevet på Groovy-sproget og har flere karakteristika:

    • de er samlet til bytekode
    • de indeholder støtte til fragmenter og layout
    • de yder støtte til internationalisering
    • gengivelsen er hurtig

Lad os oprette en Groovy-skabelon til vores "Brugerregistrering" -formular, som inkluderer databindinger:

yieldUnescaped '' html (lang: 'en') {head {meta ('http-equiv': '"Content-Type"' + 'content = "text / html; charset = utf-8"') title ('Bruger Registrering ')} body {form (id:' userForm ', action:' register ', method:' post ') {label (for:' email ',' Email ') input (navn:' email ', type:' tekst ', værdi: bruger.email ?:' ') etiket (til:' adgangskode ',' adgangskode ') input (navn:' adgangskode ', type:' adgangskode ', værdi: bruger.passord ?:' ') div (klasse: 'form-actions') {input (type: 'send', værdi: 'Submit')}}}

6.4. Groovy skabelonmotor i Spring Boot

Spring Boot indeholder automatisk konfiguration til Groovy skabelonmotor, som tilføjes ved at inkludere spring-boot-starter-groovy-skabeloner afhængighed:

 org.springframework.boot spring-boot-starter-groovy-templates 2.3.3.RELEASE 

Skabelonernes standardplacering er / ressourcer / skabeloner.

7. Jade4j

Jade4j er Java-implementeringen af Mops skabelonmotor (oprindeligt kendt som Jade) til Javascript. Jade4j skabeloner kan bruges til at generere HTML-filer.

7.1. Maven afhængigheder

Til Spring-integration har vi brug for spring-jade4j-afhængighed:

 de.neuland-bfi spring-jade4j 1.2.5 

7.2. Forårskonfiguration

At bruge Jade4j med Spring skal vi definere en SpringTemplateLoader bønne, der konfigurerer placeringen af ​​skabelonerne samt en JadeConfiguration bønne:

@Configuration @EnableWebMvc public class JadeTemplateConfiguration {@Bean public SpringTemplateLoader templateLoader () {SpringTemplateLoader templateLoader = new SpringTemplateLoader (); templateLoader.setBasePath ("/ WEB-INF / visninger /"); templateLoader.setSuffix (". jade"); returner templateLoader; } @Bean offentlig JadeConfiguration jadeConfiguration () {JadeConfiguration-konfiguration = ny JadeConfiguration (); configuration.setCaching (falsk); configuration.setTemplateLoader (templateLoader ()); returkonfiguration; }}

Dernæst har vi brug for det sædvanlige ViewResolver bønne, i dette tilfælde af typen JadeViewResolver:

@Bean public ViewResolver viewResolver () {JadeViewResolver viewResolver = ny JadeViewResolver (); viewResolver.setConfiguration (jadeConfiguration ()); returner visningResolver; }

7.3. Jade4j Skabeloner

Jade4j skabeloner er kendetegnet ved en brugervenlig, mellemrumsfølsom syntaks:

doktype html html-hovedtitel Brugerregistreringsformular (handling = "register" metode = "post") etiket (for = "e-mail") E-mail: input (type = "tekst" navn = "e-mail") etiket (for = "adgangskode ") Adgangskode: input (type =" adgangskode "navn =" adgangskode ") input (type =" indsend "værdi =" Indsend ")

Projektet giver også en meget nyttig interaktiv dokumentation, hvor du kan se output fra din skabelon, mens du skriver den.

Spring Boot giver ikke en Jade4j starter, så i en Støvle projekt, skulle vi tilføje den samme fjederkonfiguration som defineret ovenfor.

8. Andre skabelonmotorer

Udover de skabelonmotorer, der hidtil er beskrevet, er der en hel del mere tilgængelige, som kan bruges.

Lad os gennemgå nogle af dem kort.

Hastighed er en ældre skabelonmotor, som er meget kompleks, men har den ulempe, at Spring har forældet brugen siden version 4.3 og fjernet fuldstændigt i Spring 5.0.1.

JMustache er en skabelonmotor, der let kan integreres i en Spring Boot-applikation ved hjælp af spring-boot-starter-overskæg afhængighed.

Rullesten indeholder støtte til forår og Spring Boot inden for dets biblioteker.

Andre skabelonbiblioteker som f.eks Styr eller Reagere, kører oven på en JSR-223 scriptmotor som f.eks Nashorn, kan også bruges.

9. Konklusion

I denne artikel har vi gennemgå nogle af de mest populære skabelonmotorer til forårets webapplikationer.

Og som altid kan den fulde kildekode for eksemplerne findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found