1. Обзор
Apache Tiles – это бесплатная платформа шаблонов с открытым исходным кодом, построенная исключительно на шаблоне композитного дизайна.
Составной шаблон проектирования-это тип структурного шаблона, который объединяет объекты в древовидные структуры для представления иерархий целых частей, и этот шаблон одинаково обрабатывает отдельные объекты и состав объектов. Другими словами, в заголовках страница строится путем сборки композиции подвидов, называемых плитками.
Преимущества этого фреймворка перед другими фреймворками включают в себя:
- повторное использование
- простота настройки
- низкие эксплуатационные расходы
В этой статье мы сосредоточимся на интеграции плиток Apache с Spring MVC .
2. Конфигурация зависимостей
Первым шагом здесь является добавление необходимой зависимости в pom.xml :
org.apache.tiles tiles-jsp 3.0.8
3. Файлы макета плиток
Теперь нам нужно определить определения шаблонов и конкретно в соответствии с каждой страницей мы перепишем определения шаблонов для этой конкретной страницы:
4. Конфигурация приложения и другие классы
В рамках конфигурации мы создадим три конкретных класса java, называемых ApplicationInitializer , ApplicationController и ApplicationConfiguration :
- Инициализатор приложения инициализирует и проверяет необходимую конфигурацию, указанную в классах ApplicationConfiguration
- Конфигурация приложения класс содержит конфигурацию для интеграции Spring MVC с платформой плиток Apache
- 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 помогает связать фреймворк плиток с фреймворком Spring, предоставляя путь к файлу конфигурации плиток
- tilesViewResolver является одним из классов адаптеров, предоставляемых Spring API для разрешения представления плиток
Наконец, в классе Конфигурация приложения мы использовали классы TilesConfigurer и tilesViewResolver для достижения интеграции:
@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. Файлы шаблонов плиток
До сих пор мы завершили настройку фреймворка Apache Tiles и определение шаблона и конкретных плиток, используемых во всем приложении.
На этом шаге нам нужно создать конкретные файлы шаблонов, которые были определены в tiles.xml .
Пожалуйста, найдите фрагмент макетов, который можно использовать в качестве основы для создания конкретных страниц:
6. Заключение
На этом завершается интеграция Spring MVC с плитками Apache.
Вы можете найти полную реализацию в следующем проекте github .