Integração do Apache Tiles com o Spring MVC

Integração do Apache Tiles com o Spring MVC

1. Visão geral

ApacheTiles é uma estrutura de modelagem de código-fonte aberto gratuita construída puramente no padrão de design Composite.

Um padrão de design composto é um tipo de padrão estrutural que compõe objetos em estruturas de árvore para representar hierarquias de peças inteiras e esse padrão trata objetos individuais e composição de objetos de maneira uniforme. Em outras palavras, no Tiles, uma página é criada montando uma composição de sub-visualizações denominadas Tiles.

As vantagens dessa estrutura em relação a outras estruturas incluem:

  • reutilização

  • facilidade na configuração

  • sobrecarga de baixo desempenho

Neste artigo, vamos nos concentrar emintegrating Apache Tiles with Spring MVC.

2. Configuração de Dependência

A primeira etapa aqui é adicionar odependency necessário empom.xml:


    org.apache.tiles
    tiles-jsp
    3.0.8

3. Arquivos de layout de ladrilhos

Agora, precisamos definir as definições de modelo e, especificamente, conforme cada página, substituiremos as definições de modelo para essa página específica:


    
        
        
        
        
        
    
    
        
        
    

4. ApplicationConfiguration e outras classes

Como parte da configuração, criaremos três classes java específicas chamadasApplicationInitializer,ApplicationControllereApplicationConfiguration:

  • ApplicationInitializer inicializa e verifica a configuração necessária especificada nas classesApplicationConfiguration

  • A classeApplicationConfiguration contém a configuração para integração do Spring MVC com a estrutura Apache Tiles

  • A classeApplicationController funciona em sincronia com o arquivotiles.xml e redireciona para as páginas necessárias com base nas solicitações recebidas

Vamos ver cada uma das classes em ação:

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

Existem duas classes importantes que desempenham um papel fundamental na configuração de blocos em um aplicativo Spring MVC. Eles sãoTilesConfigurer eTilesViewResolver:

  • TilesConfigurer ajuda a vincular a estrutura Tiles com a estrutura Spring, fornecendo o caminho para o arquivo de configuração de tiles

  • TilesViewResolver é uma das classes do adaptador fornecida pela API Spring para resolver a visualização dos blocos

Finalmente, na classeApplicationConfiguration, usamos as classesTilesConfigurereTilesViewResolver para alcançar a integração:

@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. Arquivos de modelo de blocos

Até agora, concluímos a configuração da estrutura do Apache Tiles e a definição do modelo e dos blocos específicos usados ​​em todo o aplicativo.

Nesta etapa, precisamos criar os arquivos de modelo específicos que foram definidos emtiles.xml.

Encontre o snippet dos layouts que podem ser usados ​​como base para criar páginas específicas:


    
        
        <tiles:getAsString name="title" />
        
        
    
    
        

6. Conclusão

Isso conclui a integração do Spring MVC com o Apache Tiles.

Você pode encontrar a implementação completa emfollowing github project.