Интеграция 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.
Пожалуйста, найдите фрагмент макетов, которые могут быть использованы в качестве основы для создания определенных страниц:
6. Заключение
На этом мы завершаем интеграцию Spring MVC с Apache Tiles.
Вы можете найти полную реализацию вfollowing github project.