Gymterview
middle

Для чего нужен тег 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.