Panduan Pantas untuk Spring MVC dengan Velocity

1. Pengenalan

Velocity adalah mesin templat dari Apache Software Foundation yang dapat berfungsi dengan fail teks biasa, SQL, XML, kod Java dan banyak jenis lain.

Dalam artikel ini kita akan fokus menggunakan Velocity dengan aplikasi web Spring MVC khas.

2. Pergantungan Maven

Mari mulakan dengan mengaktifkan sokongan Velocity - dengan kebergantungan berikut:

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

Versi terbaru dari kedua-duanya boleh didapati di sini: alat kelajuan dan kelajuan.

3. Konfigurasi

3.1. Konfigurasi Web

Sekiranya kami tidak mahu menggunakan web.xml , mari konfigurasikan projek web kami menggunakan Java dan inisialisasi :

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, kita tentu boleh 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 bahawa kami memetakan servlet kami di jalan "/ *".

3.2. Spring Config

Mari kita pergi ke konfigurasi Spring sederhana - sekali lagi, bermula 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 lihat juga versi konfigurasi XML:

     /         

Di sini kami memberitahu Spring di mana untuk mencari definisi kacang beranotasi:

Kami menunjukkan bahawa kami akan menggunakan konfigurasi berdasarkan anotasi dalam projek kami dengan baris berikut:

Dengan membuat kacang " velocityConfig " dan " viewResolver ", kami memberitahu VelocityConfigurer di mana untuk mencari templat, dan VelocityLayoutViewResolver di mana untuk mencari pandangan dan susun atur.

4. Templat Kecepatan

Akhirnya, mari buat templat kami - bermula dengan tajuk biasa:

dan footer:

 @Copyright baeldung.com 

Dan mari tentukan susun atur umum untuk laman web kami di mana kita akan menggunakan fragmen di atas dengan parse dalam kod berikut:

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

Anda boleh memastikan bahawa pemboleh ubah $ screen_content mempunyai kandungan halaman.

Akhirnya, kami akan membuat templat untuk kandungan 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. Bahagian Pengawal

Kami telah membuat pengawal mudah yang mengembalikan senarai tutorial sebagai kandungan untuk susun atur kami untuk 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 mudah ini secara tempatan - contohnya di: localhost: 8080 / spring-mvc-velocity /

6. Kesimpulannya

Dalam tutorial ringkas ini, kami telah mengkonfigurasi aplikasi web Spring MVC dengan mesin templat Velocity .

Contoh kod lengkap untuk tutorial ini boleh didapati di repositori GitHub kami.