1. Introduzione
Velocity è un motore di modelli di Apache Software Foundation che può funzionare con normali file di testo, SQL, XML, codice Java e molti altri tipi.
In questo articolo ci concentreremo sull'utilizzo di Velocity con una tipica applicazione web Spring MVC.
2. Dipendenze di Maven
Cominciamo abilitando il supporto Velocity - con le seguenti dipendenze:
org.apache.velocity velocity 1.7 org.apache.velocity velocity-tools 2.0
Le versioni più recenti di entrambi possono essere trovate qui: velocity e velocity-tools.
3. Configurazione
3.1. Web Config
Se non vogliamo utilizzare un web.xml , configuriamo il nostro progetto web utilizzando Java e un inizializzatore :
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); } }
In alternativa, possiamo ovviamente utilizzare il tradizionale 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
Si noti che abbiamo mappato il nostro servlet sul percorso "/ *".
3.2. Spring Config
Esaminiamo ora una semplice configurazione Spring, di nuovo, a partire da 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; } }
E diamo anche una rapida occhiata alla versione XML della configurazione:
/
Qui stiamo dicendo a Spring dove cercare le definizioni di bean annotate:
Stiamo indicando che utilizzeremo la configurazione basata sull'annotazione nel nostro progetto con la seguente riga:
Creando i bean " velocityConfig " e " viewResolver " stiamo dicendo a VelocityConfigurer dove cercare i modelli e VelocityLayoutViewResolver dove trovare viste e layout.
4. Modelli di velocità
Infine, creiamo i nostri modelli, iniziando con un'intestazione comune:
e piè di pagina:
@Copyright baeldung.com
E definiamo un layout comune per il nostro sito in cui utilizzeremo i frammenti di cui sopra con l' analisi nel codice seguente:
Spring & Velocity #parse("/WEB-INF/fragments/header.vm") $screen_content #parse("/WEB-INF/fragments/footer.vm")
Puoi controllare che la variabile $ screen_content abbia il contenuto delle pagine.
Infine, creeremo un modello per il contenuto principale:
Tutorials list
#foreach($tut in $tutorials)
#end
Tutorial Id
Tutorial Title
Tutorial Description
Tutorial Author
$tut.tutId
$tut.title
$tut.description
$tut.author
5. Lato controller
Abbiamo creato un semplice controller che restituisce un elenco di tutorial come contenuto per il nostro layout da popolare con:
@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"; } }
Infine, possiamo accedere a questo semplice esempio localmente, ad esempio su: localhost: 8080 / spring-mvc-velocity /
6. Conclusione
In questo semplice tutorial, abbiamo configurato l' applicazione Web Spring MVC con il motore di modelli Velocity .
Il codice di esempio completo per questo tutorial può essere trovato nel nostro repository GitHub.