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:
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.