Pengenalan Menggunakan FreeMarker di Spring MVC

1. Gambaran keseluruhan

FreeMarker adalah mesin templat berasaskan Java dari Apache Software Foundation. Seperti mesin templat lain, FreeMarker direka untuk menyokong halaman web HTML dalam aplikasi yang mengikuti corak MVC. Tutorial ini menggambarkan cara mengkonfigurasi FreeMarker untuk digunakan di Spring MVC sebagai alternatif kepada JSP.

Artikel ini tidak akan membincangkan asas penggunaan Spring MVC. Untuk melihat lebih mendalam, sila baca artikel ini. Selain itu, ini tidak bertujuan untuk melihat secara terperinci mengenai kemampuan luas FreeMarker. Untuk maklumat lebih lanjut mengenai penggunaan dan sintaks FreeMarker, sila lawati laman webnya.

2. Pergantungan Maven

Oleh kerana ini adalah projek berasaskan Maven, pertama kami menambahkan kebergantungan yang diperlukan ke pom.xml :

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

3. Konfigurasi

Sekarang mari kita selami konfigurasi projek. Ini adalah projek Spring berasaskan anotasi, jadi kami tidak akan menunjukkan konfigurasi berasaskan XML.

3.1. Konfigurasi Web Spring

Mari buat kelas untuk mengkonfigurasi komponen web. Untuk itu, kita perlu memberi anotasi kelas dengan @EnableWebMvc , @Configuration dan @ComponentScan .

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

3.2. Konfigurasikan ViewResolver

Spring MVC Framework menyediakan antara muka ViewResolver , yang memetakan nama paparan ke paparan sebenar. Kami akan membuat contoh FreeMarkerViewResolver , yang tergolong dalam pergantungan spring-webmvc .

Objek itu perlu dikonfigurasikan dengan nilai yang diperlukan yang akan digunakan pada waktu berjalan. Sebagai contoh, kami akan mengkonfigurasi pemecah pandangan untuk menggunakan FreeMarker untuk paparan yang berakhir dengan .ftl :

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

Juga, perhatikan bagaimana kita juga dapat mengawal mod cache di sini - ini hanya boleh dilumpuhkan untuk penyahpepijatan dan pengembangan.

3.3. Konfigurasi Laluan Templat FreeMarker

Seterusnya, kami akan menetapkan jalur templat, yang menunjukkan di mana templat berada dalam konteks web:

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

3.4. Konfigurasi Pengawal Musim Semi

Sekarang kita dapat menggunakan Spring Controller untuk memproses templat FreeMarker untuk paparan . Ini hanyalah Spring Controller konvensional:

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

The FreeMarkerViewResolver dan laluan konfigurasi ditakrifkan sebelum ini akan menjaga menterjemahkan pandangan nama indeks ke paparan FreeMarker yang sewajarnya.

4. Templat HTML FreeMarker

4.1. Buat Paparan Templat HTML Mudah

Kini tiba masanya untuk membuat templat HTML dengan FreeMarker . Dalam contoh kami, kami menambahkan senarai kereta pada model. FreeMarker dapat mengakses senarai tersebut dan memaparkannya dengan melakukan lelaran ke atas kandungannya.

Apabila permintaan dibuat untuk URI / cars , Spring akan memproses templat menggunakan model yang disediakan. Dalam templat kami, arahan #list menunjukkan bahawa FreeMarker harus melingkari objek carList dari model, menggunakan kereta untuk merujuk pada elemen semasa dan membuat kandungan dalam blok tersebut.

Kod berikut juga merangkumi ungkapan FreeMarker untuk merujuk kepada atribut setiap elemen dalam carList ; atau contoh, untuk memaparkan sifat membuat elemen kereta semasa , kami menggunakan ungkapan $ {car.make} .

FreeMarker Spring MVC Hello World

Add Car Make :

Model:

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

Setelah menggayakan output dengan CSS, templat FreeMarker yang diproses menghasilkan bentuk dan senarai kereta:

5. Spring Boot

Sekiranya kita menggunakan Spring Boot, kita boleh mengimport pergantungan spring-boot-starter-freemarker :

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

Kemudian, kita hanya perlu menambahkan fail templat kita di bawah src / main / resources / templat . Spring Boot mengendalikan konfigurasi lalai lain seperti FreeMarkerConfigurer dan FreeMarkerViewResolver .

6. Kesimpulannya

Dalam artikel ini, kami membincangkan cara mengintegrasikan FreeMarker dalam aplikasi Spring MVC. Keupayaan FreeMarker melampaui apa yang kami tunjukkan, jadi sila lawati laman web Apache FreeMarker untuk maklumat lebih terperinci mengenai penggunaannya.

Contoh kod dalam artikel ini terdapat dalam projek di Github.