Integrazione di Apache Tiles con Spring MVC

1. Panoramica

Apache Tiles è un framework di modelli open source gratuito basato esclusivamente sul modello di progettazione Composite.

Un modello di progettazione composito è un tipo di modello strutturale che compone gli oggetti in strutture ad albero per rappresentare gerarchie intere e questo modello tratta i singoli oggetti e la composizione degli oggetti in modo uniforme. In altre parole, in Tiles, una pagina viene costruita assemblando una composizione di viste secondarie chiamate Tiles.

I vantaggi di questo framework rispetto ad altri framework includono:

  • riutilizzabilità
  • facilità nella configurazione
  • overhead a basse prestazioni

In questo articolo, ci concentreremo sull'integrazione di Apache Tiles con Spring MVC .

2. Configurazione delle dipendenze

Il primo passo qui è aggiungere la dipendenza necessaria nel pom.xml :

 org.apache.tiles tiles-jsp 3.0.8 

3. File layout piastrelle

Ora dobbiamo definire le definizioni dei modelli e in particolare come per ogni pagina sovrascriveremo le definizioni dei modelli per quella pagina specifica:

4. ApplicationConfiguration e altre classi

Come parte della configurazione creeremo tre classi java specifiche chiamate ApplicationInitializer , ApplicationController e ApplicationConfiguration :

  • ApplicationInitializer inizializza e controlla la configurazione necessaria specificata nelle classi ApplicationConfiguration
  • La classe ApplicationConfiguration contiene la configurazione per l'integrazione di Spring MVC con il framework Apache Tiles
  • La classe ApplicationController funziona in sincronia con il file tiles.xml e reindirizza alle pagine necessarie in base alle richieste in arrivo

Vediamo ciascuna delle classi in azione:

@Controller @RequestMapping("/") public class TilesController { @RequestMapping( value = { "/"}, method = RequestMethod.GET) public String homePage(ModelMap model) { return "home"; } @RequestMapping( value = { "/apachetiles"}, method = RequestMethod.GET) public String productsPage(ModelMap model) { return "apachetiles"; } @RequestMapping( value = { "/springmvc"}, method = RequestMethod.GET) public String contactUsPage(ModelMap model) { return "springmvc"; } }
public class WebInitializer implements WebApplicationInitializer { public void onStartup(ServletContext container) throws ServletException { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(TilesApplicationConfiguration.class); container.addListener(new ContextLoaderListener(ctx)); ServletRegistration.Dynamic servlet = container.addServlet( "dispatcher", new DispatcherServlet(ctx)); servlet.setLoadOnStartup(1); servlet.addMapping("/"); } }

Esistono due classi importanti che svolgono un ruolo chiave nella configurazione dei riquadri in un'applicazione Spring MVC. Sono TilesConfigurer e TilesViewResolver :

  • TilesConfigurer aiuta a collegare il framework Tiles con il framework Spring fornendo il percorso al file di configurazione delle piastrelle
  • TilesViewResolver è una delle classi di adattatori fornite dall'API Spring per risolvere la visualizzazione dei riquadri

Infine, nella classe ApplicationConfiguration , abbiamo utilizzato le classi TilesConfigurer e TilesViewResolver per ottenere l'integrazione:

@Configuration @EnableWebMvc @ComponentScan(basePackages = "com.baeldung.spring.controller.tiles") public class TilesApplicationConfiguration implements WebMvcConfigurer { @Bean public TilesConfigurer tilesConfigurer() { TilesConfigurer tilesConfigurer = new TilesConfigurer(); tilesConfigurer.setDefinitions( new String[] { "/WEB-INF/views/**/tiles.xml" }); tilesConfigurer.setCheckRefresh(true); return tilesConfigurer; } @Override public void configureViewResolvers(ViewResolverRegistry registry) { TilesViewResolver viewResolver = new TilesViewResolver(); registry.viewResolver(viewResolver); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**") .addResourceLocations("/static/"); } }

5. File modello di piastrelle

Fino ad ora avevamo terminato la configurazione del framework Apache Tiles e la definizione del template e dei tile specifici utilizzati nell'intera applicazione.

In questo passaggio, dobbiamo creare i file di modello specifici che sono stati definiti in tiles.xml .

Si prega di trovare lo snippet dei layout che può essere utilizzato come base per costruire pagine specifiche:


    

6. Conclusione

Questo conclude l'integrazione di Spring MVC con Apache Tiles.

Puoi trovare l'implementazione completa nel seguente progetto github.