Integration von Apache Tiles in Spring MVC

1. Übersicht

Apache Tiles ist ein kostenloses Open-Source-Template-Framework, das ausschließlich auf dem Composite-Entwurfsmuster basiert.

Ein zusammengesetztes Entwurfsmuster ist eine Art Strukturmuster, das Objekte zu Baumstrukturen zusammensetzt, um Ganzteilhierarchien darzustellen, und dieses Muster behandelt einzelne Objekte und die Zusammensetzung von Objekten einheitlich. Mit anderen Worten, in Kacheln wird eine Seite erstellt, indem eine Komposition von Unteransichten namens Kacheln zusammengestellt wird.

Die Vorteile dieses Frameworks gegenüber anderen Frameworks umfassen:

  • Wiederverwendbarkeit
  • einfache Konfiguration
  • geringer Leistungsaufwand

In diesem Artikel konzentrieren wir uns auf die Integration von Apache Tiles in Spring MVC .

2. Abhängigkeitskonfiguration

Der erste Schritt besteht darin, die erforderliche Abhängigkeit in die Datei pom.xml einzufügen :

 org.apache.tiles tiles-jsp 3.0.8 

3. Kacheln Layoutdateien

Jetzt müssen wir die Vorlagendefinitionen definieren und speziell für jede Seite die Vorlagendefinitionen für diese bestimmte Seite überschreiben:

4. Anwendungskonfiguration und andere Klassen

Im Rahmen der Konfiguration erstellen wir drei spezifische Java-Klassen mit den Namen ApplicationInitializer , ApplicationController und ApplicationConfiguration :

  • ApplicationInitializer initialisiert und überprüft die erforderliche Konfiguration, die in den ApplicationConfiguration- Klassen angegeben ist
  • Die ApplicationConfiguration- Klasse enthält die Konfiguration für die Integration von Spring MVC in das Apache Tiles-Framework
  • Die ApplicationController- Klasse arbeitet synchron mit der Datei tiles.xml und leitet basierend auf den eingehenden Anforderungen zu den erforderlichen Seiten weiter

Lassen Sie uns jede der Klassen in Aktion sehen:

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

Es gibt zwei wichtige Klassen, die eine Schlüsselrolle bei der Konfiguration von Kacheln in einer Spring MVC-Anwendung spielen. Sie sind TilesConfigurer und TilesViewResolver :

  • TilesConfigurer hilft bei der Verknüpfung des Tiles-Frameworks mit dem Spring-Framework, indem der Pfad zur Kachelkonfigurationsdatei angegeben wird
  • TilesViewResolver ist eine der Adapterklassen, die von der Spring API zum Auflösen der Kachelansicht bereitgestellt werden

Schließlich haben wir in der ApplicationConfiguration- Klasse die Klassen TilesConfigurer und TilesViewResolver verwendet, um die Integration zu erreichen:

@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. Kacheln Vorlagendateien

Bis jetzt hatten wir die Konfiguration des Apache Tiles-Frameworks und die Definition der Vorlage und der spezifischen Kacheln abgeschlossen, die in der gesamten Anwendung verwendet wurden.

In diesem Schritt müssen wir die spezifischen Vorlagendateien erstellen, die in der Datei tiles.xml definiert wurden .

Hier finden Sie den Ausschnitt der Layouts, die als Basis für die Erstellung bestimmter Seiten verwendet werden können:


    

6. Fazit

Damit ist die Integration von Spring MVC in Apache Tiles abgeschlossen.

Die vollständige Implementierung finden Sie im folgenden Github-Projekt.