Интеграция Apache Tiles с Spring MVC

Интеграция Apache Tiles с Spring MVC

1. обзор

ApacheTiles - это бесплатная структура шаблонов с открытым исходным кодом, полностью построенная на шаблоне проектирования Composite.

Составной шаблон проектирования - это тип структурного шаблона, который объединяет объекты в древовидные структуры для представления иерархий всей части, и этот шаблон обрабатывает отдельные объекты и композицию объектов единообразно. Другими словами, в Tiles, страница создается путем сборки композиции подвидов, называемых Tiles.

Преимущества этой платформы по сравнению с другими платформами включают в себя:

  • многократное использование

  • легкость в настройке

  • низкая производительность

В этой статье мы сосредоточимся наintegrating Apache Tiles with Spring MVC.

2. Конфигурация зависимости

Первый шаг здесь - добавить необходимыйdependency вpom.xml:


    org.apache.tiles
    tiles-jsp
    3.0.8

3. Файлы макета плитки

Теперь нам нужно определить определения шаблона и, в частности, для каждой страницы мы будем перезаписывать определения шаблона для этой конкретной страницы:


    
        
        
        
        
        
    
    
        
        
    

4. ApplicationConfiguration и другие классы

В рамках конфигурации мы создадим три конкретных класса Java с именамиApplicationInitializer,ApplicationController иApplicationConfiguration:

  • ApplicationInitializer инициализирует и проверяет необходимую конфигурацию, указанную в классахApplicationConfiguration

  • КлассApplicationConfiguration содержит конфигурацию для интеграции Spring MVC с платформой Apache Tiles.

  • КлассApplicationController работает синхронно с файломtiles.xml и перенаправляет на нужные страницы на основе входящих запросов

Давайте посмотрим на каждый из классов в действии:

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

Существует два важных класса, которые играют ключевую роль в настройке листов в приложении Spring MVC. ЭтоTilesConfigurer иTilesViewResolver:

  • TilesConfigurer помогает связать фреймворк Tiles со фреймворком Spring, предоставляя путь к файлу конфигурации тайлов.

  • TilesViewResolver - это один из классов адаптера, предоставляемых Spring API для разрешения представления плиток.

Наконец, в классеApplicationConfiguration мы использовали классыTilesConfigurer иTilesViewResolver для достижения интеграции:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.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. Файлы шаблонов плиток

До сих пор мы закончили настройку фреймворка Apache Tiles и определение шаблона и конкретных плиток, используемых во всем приложении.

На этом этапе нам нужно создать определенные файлы шаблонов, которые были определены вtiles.xml.

Пожалуйста, найдите фрагмент макетов, которые могут быть использованы в качестве основы для создания определенных страниц:


    
        
        <tiles:getAsString name="title" />
        
        
    
    
        

6. Заключение

На этом мы завершаем интеграцию Spring MVC с Apache Tiles.

Вы можете найти полную реализацию вfollowing github project.