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 Maven
Commençons par activer la prise en charge de Velocity - avec les dépendances suivantes:
org.apache.velocity
velocity
1.7
org.apache.velocity
velocity-tools
2.0
Les versions les plus récentes des deux peuvent être trouvées ici:velocity etvelocity-tools.
3. Configuration
3.1. Configuration Web
Si nous ne voulons pas utiliser unweb.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, on peut bien sûr utiliser les traditionnelsweb.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 printemps
Passons maintenant à une configuration Spring simple - encore une fois, en commençant par Java:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages= {
"com.example.mvc.velocity.controller",
"com.example.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 disons au printemps où chercher les définitions de haricots annotées:
[.s1] #Nous indiquons que nous allons utiliser la configuration basée sur les annotations dans notre projet avec la ligne suivante: #
En créant les 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 vélocité
Enfin, créons nos modèles - en commençant par un en-tête commun:
Our tutorials
et pied de page:
@Copyright example.com
Et définissons une mise en page commune pour notre site où nous allons utiliser les fragments ci-dessus avecparse 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:
Index
Tutorials list
Tutorial Id
Tutorial Title
Tutorial Description
Tutorial Author
#foreach($tut in $tutorials)
$tut.tutId
$tut.title
$tut.description
$tut.author
#end
5. Côté contrôleur
Nous avons créé un contrôleur simple qui renvoie une liste de tutoriels sous forme de contenu pour que notre mise en page soit renseignée avec:
@Controller
@RequestMapping("/")
public class MainController {
@Autowired
private ITutorialsService tutService;
@RequestMapping(value ="/", method = RequestMethod.GET)
public String defaultPage() {
return "index";
}
@RequestMapping(value ="/list", 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 à:localhost:8080/spring-mvc-velocity/
6. Conclusion
Dans ce didacticiel simple, nous avons configuré l'application WebSpring MVC avec le moteur de modèle deVelocity.
L'exemple de code complet de ce didacticiel se trouve dans nosGitHub repository.