Создание страницы блога
Страница блога будет отдельной секцией сайта, подобно страницам «Главная», «О нас», «Контакты». Для этой секции создадим отдельный контроллер.
Создание контроллера BlogController
В папке controllers создаем новый Java-класс BlogController. Помечаем класс аннотацией @RestController.
Внутри класса создаем функцию, обрабатывающую URL-адрес /blog. Для этого используем аннотацию @GetMapping("/blog"). Функция возвращает строку — имя шаблона.
@RestController
public class BlogController {
@GetMapping("/blog")
public String blogMain(Model model) {
return "blog-main";
}
}
Функция blogMain принимает объект Model (импортируем org.springframework.ui.Model). Пока параметры в шаблон не передаются; это будет сделано позже при работе с базой данных.
Создание шаблона blog-main.html
Создаем файл blog-main.html в папке templates. Копируем содержимое файла home.html, удаляя основное содержимое, оставляя шапку и подвал. Добавим div с классом container и отступом сверху (50px):
<!-- шапка (header) -->
<!-- ... -->
<div class="container" style="margin-top: 50px;">
<h1>Блог сайта</h1>
</div>
<!-- подвал (footer) -->
<!-- ... -->
Переменная title не используется и может быть удалена, хотя в данном примере она оставлена для совместимости с файлом home.html. Расширение файла изменено с .xml на .html, так как это HTML-шаблон.
Вынесение шапки и подвала в отдельные файлы
Для повторного использования шапки и подвала на всех страницах, вынесем их в отдельные файлы.
Создание фрагментов header.html и footer.html
Создаем папку blogs в папке templates. В этой папке создаем файлы header.html и footer.html. В каждый файл помещаем соответствующий фрагмент кода (шапка и подвал). Указываем, что это фрагменты с помощью th:fragment:
<!-- header.html -->
<div th_fragment="header">
<!-- Содержимое шапки -->
</div>
<!-- footer.html -->
<div th_fragment="footer">
<!-- Содержимое подвала -->
</div>
В header.html и footer.html th:fragment используется без подключения th:replace, так как эти фрагменты будут встраиваться в другие файлы, где Thymeleaf уже подключен.
Встраивание фрагментов в main файлы
В файлах home.html, blog-main.html и about.html заменяем шапку и подвал на встраивание фрагментов с помощью th:insert:
<div th_insert="~{blogs/header :: header}"></div>
<!-- ... основное содержимое ... -->
<div th_insert="~{blogs/footer :: footer}"></div>
Создание страницы «О нас»
Создаем шаблон about.html, копируя структуру home.html и заменяя основное содержимое на:
<div class="container" style="margin-top: 50px;">
<h1><span th_text="${title}"></span></h1>
</div>
В контроллере обрабатываем URL для страницы «О нас», передавая значение в title.
Запуск проекта и проверка результатов
Запускаем проект. Проверяем отображение страниц: главная, блог и «О нас». Навигация должна работать корректно, шапка и подвал должны быть одинаковыми на всех страницах.
В этом уроке мы создали базовую структуру для страницы блога, вынесли шапку и подвал в отдельные фрагменты для повторного использования и создали страницу «О нас». В следующих уроках мы начнем работать с базой данных и добавим функционал для отображения, редактирования и удаления статей.