Spring Boot Блог: создание страницы и контроллера

Создание страницы блога

Страница блога будет отдельной секцией сайта, подобно страницам «Главная», «О нас», «Контакты». Для этой секции создадим отдельный контроллер.

Создание контроллера 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.

Запуск проекта и проверка результатов

Запускаем проект. Проверяем отображение страниц: главная, блог и «О нас». Навигация должна работать корректно, шапка и подвал должны быть одинаковыми на всех страницах.

В этом уроке мы создали базовую структуру для страницы блога, вынесли шапку и подвал в отдельные фрагменты для повторного использования и создали страницу «О нас». В следующих уроках мы начнем работать с базой данных и добавим функционал для отображения, редактирования и удаления статей.

Что будем искать? Например,программа