Большая часть проверки данных HTTP-запроса в системе B/S выполняется на стороне клиента, что также для простоты и соображений пользователя, но проверка на стороне сервера необходима в некоторых системах с высокими требованиями безопасности.
Spring3 поддерживает структуру проверки JSR-303. JSR-303 является подпечкой в Java EE 6, называемой Beanvalidation. Официальной справочной реализацией является Hibernate Validator (не имеет ничего общего с Hibernate ORM). JSR 303 используется для проверки значений полей в бобах Java.
Валидатор в основном проверяет рациональность данных, представленных пользователем, например, является ли она пустой, независимо от того, превышает ли длина пароля, чем 6 цифр, будь то чисто цифровой и т. Д. Итак, как вы можете использовать такую мощную структуру проверки в Spring Boot?
В сочетании с валидацией и Springboot
1. Добавить теги в фасоль
Часть кода:
Тег должен быть добавлен в атрибут, @notblank Значение тега объясняется в конце статьи
Пользователь открытого класса {Private Integer ID; @Notblank (message = "{user.name.notblank}") частное имя строки; частное имя пользователя;2. Включите проверку в контроллере
Добавьте тег @validated в параметр запроса в контроллере, чтобы включить проверку
@Requestmapping (method = requestMethod.post) public user create (@requestbody @validated пользователь пользователя) {return userservice.create (user); }3. Создайте новый файл конфигурации сообщений об ошибке в рамках ресурса
Создать новый файл конфигурации сообщений «ValidationMessages.properties» в каталоге ресурсов.
ПРИМЕЧАНИЕ. Имя должно быть «ValidationMessages.properties», потому что Springboot автоматически считывает сообщение об ошибке в ValidationMessages.properties в группе класса.
Файл ValidationMessages.properties кодируется как ASCII. Тип данных является ключевым значением. Ключ "user.name.notblank" является соответствующим значением сообщения в скобках первого шага -боба.
Значение - это быстрое сообщение, но это ASCII. (Содержимое «Имя не может быть пустым»)
4. Настройте обработчик исключений, чтобы поймать сообщения об ошибках
Когда проверка не удается, будет брошено исключение. Сообщение об исключении - это оперативная информация, настроенная в ValidationMessages.properties. Обработчик исключений определяется здесь. Захватить информацию об исключении (потому что может быть несколько элементов, которые не проходят проверку, они захвачены и обрабатываются равномерно) и бросают ее на переднюю часть. (Это отдельный отправитель передней и задней части)
public void methodArgumentNotvalidexception (Exception Ex, httpservletRequest, запрос httpservletresponse) {logger.error (":" + commonutil.gethttpclientinfo (request), ex); MethodArgumentNotvalidexception c = (methodArgumentNotvalidexception) ex; Список <objecterror> ошибки = c.getBindingResult (). GetAllerrors (); StringBuffer errorrrrmsg = new StringBuffer (); Ошибки. pouplateExceptionResponse (ответ, httpstatus.internal_server_error, errorrmsg.tostring ()); } private void pouplateExceptionResponse (httpservletresponse ответ, httpstatus errorcode, string errormessage) {try {response.senderror (errorcode.value (), errormessage); } catch (ioException e) {logger.error ("Не удалось заполнить ошибку ответа", e); }}5. Прикрепите несколько значений тегов
| предел | иллюстрировать |
|---|---|
| @Нулевой | Ограничивать только ноль |
| @Notnull | Предел не должен быть нулевым |
| @AssertFalse | Предел должен быть ложным |
| @AssertTrue | Предел должен быть правдой |
| @Decimalmax (значение) | Предел должен быть число, которое не больше указанного значения. |
| @Decimalmin (значение) | Предел должен быть числом не меньше, чем указанное значение |
| @Digits (целое число, дробь) | Предел должен быть десятичным, и количество цифр в целочисленной части не может превышать целое число, а количество цифр в части дробной части не может превышать долю |
| @Будущее | Предел должен быть будущей датой |
| @Max (значение) | Предел должен быть число, которое не больше указанного значения. |
| @Min (значение) | Предел должен быть числом не меньше, чем указанное значение |
| @Прошлое | Предел должен быть датой прошлой |
| @Pattern (значение) | Ограничение должно соответствовать указанному регулярному выражению |
| @Size (макс, мин) | Ограничить длину символа должна быть между минимальным и максимум |
| @Прошлое | Убедитесь, что значение элемента (тип даты) аннотации раньше, чем текущее время |
| @Notempty | Убедитесь, что значение элемента аннотации проверки не является нулевым и не пустым (длина строки не 0, размер коллекции не 0) |
| @Notblank | Убедитесь, что значение элемента аннотации не является пустым (не нулевой, длина равен 0 после удаления первого пространства). В отличие от @notempty, @notblank применяется только к струнам и будет удалять строковые пространства при сравнении. |
| @Электронная почта | Убедитесь, что значение элемента аннотации - это электронная почта, и вы также можете указать пользовательский формат электронной почты посредством регулярных выражений и флагов. |
Пример
@Pattern (regexp = "^[a-za-z0-9]+$", message = "{account.username.space}") @size (min = 3, max = 20, message = "{account.username.size}")Пример 2
Здесь мы в основном используем аннотации для обучения. Давайте сначала поговорим о наших потребностях:
У нас есть demo.html, на странице есть два поля «Имя элемента, библиотека ввода пароля и кнопка отправки.
После отправки на фон, используйте валидатор для проверки, а затем отправьте в Demo.html, если есть ошибка,
Сначала мы пишем класс объектов, чтобы получить ввод пользователя и использовать аннотацию валидатора для проверки:
пакет com.kfit.demo; Импорт org.hibernate.validator.constraints.length; импорт org.hibernate.validator.constraints.notempty; демо открытого класса {Private Long ID; @Notempty (message = "Имя не может быть пустым") частное имя строки; @Notempty (message = "пароль не может быть пустым") @length (min = 6, message = "Длина пароля не может быть менее 6 цифр") Private String Password; publiclong getId () {return id; } publicvoid setId (longid) {this.id = id; } public String getName () {return name; } public void setName (string name) {this.name = name; } public String getPassword () {return пароль; } public void setPassword (String password) {this.password = password; } @Override public String toString () {return "demo [id =" + id + ", name =" + name + ", password =" + password + "]"; }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.