Introducere în utilizarea FreeMarker în Spring MVC

1. Prezentare generală

FreeMarker este un motor de șabloane bazat pe Java de la Apache Software Foundation. La fel ca alte motoare de șabloane, FreeMarker este conceput pentru a suporta pagini web HTML în aplicații care urmează modelul MVC. Acest tutorial ilustrează modul de configurare a FreeMarker pentru utilizare în Spring MVC ca alternativă la JSP.

Articolul nu va discuta elementele de bază ale utilizării MVC de primăvară. Pentru o analiză aprofundată a acestui aspect, vă rugăm să consultați acest articol. În plus, acest lucru nu este destinat să fie o privire detaliată asupra capacităților extinse ale FreeMarker. Pentru mai multe informații despre utilizarea și sintaxa FreeMarker, vă rugăm să vizitați site-ul său web.

2. Dependențele Maven

Deoarece acesta este un proiect bazat pe Maven, mai întâi adăugăm dependențele necesare în pom.xml :

 org.freemarker freemarker 2.3.23   org.springframework spring-context-support ${spring.version} 

3. Configurări

Acum să ne scufundăm în configurația proiectului. Acesta este un proiect de primăvară bazat pe adnotări, deci nu vom demonstra configurația bazată pe XML.

3.1. Configurare web de primăvară

Să creăm o clasă pentru a configura componentele web. Pentru aceasta, trebuie să adnotăm clasa cu @EnableWebMvc , @Configuration și @ComponentScan .

@EnableWebMvc @Configuration @ComponentScan({"com.baeldung.freemarker"}) public class SpringWebConfig extends WebMvcConfigurerAdapter { // All web configuration will go here. }

3.2. Configurați ViewResolver

Spring MVC Framework oferă interfața ViewResolver , care mapează numele vizualizărilor cu vizualizările reale. Vom crea o instanță de FreeMarkerViewResolver , care aparține dependenței spring-webmvc .

Obiectul respectiv trebuie să fie configurat cu valorile necesare, care vor fi utilizate în timpul rulării. De exemplu, vom configura rezolvatorul de vizualizare pentru a utiliza FreeMarker pentru vizualizările care se termină în .ftl :

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

De asemenea, observați cum putem controla și modul cache aici - acest lucru ar trebui să fie dezactivat numai pentru depanare și dezvoltare.

3.3. Configurarea căii șablonului FreeMarker

Apoi, vom seta calea șablonului, care indică unde se află șabloanele în contextul web:

@Bean public FreeMarkerConfigurer freemarkerConfig() { FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/ftl/"); return freeMarkerConfigurer; }

3.4. Configurarea controlerului de primăvară

Acum putem folosi un Spring Controller pentru a procesa un șablon FreeMarker pentru afișare . Acesta este pur și simplu un controler de arc convențional:

@RequestMapping(value = "/cars", method = RequestMethod.GET) public String init(@ModelAttribute("model") ModelMap model) { model.addAttribute("carList", carList); return "index"; }

Cele FreeMarkerViewResolver configurații și calea definite anterior va avea grijă de traducerea numelui vizualizării index la vizualizarea corectă FreeMarker.

4. Șablon HTML FreeMarker

4.1. Creați o vizualizare simplă a șabloanelor HTML

Este timpul să creați un șablon HTML cu FreeMarker . În exemplul nostru, am adăugat o listă de mașini la model. FreeMarker poate accesa acea listă și o poate afișa iterând peste conținutul acesteia.

Când se face o cerere pentru URI-ul / cars , Spring va procesa șablonul folosind modelul furnizat. În șablonul noastră, #list directivă indică faptul că ar trebui să FreeMarker bucla peste carlist obiectului de model, folosind masina pentru a se referi la elementul curent și a reda conținutul în acel bloc.

Următorul cod include și expresii FreeMarker pentru a se referi la atributele fiecărui element din carList ; sau de exemplu, pentru a afișa proprietatea make a elementului curent , folosim expresia $ {car.make} .

FreeMarker Spring MVC Hello World

Add Car Make :

Model:

Make Model
${car.make} ${car.model}

După stilizarea ieșirii cu CSS, șablonul FreeMarker procesat generează un formular și o listă de mașini:

5. Cizma de primăvară

Dacă folosim Spring Boot, putem importa pur și simplu dependența spring-boot-starter-freemarker :

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

Apoi, trebuie pur și simplu să adăugăm fișierele noastre șablon în src / main / resources / templates . Spring Boot se ocupă de alte configurații implicite, cum ar fi FreeMarkerConfigurer și FreeMarkerViewResolver .

6. Concluzie

În acest articol, am discutat despre modul de integrare a FreeMarker într-o aplicație Spring MVC. Capacitățile FreeMarker depășesc cu mult ceea ce am demonstrat, așa că vă rugăm să vizitați site-ul web Apache FreeMarker pentru informații mai detaliate despre utilizarea acestuia.

Exemplul de cod din acest articol este disponibil într-un proiect pe Github.