Panduan Cepat untuk Spring MVC dengan Velocity

1. Perkenalan

Velocity adalah mesin templat dari Apache Software Foundation yang dapat bekerja dengan file teks normal, SQL, XML, kode Java, dan banyak jenis lainnya.

Pada artikel ini kita akan fokus pada penggunaan Velocity dengan aplikasi web Spring MVC.

2. Ketergantungan Maven

Mari kita mulai dengan mengaktifkan dukungan Velocity - dengan dependensi berikut:

 org.apache.velocity velocity 1.7   org.apache.velocity velocity-tools 2.0 

Versi terbaru dari keduanya dapat ditemukan di sini: velocity dan velocity-tools.

3. Konfigurasi

3.1. Konfigurasi Web

Jika kita tidak ingin menggunakan web.xml , mari konfigurasikan proyek web kita menggunakan Java dan penginisialisasi :

public class MainWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext sc) throws ServletException { AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.register(WebConfig.class); sc.addListener(new ContextLoaderListener(root)); ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); appServlet.setLoadOnStartup(1); } }

Sebagai alternatif, tentu saja kita dapat menggunakan web.xml tradisional :

 Spring MVC Velocity  mvc org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/mvc-servlet.xml  1   mvc /*   contextConfigLocation /WEB-INF/spring-context.xml   org.springframework.web.context.ContextLoaderListener  

Perhatikan bahwa kami memetakan servlet kami di jalur “/ *”.

3.2. Konfigurasi Musim Semi

Sekarang mari kita bahas konfigurasi Spring sederhana - sekali lagi, dimulai dengan Java:

@Configuration @EnableWebMvc @ComponentScan(basePackages= { "com.baeldung.mvc.velocity.controller", "com.baeldung.mvc.velocity.service" }) public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry .addResourceHandler("/resources/**") .addResourceLocations("/resources/"); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Bean public ViewResolver viewResolver() { VelocityLayoutViewResolver bean = new VelocityLayoutViewResolver(); bean.setCache(true); bean.setPrefix("/WEB-INF/views/"); bean.setLayoutUrl("/WEB-INF/layouts/layout.vm"); bean.setSuffix(".vm"); return bean; } @Bean public VelocityConfigurer velocityConfig() { VelocityConfigurer velocityConfigurer = new VelocityConfigurer(); velocityConfigurer.setResourceLoaderPath("/"); return velocityConfigurer; } }

Dan mari kita juga melihat sekilas versi XML dari konfigurasi:

     /         

Di sini kami memberi tahu Spring tempat mencari definisi kacang beranotasi:

Kami menunjukkan bahwa kami akan menggunakan konfigurasi berbasis anotasi dalam proyek kami dengan baris berikut:

Dengan membuat kacang " velocityConfig " dan " viewResolver ", kami memberi tahu VelocityConfigurer di mana harus mencari template, dan VelocityLayoutViewResolver di mana menemukan tampilan dan tata letak.

4. Template Kecepatan

Terakhir, mari buat template kita - dimulai dengan tajuk umum:

dan footer:

 @Copyright baeldung.com 

Dan mari kita tentukan tata letak umum untuk situs kita di mana kita akan menggunakan fragmen di atas dengan parse dalam kode berikut:

  Spring & Velocity #parse("/WEB-INF/fragments/header.vm") $screen_content #parse("/WEB-INF/fragments/footer.vm") 

Anda dapat memeriksa apakah variabel $ screen_content memiliki konten halaman.

Terakhir, kami akan membuat template untuk konten utama:

Tutorials list

#foreach($tut in $tutorials) #end
Tutorial Id Tutorial Title Tutorial Description Tutorial Author
$tut.tutId $tut.title $tut.description $tut.author

5. Sisi Pengontrol

Kami telah membuat pengontrol sederhana yang mengembalikan daftar tutorial sebagai konten untuk tata letak kami yang akan diisi dengan:

@Controller @RequestMapping("/") public class MainController { @Autowired private ITutorialsService tutService; @RequestMapping(value, method = RequestMethod.GET) public String defaultPage() { return "index"; } @RequestMapping(value, method = RequestMethod.GET) public String listTutorialsPage(Model model) { List list = tutService.listTutorials(); model.addAttribute("tutorials", list); return "index"; } } 

Akhirnya, kita dapat mengakses contoh sederhana ini secara lokal - misalnya di: localhost: 8080 / spring-mvc-velocity /

6. Kesimpulan

Dalam tutorial sederhana ini, kami telah mengonfigurasi aplikasi web Spring MVC dengan mesin template Velocity .

Kode sampel lengkap untuk tutorial ini dapat ditemukan di repositori GitHub kami.