Guide rapide de Spring MVC avec Velocity

1. Introduction

Velocity est un moteur de modèle d'Apache Software Foundation qui peut fonctionner avec des fichiers texte normaux, SQL, XML, du code Java et de nombreux autres types.

Dans cet article, nous allons nous concentrer sur l'utilisation de Velocity avec une application Web Spring MVC typique.

2. Dépendances de Maven

Commençons par activer le support Velocity - avec les dépendances suivantes:

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

Les dernières versions des deux peuvent être trouvées ici: outils de vitesse et de vitesse.

3. Configuration

3.1. Configuration Web

Si nous ne voulons pas utiliser un web.xml , configurons notre projet Web en utilisant Java et un initialiseur :

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); } }

Alternativement, nous pouvons bien sûr utiliser le traditionnel web.xml :

 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  

Notez que nous avons mappé notre servlet sur le chemin «/ *».

3.2. Config de printemps

Passons maintenant à une configuration Spring simple - encore une fois, en commençant par 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; } }

Et jetons également un coup d'œil à la version XML de la configuration:

     /         

Ici, nous indiquons à Spring où chercher les définitions de bean annotées:

Nous indiquons que nous allons utiliser la configuration basée sur les annotations dans notre projet avec la ligne suivante:

En créant des beans « velocityConfig » et « viewResolver », nous indiquons à VelocityConfigurer où chercher les modèles et à VelocityLayoutViewResolver où trouver les vues et les mises en page.

4. Modèles de vitesse

Enfin, créons nos modèles - en commençant par un en-tête commun:

et pied de page:

 @Copyright baeldung.com 

Et définissons une mise en page commune pour notre site où nous allons utiliser les fragments ci-dessus avec parse dans le code suivant:

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

Vous pouvez vérifier que la variable $ screen_content a le contenu des pages.

Enfin, nous allons créer un modèle pour le contenu principal:

Tutorials list

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

5. Côté contrôleur

Nous avons créé un contrôleur simple qui renvoie une liste de tutoriels en tant que contenu de notre mise en page à remplir avec:

@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"; } } 

Enfin, nous pouvons accéder à cet exemple simple localement - par exemple sur: localhost: 8080 / spring-mvc-velocity /

6. Conclusion

Dans ce didacticiel simple, nous avons configuré l' application Web Spring MVC avec le moteur de modèle Velocity .

L'exemple de code complet de ce didacticiel se trouve dans notre référentiel GitHub.