Skip to content

Commit 7c366eb

Browse files
author
kmsoln
committed
[thymeleaf] added russian version
1 parent dcf9bff commit 7c366eb

11 files changed

Lines changed: 986 additions & 0 deletions

‎docs/ru/a-thymeleaf/lab-work.md‎

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Лабораторная работа по Thymeleaf
2+
3+
Добро пожаловать в лабораторную работу по Thymeleaf! Цель этой серии задач - помочь вам практиковаться и освоить Thymeleaf, мощный шаблонизатор для Java-приложений. Независимо от того, являетесь ли вы начинающим или стремитесь улучшить свои навыки, эти практические задачи научат вас различным аспектам интеграции Thymeleaf в приложение Spring.
4+
5+
## Цель лабораторной работы
6+
7+
Основная цель этой лабораторной работы - предоставить вам практический опыт и мастерство использования Thymeleaf в среде Spring. Thymeleaf широко используется для серверного рендеринга в веб-разработке, и через эти задачи вы получите ценные знания о его конфигурации, использовании переменных, контроллерах, обработке форм и многом другом.
8+
9+
## Практические задачи <a name="practice-tasks"></a>
10+
11+
1. [Задача 1: Настройка Thymeleaf в Spring](practice/configure-thymeleaf.md)
12+
2. [Задача 2: Создание первого представления](practice/create-first-view.md)
13+
3. [Задача 3: Работа с переменными](practice/working-with-variables.md)
14+
4. [Задача 4: Переменные и контроллер](practice/variables-and-controller.md)
15+
5. [Задача 5: Итерация](practice/iteration.md)
16+
6. [Задача 6: Литералы](practice/literals.md)
17+
7. [Задача 7: Формы](practice/forms.md)
18+
8. [Задача 8: Обработка форм](practice/form-handling.md)
19+
9. [Задача 9: Query Parameter и валидация](practice/validation.md)
20+
10. [Задача 10: Фрагменты и макеты](practice/fragments-and-layouts.md)
21+
22+
23+
## Задачи лабораторной работы <a name="lab-work-tasks"></a>
24+
25+
1. **Задача 1: Создание HTML-макета с фрагментами**
26+
27+
- Создайте отдельные фрагменты для различных частей HTML-страницы, таких как навигационная панель, заголовок, head и подвал.
28+
- Соберите эти фрагменты в один HTML-файл, чтобы создать полный макет.
29+
- Например:
30+
31+
![layout.png](../../srcs/a-thymeleaf/layout.png)
32+
33+
2. **Задача 2: Создание домашней страницы с локализацией**
34+
35+
- Реализуйте домашнюю страницу, доступную по пути `/`.
36+
- Используйте созданный в Задаче 1 макет для структурирования домашней страницы.
37+
- Используйте выражения `#{}` для всего текстового содержимого на домашней странице, демонстрируя локализацию или сообщения из файла .properties.
38+
- Например:
39+
40+
![home-page.png](../../srcs/a-thymeleaf/home-page.png)
41+
42+
3. **Задача 3: Создание форм входа и регистрации**
43+
44+
- Разработайте и реализуйте формы входа и регистрации для аутентификации пользователей.
45+
- Используйте привязку модели Thymeleaf для обработки данных формы.
46+
- Например:
47+
48+
![login-page.png](../../srcs/a-thymeleaf/login-page.png)
49+
50+
![signup-page.png](../../srcs/a-thymeleaf/signup-page.png)
51+
52+
4. **Задача 4: Валидация действий входа и регистрации**
53+
54+
- Реализуйте валидацию для действий входа и регистрации.
55+
- Используйте параметры запроса для передачи сообщений об ошибках в случае неудачной валидации.
56+
- Обеспечьте безопасное и правильное обращение с вводом пользователя.
57+
- Например:
58+
59+
![login-validation.png](../../srcs/a-thymeleaf/login-validation.png)
60+
61+
5. **Задача 5: Создание страницы пользователей**
62+
63+
- Разработайте страницу "Пользователи", отображающую таблицу пользователей.
64+
- Реализуйте итерацию для динамического заполнения таблицы данными пользователей.
65+
- Предоставьте функциональность удаления или изменения записей пользователя со страницы.
66+
- Например:
67+
68+
![users-page.png](../../srcs/a-thymeleaf/users-page.png)
69+
70+
![modify-user-page.png](../../srcs/a-thymeleaf/modify-user-page.png)
71+
72+
Не стесняйтесь исследовать и выполнять эти задачи в своем собственном темпе. Каждая задача разработана для дополнительного развития ваших навыков в Thymeleaf и веб-разработке. Если у вас есть вопросы или вам нужна помощь, не стесняйтесь обращаться.
73+
74+
Счастливого кодирования!
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# Настройка Thymeleaf в Spring
2+
3+
**Описание:**
4+
5+
Это задание включает в себя настройку Thymeleaf в приложении Spring для обеспечения беспроблемной интеграции шаблонного движка для веб-разработки.
6+
7+
## **Шаги:**
8+
9+
1. **Создайте Класс Конфигурации Thymeleaf:**
10+
- В вашем проекте Spring создайте новый Java-класс, аннотированный `@Configuration`. Мы рекомендуем разместить этот класс в пакете `config`.
11+
- Расширьте класс с `WebMvcConfigurer`.
12+
13+
Пример:
14+
15+
```java
16+
package edu.labs.thymeleaf.config;
17+
18+
import org.springframework.context.annotation.Configuration;
19+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
20+
21+
@Configuration
22+
public class WebMvcConfig implements WebMvcConfigurer {
23+
// Код конфигурации размещается здесь
24+
}
25+
```
26+
27+
Размещение класса конфигурации в пакете `config` повышает организованность и обеспечивает четкую структуру в вашем проекте. Скорректируйте имя пакета в зависимости от структуры вашего проекта.
28+
29+
2. **Настройте Разрешитель Шаблонов Thymeleaf:**
30+
- Определите метод, аннотированный `@Bean`, для конфигурации разрешителя шаблонов Thymeleaf.
31+
- Используйте `ClassLoaderTemplateResolver` и установите префикс, суффикс, режим шаблона и кодировку символов.
32+
33+
```java
34+
@Bean
35+
public ClassLoaderTemplateResolver templateResolver() {
36+
// Создайте bean ClassLoaderTemplateResolver
37+
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
38+
39+
// Установите путь, где Thymeleaf будет искать шаблоны
40+
templateResolver.setPrefix("/templates/");
41+
42+
// Установите расширение файла для шаблонов
43+
templateResolver.setSuffix(".html");
44+
45+
// Установите режим шаблона в HTML
46+
templateResolver.setTemplateMode(TemplateMode.HTML);
47+
48+
// Установите кодировку символов для шаблонов
49+
templateResolver.setCharacterEncoding("UTF-8");
50+
51+
// Верните настроенный bean разрешителя шаблонов
52+
return templateResolver;
53+
}
54+
```
55+
56+
3. **Настройте Источник Сообщений:**
57+
- Добавьте метод, аннотированный `@Bean`, для настройки источника сообщений с использованием `ReloadableResourceBundleMessageSource`.
58+
- Установите кодировку по умолчанию.
59+
60+
```java
61+
@Bean
62+
public MessageSource messageSource() {
63+
// Создайте bean ReloadableResourceBundleMessageSource
64+
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
65+
66+
// Установите кодировку по умолчанию для сообщений
67+
messageSource.setDefaultEncoding("UTF-8");
68+
69+
// Верните настроенный bean источника сообщений
70+
return messageSource;
71+
}
72+
```
73+
74+
4. **Настройте Разрешитель Представлений Thymeleaf:**
75+
- Создайте метод, аннотированный `@Bean`, для настройки разрешителя представлений Thymeleaf.
76+
- Установите шаблонный движок.
77+
78+
```java
79+
@Bean
80+
public ViewResolver thymeleafViewResolver() {
81+
// Создайте bean ThymeleafViewResolver
82+
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
83+
84+
// Установите шаблонный движок для разрешителя представлений
85+
resolver.setTemplateEngine(templateEngine());
86+
87+
// Верните настроенный bean ThymeleafViewResolver
88+
return resolver;
89+
}
90+
```
91+
92+
5. **Настройте Шаблонный Движок Thymeleaf:**
93+
- Реализуйте метод, аннотированный `@Bean`, для настройки шаблонного движка Thymeleaf.
94+
- Установите разрешитель шаблонов и источник сообщений шаблонного движка.
95+
96+
```java
97+
@Bean
98+
public SpringTemplateEngine templateEngine() {
99+
// Создайте bean SpringTemplateEngine
100+
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
101+
102+
// Установите разрешитель шаблонов для шаблонного движка
103+
templateEngine.setTemplateResolver(templateResolver());
104+
105+
// Установите источник сообщений шаблонного движка
106+
templateEngine.setTemplateEngineMessageSource(messageSource());
107+
108+
// Верните настроенный bean SpringTemplateEngine
109+
return templateEngine;
110+
}
111+
```
112+
113+
---
114+
115+
**Заключение:**
116+
117+
Поздравляю! Вы успешно настроили Thymeleaf в вашем приложении Spring. Эта настройка позволяет интегрировать шаблоны Thymeleaf без заметных усилий, предоставляя мощный инструмент для создания динамичного веб-контента. Если вы хотите более глубоко изучить конфигурацию Thymeleaf или изучить продвинутые функции, не стесняйтесь обращаться к [Документации Thymeleaf](https://www.thymeleaf.org/documentation.html).
118+
119+
# [СЛЕДУЮЩЕЕ ЗАДАНИЕ: *Создание Первого Представления*](create-first-view.md)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Создание Первого Представления
2+
3+
**Описание:**
4+
5+
В данной задаче мы создадим первое представление Thymeleaf для вашего приложения Spring. Следуйте указанному пути к файлам, определенному в конфигурации Thymeleaf, и зарегистрируйте представление в приложении.
6+
7+
## **Шаги:**
8+
9+
1. **Создайте Файл Представления:**
10+
- Перейдите в каталог, указанный в конфигурации Thymeleaf как префикс для шаблонов.
11+
- По умолчанию префикс настроен как `/templates/`. Следовательно, создайте файл представления Thymeleaf в этом каталоге.
12+
13+
```plaintext
14+
Каталог Проекта
15+
└── src
16+
└── main
17+
└── resources
18+
└── templates
19+
└── practice
20+
└── first.html
21+
```
22+
23+
Убедитесь, что файл представления имеет правильное имя (например, `first.html`). Каталог `/templates/` важен для того, чтобы Thymeleaf мог правильно находить и обрабатывать ваши шаблоны.
24+
25+
2. **Зарегистрируйте Представление в Конфигурационном Классе:**
26+
- Откройте конфигурационный класс, где вы настраивали Thymeleaf (например, `WebMvcConfig`).
27+
- Добавьте следующий метод для регистрации представления Thymeleaf:
28+
29+
```java
30+
public void addViewControllers(ViewControllerRegistry registry) {
31+
// Первое представление
32+
registry.addViewController("/first").setViewName("practice/first");
33+
}
34+
```
35+
36+
Этот метод сопоставляет URL-путь `/first` с представлением Thymeleaf с именем "practice/first". Скорректируйте путь в соответствии с структурой вашего проекта.
37+
38+
3. **Проверьте Представление:**
39+
- Запустите ваше приложение Spring.
40+
- Откройте веб-браузер и перейдите по адресу `http://localhost:8080/first`. Вы должны увидеть отображенное представление Thymeleaf.
41+
42+
4. **Дополнительно: Настройте Перенаправление с Корневого Пути:**
43+
- Чтобы установить первое представление в качестве страницы по умолчанию, вы можете добавить перенаправление с корневого пути ("/") на путь первого представления в методе `addViewControllers`:
44+
45+
```java
46+
public void addViewControllers(ViewControllerRegistry registry) {
47+
// Первое представление
48+
registry.addViewController("/first").setViewName("practice/first");
49+
50+
// Перенаправление с корневого пути на первое представление
51+
registry.addRedirectViewController("/", "/first");
52+
}
53+
```
54+
55+
Теперь при посещении `http://localhost:8080/` произойдет автоматическое перенаправление на первое представление.
56+
57+
---
58+
59+
**Вывод:**
60+
61+
Вы успешно создали и зарегистрировали ваше первое представление Thymeleaf. Убедитесь, что вы следуете правильному пути к файлам, как определено в конфигурации Thymeleaf.
62+
63+
# [СЛЕДУЮЩЕЕ ЗАДАНИЕ: *Работа с Переменными*](working-with-variables.md)

0 commit comments

Comments
 (0)