SpringMVC поддерживает проверку данных, является стандартом JSR303, и он подтверждается путем набора @notnull, @max и т. Д. На свойствах бобов. JSR303 предоставляет множество аннотационных интерфейсов, и SpringMVC использует Hibernate для этих проверок, поэтому нам нужно добавить пакет валидатора для Hibernate:
Полагаясь на цитаты
Compile 'javax.validation: Validation-API: 2.0.0.Final' Compil 'org.бибил: Hibernate-Validator: 6.0.0.final'
Структура обеспечила проверку следующим образом:
Проверьте аннотации, предоставленные JSR:
@Null Аннотированный элемент должен быть нулевым
@Notnull Аннотированный элемент не должен быть нулевым, не может быть нулевым, может быть ""
@AssertTrue Аннотированный элемент должен быть правдой
@AssertFalse Аннотированный элемент должен быть ложным
@Min (значение) Аннотированный элемент должен быть числом, а его значение должно быть больше или равным указанному минимальному значению.
@Max (значение) Аннотированный элемент должен быть числом, а его значение должно быть меньше или равным указанному максимальному значению.
@Decimalmin (значение) Аннотированный элемент должен быть числом, а его значение должно быть больше или равным указанному минимальному значению
@Decimalmax (значение) аннотированный элемент должен быть числом, а его значение должно быть меньше или равным указанному максимальному значению
@Size (max =, min =) проверить, находится ли длина объекта (массив, сбор, карта, строка) в данном диапазоне
@Digits (целое число, фракция) Аннотированный элемент должен быть числом, и его значение должно быть в приемлемого диапазона.
@Past Аннотированный элемент должен быть датой прошлой
@Future аннотированный элемент должен быть будущей датой
@Pattern (regex =, flag =) аннотированный элемент должен соответствовать указанному регулярному выражению
Проверьте аннотации, предоставленные warmernate vadytor:
@Notblank (message =) может использоваться только на строке, а не на нулевом, и после вызова Trim () длина должна быть больше 0
@Email Аннотированный элемент должен быть адресом электронной почты
@Length (min =, max =) Размер аннотированной строки должен быть в пределах указанного диапазона.
@Notempty Комментарийная строка должна быть непустым, не может быть нулевой »,« может быть ""
@Range (min =, max =, message =) аннотированный элемент должен быть в соответствующем диапазоне
Пример демонстрации
Создайте класс сущностей, который необходимо проверить:
пакет com.yiba.wifi.news.bean.model; import org.hibernate.validator.constraints.length; import javax.validation.constraints.*; пользователь открытого класса {@notblank (message = "Имя пользователя не может быть нулевым, длина должна быть больше 0") Строковое имя; // имя пользователя @min (value = 1, message = "Минимальный возраст - 1 год") @max (значение = 120, сообщение = "максимальный возраст - 120") целый возраст; // age @email (message = "emailbox format error") @notblank (message = "ошибка формата электронной почты") string email; // Электронная почта @Length (min = 6, max = 12, message = "Длина пароля должна быть от 6 до 12 цифр") строка pwd; // пароль // get, set .........}Обратите внимание, что при проверке электронной почты, когда электронное письмо «» или NULL, оно пройдет проверку @Email, поэтому проверка электронной почты требует, чтобы @Email и @NotBlank работали вместе.
Конструкция интерфейса контроллера, добавьте ключевое слово @validated, где принимается параметр
/ *** Вход в систему* @return*/ @postmapping ("login") public String login (@validated @requestbody пользователь пользователя) {return "ok"; }Тесты доступа:
При доступе к данным находится в следующем формате
{"name": "", "Age": 0, "Email": "", "pwd": ""}Ответ:
{«TimeStamp»: 1524640724522, «Статус»: 400, «Ошибка»: «Плохой запрос», «Исключение»: «org.springframework.web.bind.methodargumentnotvalidexception», «Ошибки»: [{«коды»: ["notblank.user.email", "notblank. "NotBlank.java.lang.String", "NotBlank" ], "arguments": [ { "codes": [ "user.email", "email" ], "arguments": null, "defaultMessage": "email", "code": "email" } ], "defaultMessage": "email format error", "objectName": "user", "field": "email", «DEUCEDEDVALUE»: «», «BindingFailure»: false, «code»: «notblank»}, {«коды»: [«notblank.user.name», «notblank.name», «notblank.java.lang.String», «notblank»], «аргументы»: [(»:« user -name »,« argy »,« argement »:« agement »:« argement »:« argement »:« argement »:« argement »:« argy »:« argy »:« argement »:« argement »:« argement »:« argy »:« argy »:« argy »:« argement »:« argement.me »:« null, "defaultMessage": "name", "code": "name" } ], "defaultMessage": "User name cannot be null, the length must be greater than 0", "objectName": "user", "field": "name", "rejectedValue": "", "bindingFailure": false, "code": "NotBlank" }, { "codes": [ «Length.user.pwd», «length.pwd», «length.java.lang.string», «длина»], «аргументы»: [{«коды»: [«user.pwd», «pwd»], «аргументы»: null, «defaultMessage»: «Pwd», «код»: «Pwd»}, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 -й. быть от 6 до 12 бит «,« ObjectName »:« пользователь »,« поле »:« pwd »,« dueceedValue »:« »,« BindingFailure »: false,« код »:« длина »}, {« коды »: [« min.user.age »,« min.age »,« java.lang.lang.inte »,« armeres »:« armeres »:« armeres »:« armeres »: «user.age», «возраст»], «аргументы»: null, «defaultmessage»: «Возраст», «код»: «возраст»}, 1], «defaultmessage»: «Минимальный возраст - 1 год», «ObjectName»: «Пользователь», «Field»: «Возраст», «ReuceedValue»: 0, «связывается»: «Код»: «»: «neh» «»: «»: «»: «neh»: «»: «neh»: «»: «»: «neh» «»: «neh» «»: «nefedEdValue». «Проверка проверки для объекта = 'пользователь». Count: 4 »,« Path »:«/yiba/sms/login »}Вы можете видеть, что локальный запрос не смог проверить 4 поля. Так есть ли для меня способ получить информацию об исключении? Ответ - да, и нам нужно изменить интерфейс контроллера.
/** * Вход в систему интерфейса * * @return */@postmapping ("login") public String login (@validated @requestbody Пользователь пользователя, BindingResult bindingResult) {if (bindingResult.haserrors ()) {// Проверка, что сбой <objecterror> errorlist = bindingResult. для (objecterror error: errorlist) {System.out.println (error.getDefaultmessage ()); // Вывод конкретного сообщения об ошибке} возвращать "исключение параметров"; } вернуть "OK"; }Запрос еще раз, формат запроса выглядит следующим образом
{"name": "", "Age": 0, "Email": "", "pwd": ""}Ответ заключается в следующем
Исключение параметра
Информация, напечатанная на консоли, заключается в следующем:
Имя пользователя не может быть нулевым, длина должна быть больше 0
Длина пароля должна составлять от 6 до 12 цифр.
Вы можете видеть, что мы получили информацию о проверке обычно.
Давайте сделаем ссылку на правильный доступ:
Параметры запроса следующие:
{"Имя": "ZhaoyAnjun", "AGE": 1, "Email": "[email protected]", "pwd": "123456"}Ответ заключается в следующем:
ХОРОШО
Консоль ничего не вызывает.
Суммировать
Выше приведен пример демонстрации функции проверки параметров запроса Spring, введенной редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!