1. Общ преглед
Apache Tiles е безплатна рамка за шаблони с отворен код, изцяло изградена върху модела на композитен дизайн.
Композитният шаблон на дизайна е вид структурен модел, който съставя обекти в дървесни структури, за да представя йерархии от цели части и този модел третира еднообразно отделни обекти и състав на обекти. С други думи, в Tiles страница се изгражда чрез сглобяване на композиция от подвидове, наречени Tiles.
Предимствата на тази рамка пред други рамки включват:
- повторна използваемост
- лекота в конфигурацията
- ниски режийни разходи
В тази статия ще се съсредоточим върху интегрирането на Apache Tiles с Spring MVC .
2. Конфигуриране на зависимост
Първата стъпка тук е да добавите необходимата зависимост в 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 работи в синхрон с файл плочки.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 framework с Spring структурата, като предоставя пътя към конфигурационния файл за плочки
- TilesViewResolver е един от класа на адаптера, предоставен от Spring API за разрешаване на изгледа на плочки
И накрая, в класа ApplicationConfiguration използвахме класовете 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 framework и дефиницията на шаблона и конкретни плочки, използвани в цялото приложение.
В тази стъпка трябва да създадем конкретните файлове с шаблони, дефинирани в плочките.xml .
Моля, намерете фрагмента от оформленията, който може да се използва като основа за изграждане на конкретни страници:
6. Заключение
Това завършва интеграцията на Spring MVC с Apache Tiles.
Можете да намерите пълната реализация в следния github проект.