Predlošci za proljeće

1. Pregled

Proljetni mrežni okvir izgrađen je oko uzorka MVC (Model-View-Controller), što olakšava razdvajanje problema u aplikaciji. To omogućuje mogućnost korištenja različitih tehnologija prikaza, od dobro uspostavljene JSP tehnologije do različitih mehanizama predložaka.

U ovom ćemo članku pogledati glavne mehanizme predložaka koji se mogu koristiti s Springom, njihovu konfiguraciju i primjere upotrebe.

2. Spring View Technologies

S obzirom na to da su brige u Spring MVC aplikaciji čisto odvojene, prelazak s jedne tehnologije prikaza na drugu prvenstveno je pitanje konfiguracije.

Da bismo prikazali svaku vrstu prikaza, moramo definirati a ViewResolver grah koji odgovara svakoj tehnologiji. To znači da tada možemo vratiti imena pogleda iz @Controller metode mapiranja na isti način na koji obično vraćamo JSP datoteke.

U sljedećim odjeljcima ćemo proučiti više tradicionalnih tehnologija poput Stranice Java poslužitelja, kao i glavni mehanizmi predložaka koji se mogu koristiti s Springom: Majčina dušica, Groovy, FreeMarker, Jade.

Za svaki od njih proći ćemo kroz potrebnu konfiguraciju kako u standardnom Spring programu, tako i u programu izrađenom pomoću njega Proljetni čizme.

3. Stranice Java poslužitelja

JSP je jedna od najpopularnijih tehnologija pregleda za Java programe, a podržava ga Spring out-of-the-box. Za prikazivanje JSP datoteka, najčešće korištena vrsta ViewResolver grah je InternalResourceViewResolver:

@EnableWebMvc @Configuration javna klasa ApplicationConfiguration implementira WebMvcConfigurer {@Bean public ViewResolver jspViewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setPrefix ("/ WEB-INF / prikazi /"); bean.setSuffix (". jsp"); grah za povratak; }}

Dalje, možemo početi stvarati JSP datoteke u / WEB-INF / prikazi mjesto:

    E-adresa za registraciju korisnika: Lozinka: 

Ako datoteke dodajemo u Proljetni čizme , umjesto u ApplicationConfiguration klase, možemo definirati sljedeća svojstva u primjena.svojstva datoteka:

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

Na temelju ovih svojstava, Proljetni čizme automatski će konfigurirati potrebno ViewResolver.

4. Majčina dušica

Majčina dušica je Java predložak koji može obrađivati ​​HTML, XML, tekst, JavaScript ili CSS datoteke. Za razliku od ostalih predložaka, Majčina dušica omogućuje upotrebu predložaka kao prototipa, što znači da ih se može gledati kao statične datoteke.

4.1. Ovisnosti Mavena

Da se integriraju Majčina dušica s Springom moramo dodati majčina dušica i majčina dušica-proljeće4 ovisnosti:

 timijanov list orgy 3.0.11.OSLOBODITI timijanov list-proljeće5 3.0.11. 

Ako imamo projekt Spring 4, onda moramo dodati majčina dušica-proljeće4.

4.2. Proljetna konfiguracija

Dalje, moramo dodati konfiguraciju koja zahtijeva SpringTemplateEngine grah, kao i a TemplateResolver bean koji određuje mjesto i vrstu datoteka prikaza.

The SpringResourceTemplateResolver integriran je s Springovim mehanizmom za rješavanje resursa:

@Configuration @EnableWebMvc javna klasa ThymeleafConfiguration {@Bean public SpringTemplateEngine templateEngine () {SpringTemplateEngine templateEngine = new SpringTemplateEngine (); templateEngine.setTemplateResolver (thymeleafTemplateResolver ()); vratiti predložakEngine; } @Bean public SpringResourceTemplateResolver thymeleafTemplateResolver () {SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver (); templateResolver.setPrefix ("/ WEB-INF / prikazi /"); templateResolver.setSuffix (". html"); templateResolver.setTemplateMode ("HTML5"); vrati predložakResolver; }}

Također, trebamo i ViewResolver grah tipa ThymeleafViewResolver:

@Bean public ThymeleafViewResolver thymeleafViewResolver () {ThymeleafViewResolver viewResolver = novi ThymeleafViewResolver (); viewResolver.setTemplateEngine (templateEngine ()); povratak viewResolver; }

4.3. Majčina dušica Predlošci

Sada možemo dodati HTML datoteku u WEB-INF / prikazi mjesto:

   E-adresa za registraciju korisnika: Lozinka: 

Majčina dušica Predlošci su u sintaksi vrlo slični HTML predlošcima.

Neke značajke koje su dostupne tijekom upotrebe Majčina dušica u proljetnoj aplikaciji su:

    • podrška za definiranje ponašanja oblika
    • vezanje unosa obrazaca za modele podataka
    • provjera valjanosti unosa obrazaca
    • prikazivanje vrijednosti iz izvora poruka
    • prikazivanje fragmenata predloška

Možete pročitati više o korištenju Majčina dušica predlošci u našem članku Majčina dušica u proljetnom MVC-u.

4.4. Majčina dušica u Proljetni čizme

Proljetni čizme omogućit će automatsku konfiguraciju za Majčina dušica dodavanjem opruga-čizma-starter-majčina dušica ovisnost:

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

Nije potrebna eksplicitna konfiguracija. Prema zadanim postavkama, HTML datoteke trebaju se smjestiti u resursi / predlošci mjesto.

5. FreeMarker

FreeMarker je mehanizam predložaka zasnovan na Javi koji je izradio Apache Software Foundation. Može se koristiti za generiranje web stranica, ali i izvornog koda, XML datoteka, konfiguracijskih datoteka, e-adresa i drugih formata zasnovanih na tekstu.

Generiranje se vrši na temelju datoteka predložaka napisanih pomoću Jezik predloška FreeMarker.

5.1. Ovisnosti Mavena

Da bismo počeli koristiti predloške u našem projektu, potreban nam je slobodni znak ovisnost:

 org.freemarker freemarker 2.3.23 

Za proljetnu integraciju također nam je potreban proljeće-kontekst-podrška ovisnost:

 org.springframework proljeće-kontekst-podrška 5.2.8.OSLOBOĐENJE 

5.2. Proljetna konfiguracija

Integriranje FreeMarker s Spring MVC zahtijeva definiranje a FreemarkerConfigurer bean koji određuje mjesto datoteka predložaka:

@Configuration @EnableWebMvc javna klasa FreemarkerConfiguration {@Bean public FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / views /"); vratiti freeMarkerConfigurer; }}

Dalje, moramo definirati odgovarajuće ViewResolver grah tipa FreeMarkerViewResolver:

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

5.3. FreeMarker Predlošci

Možemo stvoriti HTML predložak pomoću FreeMarker u WEB-INF / prikazi mjesto:

    E-adresa za registraciju korisnika: Lozinka: 

U gornji primjer uvezli smo skup makronaredbi definiranih Springom za rad s obrascima u FreeMarker, uključujući ulaze u obrasce za modele podataka.

Također, Jezik predloška FreeMarker sadrži velik broj oznaka, direktiva i izraza za rad sa zbirkama, strukturama kontrole protoka, logičkim operatorima, oblikovanjem i raščlanjivanjem nizova, brojevima i mnogim drugim značajkama.

5.4. FreeMarker u Proljetni čizme

U Proljetni čizme aplikaciju, možemo pojednostaviti potrebnu konfiguraciju pomoću spring-boot-starter-freemarker ovisnost:

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

Ovaj pokretač dodaje potrebnu automatsku konfiguraciju. Sve što trebamo je započeti s postavljanjem datoteka predložaka u resursi / predlošci mapu.

6. Groovy

Proljetni MVC pogledi također se mogu generirati pomoću mehanizma Groovy Markup Template Engine. Ovaj se mehanizam temelji na sintaksi graditelja i može se koristiti za generiranje bilo kojeg tekstualnog formata.

6.1. Ovisnosti Mavena

The groovy-predlošci ovisnost treba dodati našem pom.xml:

 org.codehaus.groovy groovy-predlošci 2.4.12 

6.2. Proljetna konfiguracija

Integracija Oznaka predloška motora s Spring MVC zahtijeva definiranje a GroovyMarkupConfigurer grah i a ViewResolver tipa GroovyMarkupViewResolver:

@Configuration @EnableWebMvc javna klasa GroovyConfiguration {@Bean public GroovyMarkupConfigurer groovyMarkupConfigurer () {GroovyMarkupConfigurer configurer = new GroovyMarkupConfigurer (); configurer.setResourceLoaderPath ("/ WEB-INF / views /"); return configurer; } @Bean public GroovyMarkupViewResolver thymeleafViewResolver () {GroovyMarkupViewResolver viewResolver = new GroovyMarkupViewResolver (); viewResolver.setSuffix (". tpl"); povratak viewResolver; }}

6.3. Oznaka Groovy Predlošci

Predlošci su napisani na jeziku Groovy i imaju nekoliko karakteristika:

    • oni se prevode u bytecode
    • sadrže potporu za fragmente i izglede
    • pružaju potporu internacionalizaciji
    • prikazivanje je brzo

Stvorimo Groovy predložak za naš obrazac "Registracija korisnika", koji uključuje povezivanje podataka:

yieldUnescaped '' html (lang: 'en') {head {meta ('http-equiv': '"Content-Type"' + 'content = "text / html; charset = utf-8"') title ('Korisnik Registracija ')} body {obrazac (id:' userForm ', akcija:' register ', metoda:' post ') {label (za:' email ',' Email ') input (name:' email ', type:' text ', value: user.email ?:' ') label (for:' password ',' Password ') input (name:' password ', type:' password ', value: user.password ?:' ') div (klasa: 'form-actions') {input (type: 'submit', value: 'Submit')}}}}

6.4. Groovy predložak motora u Proljetni čizme

Proljetni čizme sadrži automatsku konfiguraciju za Groovy predložak motora, koji se dodaje uključivanjem predloške-boot-starter-groovy-predlošci ovisnost:

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

Zadano mjesto za predloške je / resursi / predlošci.

7. Jade4j

Jade4j je Java implementacija Mops predložak (izvorno poznat kao Žad) za Javascript. Jade4j Predlošci se mogu koristiti za generiranje HTML datoteka.

7.1. Ovisnosti Mavena

Za integraciju Springa potrebna nam je ovisnost spring-jade4j:

 de.neuland-bfi spring-jade4j 1.2.5 

7.2. Proljetna konfiguracija

Koristiti Jade4j s Proljećem moramo definirati a SpringTemplateLoader bean koji konfigurira mjesto predložaka, kao i JadeConfiguration grah:

@Configuration @EnableWebMvc javna klasa JadeTemplateConfiguration {@Bean public SpringTemplateLoader templateLoader () {SpringTemplateLoader templateLoader = new SpringTemplateLoader (); templateLoader.setBasePath ("/ WEB-INF / prikazi /"); templateLoader.setSuffix (". žad"); vratiti predložakLoader; } @Bean public JadeConfiguration jadeConfiguration () {JadeConfiguration configuration = new JadeConfiguration (); configuration.setCaching (false); configuration.setTemplateLoader (templateLoader ()); povratna konfiguracija; }}

Dalje, trebamo uobičajeno ViewResolver grah, u ovom slučaju tipa JadeViewResolver:

@Bean public ViewResolver viewResolver () {JadeViewResolver viewResolver = novi JadeViewResolver (); viewResolver.setConfiguration (jadeConfiguration ()); povratak viewResolver; }

7.3. Jade4j Predlošci

Jade4j Predloške karakterizira sintaksa osjetljiva na razmake jednostavna za upotrebu:

doctype html html naslov glave Obrazac tijela za registraciju korisnika (action = "register" method = "post") label (for = "email") Email: input (type = "text" name = "email") label (for = "password ") Lozinka: input (type =" password "name =" password ") input (type =" submit "value =" Submit ")

Projekt također nudi vrlo korisnu interaktivnu dokumentaciju, u kojoj možete pregledati rezultate svog predloška dok ga pišete.

Proljetni čizme ne pruža a Jade4j starter, dakle u a Čizma projekt, morali bismo dodati istu konfiguraciju Spring kako je gore definirana.

8. Ostali predlošci

Osim dosad opisanih mehanizama predložaka, postoji još dosta dostupnih koji se mogu koristiti.

Kratko ćemo pregledati neke od njih.

Brzina je stariji mehanizam predložaka, koji je vrlo složen, ali ima nedostatak što je Spring prestao upotrebljavati od verzije 4.3 i potpuno uklonjen u Spring 5.0.1.

JMustache je mehanizam predložaka koji se lako može integrirati u aplikaciju Spring Boot pomoću proljeće-čizma-starter-brkovi ovisnost.

Kamenčić sadrži podršku za Proljeće i Proljetni čizme u okviru svojih knjižnica.

Ostale knjižnice za predloške, kao što su Upravljači ili Reagirati, trčanje na vrhu a JSR-223 skriptni motor poput Nashorn, također se može koristiti.

9. Zaključak

U ovom smo članku pregledali neke od najpopularnijih mehanizama predložaka za web aplikacije Spring.

Kao i uvijek, puni izvorni kod primjera može se naći na GitHubu.