Šablónové motory na jar

1. Prehľad

Jarný webový rámec je postavený na vzore MVC (Model-View-Controller), ktorý uľahčuje oddelenie problémov v aplikácii. To umožňuje možnosť používať rôzne technológie zobrazenia, od osvedčenej technológie JSP až po rôzne šablónové motory.

V tomto článku sa pozrieme na hlavné šablónové motory, ktoré je možné použiť s Springom, ich konfiguráciu a príklady použitia.

2. Technológie Spring View

Vzhľadom na to, že obavy v jarnej aplikácii MVC sú čisto oddelené, je prechod z jednej zobrazovacej technológie na druhú predovšetkým vecou konfigurácie.

Na vykreslenie každého typu zobrazenia musíme definovať a ViewResolver fazuľa zodpovedajúca každej technológii. To znamená, že potom môžeme vrátiť názvy pohľadov z @ Kontrolór metódy mapovania rovnakým spôsobom, ako obvykle vraciame súbory JSP.

V nasledujúcich častiach sa budeme venovať tradičnejším technológiám ako Stránky servera Java, ako aj hlavné motory šablón, ktoré je možné použiť s pružinou: Thymeleaf, Groovy, FreeMarker, Jade.

Pre každú z nich prejdeme konfiguráciu potrebnú tak v štandardnej aplikácii Spring, ako aj v aplikácii zostavenej pomocou Jarná topánka.

3. Stránky servera Java

JSP je jednou z najpopulárnejších technológií zobrazenia aplikácií Java a podporuje ju program Spring out-of-the-box. Na vykreslenie súborov JSP sa bežne používa typ ViewResolver fazuľa je InternalResourceViewResolver:

@EnableWebMvc @Configuration verejná trieda ApplicationConfiguration implementuje WebMvcConfigurer {@Bean public ViewResolver jspViewResolver () {InternalResourceViewResolver bean = nový InternalResourceViewResolver (); bean.setPrefix ("/ WEB-INF / zobrazenia /"); bean.setSuffix (". jsp"); spätná fazuľa; }}

Ďalej môžeme začať vytvárať súbory JSP v / WEB-INF / zobrazenia umiestnenie:

    E-mail na registráciu používateľa: Heslo: 

Ak pridávame súbory do a Jarná topánka v aplikácii, potom namiesto v priečinku ApplicationConfiguration triedy môžeme definovať nasledujúce vlastnosti v application.properties spis:

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

Na základe týchto vlastností Jarná topánka automaticky nakonfiguruje potrebné ViewResolver.

4. Thymeleaf

Thymeleaf je šablónový modul Java, ktorý dokáže spracovať súbory HTML, XML, text, JavaScript alebo CSS. Na rozdiel od iných šablónových nástrojov Thymeleaf umožňuje použitie šablón ako prototypov, čo znamená, že ich možno zobraziť ako statické súbory.

4.1. Maven závislosti

Integrovať Thymeleaf s jarou musíme pridať thymeleaf a thymeleaf-spring4 závislosti:

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

Ak máme projekt Jar 4, musíme pridať thymeleaf-spring4.

4.2. Konfigurácia pružiny

Ďalej musíme pridať konfiguráciu, ktorá vyžaduje a SpringTemplateEngine fazuľa, ako aj a TemplateResolver fazuľa, ktorá určuje umiestnenie a typ súborov zobrazenia.

The SpringResourceTemplateResolver je integrovaný s jarným mechanizmom riešenia zdrojov:

@Configuration @EnableWebMvc verejná trieda ThymeleafConfiguration {@Bean public SpringTemplateEngine templateEngine () {SpringTemplateEngine templateEngine = nový SpringTemplateEngine (); templateEngine.setTemplateResolver (thymeleafTemplateResolver ()); vrátiť templateEngine; } @Bean public SpringResourceTemplateResolver thymeleafTemplateResolver () {SpringResourceTemplateResolver templateResolver = nový SpringResourceTemplateResolver (); templateResolver.setPrefix ("/ WEB-INF / zobrazenia /"); templateResolver.setSuffix (". html"); templateResolver.setTemplateMode ("HTML5"); vrátiť templateResolver; }}

Potrebujeme tiež ViewResolver fazuľa typu ThymeleafViewResolver:

@Bean public ThymeleafViewResolver thymeleafViewResolver () {ThymeleafViewResolver viewResolver = nový ThymeleafViewResolver (); viewResolver.setTemplateEngine (templateEngine ()); spať viewResolver; }

4.3. Thymeleaf Šablóny

Teraz môžeme pridať súbor HTML do súboru WEB-INF / zobrazenia umiestnenie:

   E-mail na registráciu používateľa: Heslo: 

Thymeleaf šablóny sú svojou syntaxou veľmi podobné šablónam HTML.

Niektoré z funkcií, ktoré sú k dispozícii pri používaní Thymeleaf v jarnej aplikácii sú:

    • podpora definovania správania foriem
    • väzba vstupov formulára na dátové modely
    • validácia vstupov formulára
    • zobrazovanie hodnôt zo zdrojov správ
    • fragmenty šablóny vykreslenia

Môžete si prečítať viac o používaní Thymeleaf šablóny v našom článku Thymeleaf na jar MVC.

4.4. Thymeleaf v Jarná topánka

Jarná topánka poskytne automatickú konfiguráciu pre Thymeleaf pridaním spring-boot-starter-thymeleaf závislosť:

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

Nie je potrebná žiadna explicitná konfigurácia. V predvolenom nastavení by mali byť súbory HTML umiestnené v priečinku zdroje / šablóny umiestnenie.

5. FreeMarker

FreeMarker je šablónový stroj založený na prostredí Java, ktorý vytvoril server Softvérová nadácia Apache. Môže byť použitý na generovanie webových stránok, ale aj zdrojového kódu, súborov XML, konfiguračných súborov, e-mailov a ďalších textových formátov.

Generovanie sa vykonáva na základe súborov šablón napísaných pomocou súboru Jazyk šablón FreeMarker.

5.1. Maven závislosti

Aby sme mohli začať používať šablóny v našom projekte, potrebujeme slobodný znalec závislosť:

 org.freemarker freemarker 2.3.23 

Pre jarnú integráciu potrebujeme tiež jarna-kontextova-podpora závislosť:

 org.springframework spring-context-support 5.2.8.RELEASE 

5.2. Konfigurácia pružiny

Integrácia FreeMarker s Spring MVC vyžaduje definovanie a FreemarkerConfigurer fazuľa, ktorá určuje umiestnenie súborov šablón:

@Configuration @EnableWebMvc verejná trieda FreemarkerConfiguration {@Bean public FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = nový FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / zobrazenia /"); vrátiť freeMarkerConfigurer; }}

Ďalej musíme definovať vhodné ViewResolver fazuľa typu FreeMarkerViewResolver:

@Bean public FreeMarkerViewResolver freemarkerViewResolver () {FreeMarkerViewResolver resolver = nový FreeMarkerViewResolver (); resolver.setCache (true); resolver.setPrefix (""); resolver.setSuffix (". ftl"); spätný rezolver; }

5.3. FreeMarker Šablóny

Šablónu HTML môžeme vytvoriť pomocou FreeMarker v WEB-INF / zobrazenia umiestnenie:

    E-mail na registráciu používateľa: Heslo: 

V príklade vyššie sme importovali množinu makier definovaných programom Spring na prácu s formulármi v FreeMarker, vrátane záväzných vstupov formulárov do dátových modelov.

Tiež Jazyk šablón FreeMarker obsahuje veľké množstvo značiek, smerníc a výrazov pre prácu s kolekciami, štruktúrami riadenia toku, logickými operátormi, formátovaním a analýzou reťazcov, číslami a mnohými ďalšími funkciami.

5.4. FreeMarker v Jarná topánka

V Jarná topánka potrebnú konfiguráciu môžeme zjednodušiť pomocou spring-boot-starter-freemarker závislosť:

 org.springframework.boot spring-boot-starter-freemarker 2.3.3. UVOĽNENIE 

Tento štartér pridáva potrebnú automatickú konfiguráciu. Všetko, čo musíme urobiť, je začať umiestňovať súbory šablón do priečinka zdroje / šablóny priečinok.

6. Groovy

Jarné zobrazenia MVC je tiež možné generovať pomocou Groovy Markup Template Engine. Tento modul je založený na syntaxi nástroja na vytváranie a je možné ho použiť na generovanie ľubovoľného textového formátu.

6.1. Maven závislosti

The groovy-šablóny je potrebné k našej závislosti pridať závislosť pom.xml:

 org.codehaus.groovy groovy-templates 2.4.12 

6.2. Konfigurácia pružiny

Integrácia Engine šablón značiek s Spring MVC vyžaduje definovanie a GroovyMarkupConfigurer fazuľa a a ViewResolver typu GroovyMarkupViewResolver:

@Configuration @EnableWebMvc verejná trieda GroovyConfiguration {@Bean public GroovyMarkupConfigurer groovyMarkupConfigurer () {GroovyMarkupConfigurer configurer = nový GroovyMarkupConfigurer (); configurer.setResourceLoaderPath ("/ WEB-INF / zobrazenia /"); konfigurátor návratu; } @Bean public GroovyMarkupViewResolver thymeleafViewResolver () {GroovyMarkupViewResolver viewResolver = nový GroovyMarkupViewResolver (); viewResolver.setSuffix (". tpl"); spať viewResolver; }}

6.3. Groovy Markup Šablóny

Šablóny sú napísané v jazyku Groovy a majú niekoľko charakteristík:

    • sú zostavené do bytecode
    • obsahujú podporu pre fragmenty a rozloženia
    • poskytujú podporu internacionalizácii
    • vykreslenie je rýchle

Vytvorme šablónu Groovy pre náš formulár „Registrácia používateľa“, ktorý obsahuje dátové väzby:

yieldUnescaped '' html (lang: 'en') {head {meta ('http-equiv': '"Content-Type"' + 'content = "text / html; charset = utf-8"') title ('Užívateľ Registration ')} body {form (id:' userForm ', action:' register ', method:' post ') {label (for:' email ',' Email ') input (name:' email ', type:' text ', value: user.email ?:' ') štítok (pre:' heslo ',' heslo ') vstup (názov:' heslo ', typ:' heslo ', hodnota: user.password ?:' ') div (trieda: 'form-actions') {vstup (typ: 'odoslať', hodnota: 'odoslať')}}}}

6.4. Groovy šablónový motor v Jarná topánka

Jarná topánka obsahuje automatickú konfiguráciu pre Groovy šablónový motor, ktorý sa pridáva zahrnutím jar-topánka-štartér-groovy-šablóny závislosť:

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

Predvolené umiestnenie šablón je / zdroje / šablóny.

7. Jade4j

Jade4j je implementácia Java v prostredí Java Mops šablónový stroj (pôvodne známy ako Jade) pre Javascript. Jade4j šablóny je možné použiť na generovanie súborov HTML.

7.1. Maven závislosti

Pre jarnú integráciu potrebujeme závislosť jar-jade4j:

 de.neuland-bfi spring-jade4j 1.2.5 

7.2. Konfigurácia pružiny

Použit Jade4j s Jarom musíme definovať a SpringTemplateLoader bean, ktorý konfiguruje umiestnenie šablón, ako aj a JadeConfiguration fazuľa:

@Configuration @EnableWebMvc verejná trieda JadeTemplateConfiguration {@Bean public SpringTemplateLoader templateLoader () {SpringTemplateLoader templateLoader = nový SpringTemplateLoader (); templateLoader.setBasePath ("/ WEB-INF / views /"); templateLoader.setSuffix (". jade"); vrátiť templateLoader; } @Bean public JadeConfiguration jadeConfiguration () {JadeConfiguration configuration = new JadeConfiguration (); configuration.setCaching (false); configuration.setTemplateLoader (templateLoader ()); návratová konfigurácia; }}

Ďalej potrebujeme obvyklé ViewResolver fazuľa, v tomto prípade typu JadeViewResolver:

@Bean public ViewResolver viewResolver () {JadeViewResolver viewResolver = nový JadeViewResolver (); viewResolver.setConfiguration (jadeConfiguration ()); spať viewResolver; }

7.3. Jade4j Šablóny

Jade4j šablóny sa vyznačujú ľahko použiteľnou syntaxou citlivou na medzery:

doctype html html titulok hlavy ") Heslo: vstup (typ =" heslo "meno =" heslo ") vstup (typ =" odoslať "hodnota =" Odoslať ")

Projekt tiež poskytuje veľmi užitočnú interaktívnu dokumentáciu, kde si môžete pozrieť výstup svojej šablóny už pri jej písaní.

Jarná topánka neposkytuje a Jade4j štartér, tak v a Topánka projektu, museli by sme pridať rovnakú jarnú konfiguráciu, ako je definované vyššie.

8. Ostatné šablónové motory

Okrem doteraz popísaných šablónových nástrojov je k dispozícii ešte niekoľko ďalších, ktoré je možné použiť.

Poďme si niektoré z nich v krátkosti zopakovať.

Rýchlosť je starší šablónový nástroj, ktorý je veľmi zložitý, ale má nevýhodu v tom, že program Spring od roku 4.3 s jeho používaním prestal pracovať a na jar 5.0.1 bol úplne odstránený.

JMustache je šablónový nástroj, ktorý sa dá ľahko integrovať do aplikácie Spring Boot pomocou pružina-boot-štartér-fúzy závislosť.

Kamienok obsahuje podporu pre jar a Jarná topánka v rámci svojich knižníc.

Ostatné šablónové knižnice ako napr Riadidlá alebo Reagovať, bežiaci na vrchole a JSR-223 skriptovací stroj ako napr Nashorn, môžu byť tiež použité.

9. Záver

V tomto článku sme prešli niektoré z najpopulárnejších šablónových nástrojov pre jarné webové aplikácie.

Celý zdrojový kód príkladov nájdete ako vždy na serveri GitHub.