Sablon motorok tavaszra

1. Áttekintés

A Spring webes keretrendszer az MVC (Model-View-Controller) mintázat köré épül, ami megkönnyíti az aggályok elkülönítését egy alkalmazásban. Ez lehetővé teszi a különböző nézet technológiák használatát, a jól bevált JSP technológiától a különféle sablonmotorokig.

Ebben a cikkben megnézzük a Spring-sel használható fő sablonmotorokat, azok konfigurációját és felhasználási példáit.

2. Spring View Technologies

Tekintettel arra, hogy a Spring MVC alkalmazás aggályai tisztán el vannak választva, az egyik nézettől a másikig történő váltás elsősorban a konfiguráció kérdése.

Az egyes nézettípusok megjelenítéséhez meg kell határoznunk a ViewResolver az egyes technológiáknak megfelelő bab. Ez azt jelenti, hogy ezután visszaadhatjuk a nézetek nevét @Vezérlő a leképezési módszerek ugyanúgy visszaküldjük a JSP fájlokat.

A következő szakaszokban olyan hagyományos technológiákat fogunk áttekinteni, mint például Java szerver oldalak, valamint a Spring-hez használható fő sablonmotorok: Thymeleaf, Groovy, FreeMarker, Jade.

Ezek mindegyikén áttekintjük a szükséges konfigurációt mind a tavaszi Spring alkalmazásban, mind pedig egy alkalmazás segítségével Tavaszi csizma.

3. Java szerver oldalak

A JSP az egyik legnépszerűbb megtekintési technológia a Java alkalmazások számára, és a Spring out-of-the-box támogatja. A JSP fájlok rendereléséhez egy általánosan használt ViewResolver bab van InternalResourceViewResolver:

@EnableWebMvc @Configuration nyilvános osztály Az ApplicationConfiguration megvalósítja a WebMvcConfigurer {@Bean public ViewResolver jspViewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setPrefix ("/ WEB-INF / nézetek /"); bean.setSuffix (". jsp"); visszatérő bab; }}

Ezután elkezdhetjük a JSP fájlok létrehozását a / WEB-INF / nézetek elhelyezkedés:

    Felhasználói regisztráció e-mail: Jelszó: 

Ha a fájlokat hozzáadjuk a Tavaszi csizma alkalmazásban, majd a ApplicationConfiguration osztályban a következő tulajdonságokat definiálhatjuk egy an-ban alkalmazás.tulajdonságok fájl:

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

Ezen tulajdonságok alapján Tavaszi csizma automatikusan konfigurálja a szükségeseket ViewResolver.

4. Thymeleaf

Thymeleaf egy Java sablonmotor, amely HTML, XML, szöveges, JavaScript vagy CSS fájlokat képes feldolgozni. Más sablonmotorokkal ellentétben Thymeleaf lehetővé teszi a sablonok prototípusként való használatát, vagyis statikus fájlként tekinthetők meg.

4.1. Maven-függőségek

Integrálni Thymeleaf tavasszal hozzá kell adnunk a thymeleaf és tűlevelű-tavasz4 függőségek:

 org.thymeleaf thymeleaf 3.0.11.KÖZLEMÉNY org. thymeleaf thymeleaf-spring5 3.0.11. 

Ha van egy tavaszi 4 projektünk, akkor hozzá kell tennünk tűlevelű-tavasz4.

4.2. Tavaszi konfiguráció

Ezután hozzá kell adnunk a konfigurációt, amely megköveteli a SpringTemplateEngine bab, valamint a TemplateResolver bab, amely meghatározza a nézetfájlok helyét és típusát.

A SpringResourceTemplateResolver integrálva van a Spring erőforrás-feloldási mechanizmusával:

@Configuration @EnableWebMvc public class ThymeleafConfiguration {@Bean public SpringTemplateEngine templateEngine () {SpringTemplateEngine templateEngine = new SpringTemplateEngine (); templateEngine.setTemplateResolver (thymeleafTemplateResolver ()); return templateEngine; } @Bean public SpringResourceTemplateResolver thymeleafTemplateResolver () {SpringResourceTemplateResolver templateResolver = új SpringResourceTemplateResolver (); templateResolver.setPrefix ("/ WEB-INF / nézetek /"); templateResolver.setSuffix (". html"); templateResolver.setTemplateMode ("HTML5"); return templateResolver; }}

Szükségünk van a ViewResolver típusú bab ThymeleafViewResolver:

@Bean public ThymeleafViewResolver thymeleafViewResolver () {ThymeleafViewResolver viewResolver = új ThymeleafViewResolver (); viewResolver.setTemplateEngine (templateEngine ()); visszatérő viewResolver; }

4.3. Thymeleaf Sablonok

Most hozzáadhatunk egy HTML fájlt a WEB-INF / nézetek elhelyezkedés:

   Felhasználói regisztráció e-mail: Jelszó: 

Thymeleaf a sablonok szintaxisukban nagyon hasonlítanak a HTML sablonokhoz.

Néhány funkció, amely a használat során elérhető Thymeleaf tavaszi alkalmazásban:

    • támogatás a formák viselkedésének meghatározásához
    • űrlapbemeneteket köt az adatmodellekhez
    • űrlap bemenetek érvényesítése
    • értékek megjelenítése üzenetforrásokból
    • sablon töredékek renderelése

A használatról bővebben olvashat Thymeleaf sablonok a Thymeleaf in Spring MVC cikkünkben.

4.4. Thymeleaf ban ben Tavaszi csizma

Tavaszi csizma automatikus konfigurációt biztosít a Thymeleaf hozzáadásával a tavaszi-bakancs-indító-timeleaf függőség:

 org.springframework.boot spring-boot-starter-thymeleaf 2.3.3. KÖZLEMÉNY 

Nincs szükség kifejezett konfigurációra. Alapértelmezés szerint a HTML fájlokat a források / sablonok elhelyezkedés.

5. FreeMarker

FreeMarker egy Java alapú sablonmotor, amelyet a Apache Software Foundation. Használható weboldalak, de forráskód, XML fájlok, konfigurációs fájlok, e-mailek és egyéb szöveges formátumok létrehozására is.

A generálás a. Segítségével írt sablonfájlok alapján történik FreeMarker sablon nyelve.

5.1. Maven-függőségek

A projektünk sablonjainak használatához szükségünk van a freemarker függőség:

 org.freemarker freemarker 2.3.23 

A tavaszi integrációhoz szükségünk van a tavasz-kontextus-támogatás függőség:

 org.springframework tavaszi kontextus-támogatás 5.2.8.KÖZLEMÉNY 

5.2. Tavaszi konfiguráció

Integrálás FreeMarker a Spring MVC-vel meg kell határozni a FreemarkerConfigurer bab, amely meghatározza a sablonfájlok helyét:

@Configuration @EnableWebMvc public class FreemarkerConfiguration {@Bean public FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / nézetek /"); visszatérés freeMarkerConfigurer; }}

Ezután meg kell határoznunk egy megfelelőt ViewResolver típusú bab FreeMarkerViewResolver:

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

5.3. FreeMarker Sablonok

HTML sablont hozhatunk létre FreeMarker ban,-ben WEB-INF / nézetek elhelyezkedés:

    Felhasználói regisztráció e-mail: Jelszó: 

A fenti példában a Spring által definiált makrókészletet importáltuk az in formák kezeléséhez FreeMarker, beleértve az adatmodellekhez szükséges űrlapbevitelt.

Továbbá a FreeMarker sablon nyelve nagyszámú címkét, irányelvet és kifejezést tartalmaz a gyűjteményekkel, a folyamatvezérlő struktúrákkal, a logikai operátorokkal, a karakterláncok, számok és sok más szolgáltatás formázásával és elemzésével való együttműködéshez.

5.4. FreeMarker ban ben Tavaszi csizma

A Tavaszi csizma alkalmazással egyszerűsíthetjük a szükséges konfigurációt a tavaszi-csomagtartó-indító-szabadjelző függőség:

 org.springframework.boot spring-boot-starter-freemarker 2.3.3. KÖZLEMÉNY 

Ez az indító hozzáadja a szükséges automatikus konfigurációt. Csak annyit kell tennünk, hogy elkezdenénk elhelyezni a sablonfájljainkat a források / sablonok mappába.

6. Groovy

A tavaszi MVC nézetek a Groovy Markup Template Engine segítségével is előállíthatók. Ez a motor építői szintaxison alapul, és bármilyen szövegformátum előállítására használható.

6.1. Maven-függőségek

A groovy-sablonok hozzá kell adni a függőséget pom.xml:

 org.codehaus.groovy groovy-templates 2.4.12 

6.2. Tavaszi konfiguráció

A. Integrációja Markup Template Engine a Spring MVC-vel meg kell határozni a GroovyMarkupConfigurer bab és egy ViewResolver típusú GroovyMarkupViewResolver:

@Configuration @EnableWebMvc public class GroovyConfiguration {@Bean public GroovyMarkupConfigurer groovyMarkupConfigurer () {GroovyMarkupConfigurer configurer = new GroovyMarkupConfigurer (); configurer.setResourceLoaderPath ("/ WEB-INF / nézetek /"); visszatérési konfigurátor; } @Bean public GroovyMarkupViewResolver thymeleafViewResolver () {GroovyMarkupViewResolver viewResolver = new GroovyMarkupViewResolver (); viewResolver.setSuffix (". tpl"); visszatérő viewResolver; }}

6.3. Groovy jelölés Sablonok

A sablonokat Groovy nyelven írják, és számos jellemzővel rendelkeznek:

    • bájtkódokká vannak összeállítva
    • ezek tartalmazzák a töredékek és elrendezések támogatását
    • támogatást nyújtanak a nemzetközivé váláshoz
    • a megjelenítés gyors

Hozzunk létre egy Groovy sablont a „Felhasználói regisztráció” űrlapunkhoz, amely tartalmazza az adatkötéseket:

hozamUnescaped '' html (lang: 'en') {head {meta ('http-equiv': '"Content-Type"' + 'content = "text / html; charset = utf-8"') title ('Felhasználó Regisztráció ')} body {form (id:' userForm ', művelet:' register ', módszer:' post ') {label (for:' email ',' Email ') input (név:' email ', type:' text ', value: user.email ?:' ') label (for:' password ',' Password ') input (name:' password ', type:' password ', value: user.password ?:' ') div (osztály: 'űrlap-műveletek') {bevitel (típus: 'beküldés', érték: 'Küldés')}}}}

6.4. Groovy sablon motor ban ben Tavaszi csizma

Tavaszi csizma automatikus konfigurációt tartalmaz a Groovy sablon motor, amely hozzáadódik a spring-boot-starter-groovy-sablonok függőség:

 org.springframework.boot spring-boot-starter-groovy-templates 2.3.3. KÖZLEMÉNY 

A sablonok alapértelmezett helye a / resources / sablonok.

7. Jade4j

A Jade4j a Mopsz sablon motor (eredetileg Jade) a Javascripthez. Jade4j sablonok használhatók HTML fájlok létrehozására.

7.1. Maven-függőségek

A tavaszi integrációhoz szükségünk van a spring-jade4j függőségre:

 de.neuland-bfi spring-jade4j 1.2.5 

7.2. Tavaszi konfiguráció

Használni Jade4j tavasszal meg kell határoznunk a SpringTemplateLoader bab, amely konfigurálja a sablonok helyét, valamint a JadeConfiguration bab:

@Configuration @EnableWebMvc public class JadeTemplateConfiguration {@Bean public SpringTemplateLoader templateLoader () {SpringTemplateLoader templateLoader = new SpringTemplateLoader (); templateLoader.setBasePath ("/ WEB-INF / nézetek /"); templateLoader.setSuffix (". jade"); return templateLoader; } @Bean public JadeConfiguration jadeConfiguration () {JadeConfiguration configuration = new JadeConfiguration (); configuration.setCaching (hamis); configuration.setTemplateLoader (templateLoader ()); visszatérési konfiguráció; }}

Ezután szükségünk van a szokásosra ViewResolver bab, ebben az esetben típus JadeViewResolver:

@Bean public ViewResolver viewResolver () {JadeViewResolver viewResolver = new JadeViewResolver (); viewResolver.setConfiguration (jadeConfiguration ()); visszatérő viewResolver; }

7.3. Jade4j Sablonok

Jade4j a sablonokat a könnyen használható, szóközhöz érzékeny szintaxis jellemzi:

doctype html html head title Felhasználói regisztráció törzslapja (action = "register" method = "post") label (for = "email") E-mail: input (type = "text" name = "email") label (for = "password" ") Jelszó: input (type =" password "name =" password ") input (type =" submit "value =" Submit ")

A projekt egy nagyon hasznos interaktív dokumentációt is tartalmaz, ahol írás közben megtekintheti a sablon kimenetét.

Tavaszi csizma nem nyújt a Jade4j indító, tehát a Csomagtartó projekthez ugyanazt a tavaszi konfigurációt kell hozzáadnunk, mint fent definiáltuk.

8. Egyéb sablonmotorok

Az eddig leírt sablonmotorok mellett még jó néhány elérhető.

Nézzünk át röviden néhányat.

Sebesség egy régebbi sablonmotor, amely nagyon összetett, de hátránya, hogy a Spring a 4.3-as verzió óta elavult és teljesen eltávolította az 5.0.1-es tavasszal.

JMustache egy sablonmotor, amely könnyen integrálható a Spring Boot alkalmazásba a spring-boot-starter-bajusz függőség.

Kavics támogatja a Tavasz és Tavaszi csizma könyvtárain belül.

Más sablonkönyvtárak, mint pl Kormány vagy Reagál, fut a tetején JSR-223 script motor, mint pl Nashorn, is használható.

9. Következtetés

Ebben a cikkben áttekintettük a tavaszi webalkalmazások legnépszerűbb sablonmotorjait.

És mint mindig, a példák teljes forráskódja megtalálható a GitHub oldalon.


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