Перевірка введених даних, Spring по-українськи!
Цей урок висвітлює процес створення web-додатку з підтримкою валідації.
Що ви створите
Ви створите простий Spring MVC додаток, який приймає введені користувачем дані та перевіряє їх, використовуючи стандартні анотації для валідації. Ви також побачите, як відобразити повідомлення про помилку, щоб користувач повторно запровадив правильні дані.
Що вам потрібно
Як проходити цей урок
Як і більшість уроків з Spring, ви можете почати з нуля і виконувати кожен крок або пропустити базові кроки, які вам вже знайомі. У будь-якому випадку, ви зрештою отримаєте робочий код.
Щоб початиз нуля, перейдіть до Налаштування проекту.
Щобпропустити базові кроки, виконайте таке:
- Завантажте та розпакуйте архів із кодом цього уроку, або кнонуйте з репозиторію за допомогою Git: git clone https://github.com/spring-guides/gs-validating-form-input.git
- Перейдіть до каталогу gs-validating-form-input/initial
- Забігаючи наперед, створіть об'єкт Person
Коли ви закінчите, можете порівняти результат з зразком в gs-validating-form-input/complete .
Налаштування проекту
Для початку вам необхідно налаштувати базовий сценарій складання. Ви можете використовувати будь-яку систему збирання, яка вам подобається для збирання проетів Spring, але в цьому уроці розглянемо код для роботи з Gradle та Maven. Якщо ви не знаєте жодного з них, ознайомтеся з відповідними уроками Складання Java-проекту з використанням Gradle або Складання Java-проекту з використанням Maven.
Створення структури каталогів
У вибраному вами каталозі проекту створіть таку структуру каталогів; Наприклад, командою mkdir -psrc/main/java/hello для *nix систем:
Створення файлу збирання Gradle
Нижче наведено початковий файл складання Gradle. Файл pom.xml тут. Якщо ви використовуєте Spring Tool Suite (STS), можете імпортувати урок прямо з нього.
Spring Boot gradle plugin надає безліч зручних можливостей:
- Він збирає всі jar'и в classpath і збирає єдине, що виконується "über-jar", що робить зручнішим виконання та доставку вашого сервісу
- Він шукає public static void main() метод, як ознака виконуваного класу
- Він надає вбудовану роздільну здатність залежностей, з певними номерами версій для відповідних Spring Boot залежностей. Ви можете перевизначити будь-які версії, які захочете, але він буде за промовчанням для Boot обраним набором версій
Створення об'єкту Person
Додаток включає перевірку ім'я користувача та віку, т. о. необхідно створити клас, що представляє людину.
Клас Person має два атрибути: name і age. Вони позначені кількома стандартними інструкціями валідації.
- @Size(min=2, max=30) - довжина імені від 2 до 30 символів
- @NotNull - неприпустимість null значення, яке Spring MVC генерує, якщо запис порожній
- @Min(18) - значення має бути не менше 18
Створення web контролера
Тепер, коли ви описали сутність, настав час створити простий web-контролер.
Цей контролер має GET і POST методи, обидва відносяться до / .
Метод showForm повертає шаблон form. Він включає Person у своїй сигнатурі, що дозволяє відповідні атрибути з Person .
Метод checkPersonInfo приймає два аргументи:
- person об'єкт позначений як @Valid для отриманнязаповнених атрибутів із форми
- bindingResult об'єктом ви можете перевірити на помилки та повернути їх
Ви можете повернути всі атрибути форми, пов'язаної з об'єктом Person . У коді ви перевіряєте існування помилок і, якщо вони є, то відправляєте назад шаблон form . У цій ситуації всі помилки атрибутів відображено.
Якщо всі атрибути вірні, браузер перенаправляє на шаблон results .
Створення HTML форми
Тепер ви створите "головну" сторінку.
Сторінка містить просту форму, де кожне поле розташоване на окремому рядку таблиці. Форма призначена для відправлення до / . Вона представляє personal об'єкт, який ви бачили в GETметоді в web-контролері. Форма являє собою відомуbean-backed форму. У ньому два поля Person бина, th:field="*" і th:field="*" . Наступні поля використовують для відображення будь-яких помилок валідації.
У результаті ви натискаєте кнопку "Submit". Якщо введені користувачем ім'я та вік суперечать обмеженням @Valid , то повернеться та сама сторінка, але з відображеними помилками. Якщо введені ім'я та вік правильні, користувач буде перенаправлений на наступну web-сторінку:
Створення Application класу
У цій програмі ви використовуєте мову шаблонів Thymeleaf. Цьому додатку потрібно більше, ніж просто HTML.
Для активації Spring MVC зазвичай додаєте @EnableWebMvc до Application класу. Але Spring Boot @EnableAutoConfiguration вже додає цю інструкцію, коли виявляєspring-webmvc у вашому classpath. Ця програма також містить @ComponentScan, яка знаходить анотовані @Controller класи та їх методи.
Thymeleaf конфігурація також виявляється через @EnableAutoConfiguration : шаблони за замовчуваннямрозташовані в templates/ і визначаються як уявлення без урахування суфікса .html в імені файлу. Налаштування Thymeleaf можуть бути змінені та перевизначені різними способами в залежності від вашого завдання, але ми не будемо розглядати це в цьому уроці.
Складання виконуваного JAR
Ви можете зібрати єдиний виконуваний JAR-файл, який містить усі необхідні залежності, класи та ресурси. Це робить його легким у завантаженні, версіонуванні та розгортанні сервісу як програми протягом усього періоду розробки, на різних середовищах тощо.
Потім ви можете запустити JAR-файл:
Якщо ви використовуєте Maven, ви можете запустити програму, використовуючи mvn spring-boot:run , або ви можете зібрати програму з mvn clean package і запустити JAR приблизно так:
Запуск сервісу
Якщо ви використовуєте Gradle, ви можете запустити ваш сервіс із командного рядка:
Як варіант, ви можете запустити ваш сервіс безпосередньо з Gradle приблизно так:
Програма повинна бути піднята та запущена через кілька секунд.
Якщо ви зайдете на http://localhost:8080/, то маєте побачити наступне:

Що буде, якщо ви введетеA для імені та15 для віку та натиснетеSubmit ?
Ви побачите це тому, що введені значення порушують обмеження у класі Person. Якщо ви натиснете Submit c порожнім значенням поля введення віку, отримайте іншу помилку.

Якщо ви введете правильні ім'я та вік, то відобразиться results сторінка!

Вітаємо! Ви тільки що розробили простий web-додаток з вбудованою перевіркою в об'єкті. Цим способом ви можете наділити дані відповідними критеріями коректного введення користувачем.
">