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.