Для чего нужен тег form и какие у него основные атрибуты
Тег <form> — это контейнер для элементов ввода данных, который создаёт HTML-форму для отправки данных на сервер по протоколу HTTP. Форма — основной механизм взаимодействия пользователя с бэкендом.
Основные атрибуты
| Атрибут | Назначение | Значение по умолчанию |
|---|---|---|
action |
URL-адрес обработчика формы | Текущий URL |
method |
HTTP-метод отправки | GET |
enctype |
Тип кодирования данных | application/x-www-form-urlencoded |
novalidate |
Отключение HTML5-валидации | — |
target |
Куда загружать результат | _self |
autocomplete |
Автозаполнение полей | on |
Типы кодирования (enctype)
| Значение | Когда использовать |
|---|---|
application/x-www-form-urlencoded |
Обычные формы (пары ключ=значение) |
multipart/form-data |
Загрузка файлов |
text/plain |
Редко, без кодирования |
Примеры
Простая форма:
Пример
<form action="/api/users" method="POST">
<label for="username">Имя:</label>
<input type="text" id="username" name="username" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<button type="submit">Отправить</button>
</form>
Форма с загрузкой файла:
Пример
<form action="/api/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="document" accept=".pdf,.doc,.docx">
<button type="submit">Загрузить</button>
</form>
Как данные попадают на сервер
При отправке формы с enctype="application/x-www-form-urlencoded" тело HTTP-запроса выглядит так:
Пример
username=ivan&email=ivan%40example.com
В Spring MVC эти данные автоматически маппятся на параметры контроллера:
Пример
@PostMapping("/api/users")
public String createUser(@RequestParam String username,
@RequestParam String email) {
// обработка данных формы
}
Частые ошибки
- Забывают
enctype="multipart/form-data"при загрузке файлов — сервер получает только имя файла - Используют
GETдля отправки паролей — данные попадают в URL, историю браузера и логи - Не указывают
nameу полей ввода — данные не отправляются на сервер - Не добавляют CSRF-токен — Spring Security блокирует POST-запросы без него
Как используется в 2026
Классические HTML-формы остаются основой серверного рендеринга (Thymeleaf, JSP). Spring Security автоматически добавляет скрытое поле _csrf в каждую Thymeleaf-форму. Фреймворки htmx и Hotwire используют стандартные HTML-формы для создания динамических интерфейсов без написания JavaScript.
На собеседовании:
<form>отправляет данные на сервер. Ключевые атрибуты:action(куда),method(GET/POST),enctype(тип кодирования). Обязательно упомяните, что для загрузки файлов нуженmultipart/form-data, а поля безnameне отправляются. Бонус — упомянуть CSRF-защиту в Spring Security.