La mayor parte de la verificación de los datos de solicitud de HTTP en el sistema B/S se realiza en el lado del cliente, lo que también es para consideraciones de simplicidad y experiencia del usuario, pero la verificación del lado del servidor es indispensable en algunos sistemas con altos requisitos de seguridad.
Spring3 admite el marco de verificación JSR-303. JSR-303 es un subespec en Java EE 6 llamado BeanValidation. La implementación de referencia oficial es Hibernate Validator (no tiene nada que ver con Hibernate ORM). JSR 303 se usa para verificar los valores de los campos en los granos Java.
El validador verifica principalmente la racionalidad de los datos enviados por el usuario, como si está vacía, si la longitud de la contraseña es mayor que 6 dígitos, ya sea puramente digital, etc. Entonces, ¿cómo puede usar un marco de verificación tan potente en el arranque de primavera?
Combinado con validación y brotador
1. Agregue las etiquetas al frijol
Parte del código:
La etiqueta debe agregarse al atributo, @notblank El significado de la etiqueta se explica al final del artículo
Usuario de clase pública {ID de entero privado; @Notblank (mensaje = "{user.name.notblank}") Nombre de cadena privada; nombre de usuario de cadena privada;2. Encienda la verificación en el controlador
Agregue la etiqueta @Validated al parámetro de solicitud en el controlador para habilitar la verificación
@RequestMapping (método = requestMethod.post) Usuario público Crear (@RequestBody @Validated User User) {return UserService.Create (usuario); }3. Cree un nuevo archivo de configuración de mensaje de error en recursos
Cree un nuevo archivo de configuración de mensajes de solicitud "ValidationMessages.Properties" en el directorio de recursos
NOTA: El nombre debe ser "ValidationMessages.Properties" porque SpringBoot lee automáticamente el mensaje de error en ValidationMessages.Properties en el ClassPath.
El archivo ValidationMessages.Properties está codificado como ASCII. El tipo de datos es un valor clave. La clave "user.name.notblank" es el valor del mensaje correspondiente en los aparatos ortopédicos del primer paso frijol.
El valor es un mensaje rápido, pero es ASCII. (El contenido es "el nombre no puede estar vacío")
4. Personalice el controlador de excepción para captar mensajes de error
Cuando la verificación falla, se lanzará una excepción. El mensaje de excepción es la información rápida configurada en validationMessages.properties. El controlador de excepciones se define aquí. Capture la información de excepción (porque puede haber múltiples elementos que no logran pasar la verificación, se capturan y procesan de manera uniforme) y lanzarla al delantero. (Este es el remitente separado delantero y trasero)
public void MethodarGumentNotValidException (excepción ex, solicitud httpservletRequest, respuesta httpServletResponse) {logger.error (":" + comunicación.gethttpclientinfo (solicitud), ex); MethodarGumentNotValidException c = (metodArGumentNotValidException) ex; Lista <BJECTERROR> ERRORES = C.GetBindingResult (). GetAllerrors (); StringBuffer errorMSG = new StringBuffer (); errores.stream (). foreach (x -> errormsg.append (x.getDefaultMessage ()). append (";"); poupplateExceptionResponse (respuesta, httpstatus.internal_server_error, errorMSG.ToString ()); } private void pOuplateExceptionResponse (httpservletResponse respuesta, httpstatus errorcode, string errorMessage) {try {Response.sendError (errorCode.Value (), errorMessage); } Catch (IOException e) {logger.error ("Error de respuesta no poblado", e); }}5. Adjunte algunos significados de la etiqueta
| límite | ilustrar |
|---|---|
| @Nulo | Límite solo para NULL |
| @Notnull | El límite no debe ser nulo |
| @Assertfalse | El límite debe ser falso |
| @Asserttrue | El límite debe ser verdad |
| @DecimalMax (valor) | El límite debe ser un número que no sea mayor que el valor especificado. |
| @Decimalmin (valor) | El límite debe ser un número no menor que el valor especificado |
| @Digits (entero, fracción) | El límite debe ser un decimal, y el número de dígitos en la parte entero no puede exceder el entero, y el número de dígitos en la parte de la fracción no puede exceder la fracción |
| @Futuro | El límite debe ser una fecha futura |
| @Max (valor) | El límite debe ser un número que no sea mayor que el valor especificado. |
| @Min (valor) | El límite debe ser un número no menor que el valor especificado |
| @Pasado | El límite debe ser una fecha pasada |
| @Pattern (valor) | La restricción debe cumplir con la expresión regular especificada |
| @Size (Max, Min) | Límite de la longitud del personaje debe estar entre Min y Max |
| @Pasado | Verifique que el valor del elemento (tipo de fecha) de la anotación sea anterior a la hora actual |
| @Notempty | Verifique que el valor del elemento de la anotación de verificación no sea nulo y no está vacía (la longitud de la cadena no es 0, el tamaño de la colección no es 0) |
| @Notblank | Verifique que el valor del elemento de la anotación no esté vacío (no nula, la longitud es 0 después de eliminar el primer espacio). A diferencia de @notempty, @notblank solo se aplica a las cadenas y eliminará los espacios de cadena al comparar. |
| @Correo electrónico | Verifique que el valor del elemento de la anotación sea el correo electrónico, y también puede especificar un formato de correo electrónico personalizado a través de expresiones y banderas regulares. |
Ejemplo
@Pattern (regexp = "^[A-ZA-Z0-9]+$", Message = "{Account.Username.space}") @Size (min = 3, max = 20, mensaje = "{Account.Username.Size}")Ejemplo 2
Aquí utilizamos principalmente anotaciones para aprender. Hablemos primero de nuestras necesidades:
Tenemos una demo.html, en la página, hay dos cuadros de entrada de nombre de elementos, biblioteca de entrada de contraseña y botón Enviar.
Después de enviar al fondo, use Validator para la verificación y luego reenvíe a Demo.html si hay un error,
Primero escribimos una clase de entidad para recibir la entrada del usuario y usar la anotación de validador para verificar:
paquete com.kfit.demo; importar org.hibernate.validator.constraints.length; import org.hibernate.validator.constraints.notempty; demostración de clase pública {ID de largo privado; @Notempty (mensaje = "el nombre no puede estar vacío") Nombre de cadena privada; @Notempty (mensaje = "La contraseña no puede estar vacía") @Length (min = 6, mensaje = "La longitud de la contraseña no puede ser inferior a 6 dígitos") PRITA PRIVAD publicLong getId () {return id; } publicvoid setid (longid) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; } @Override public String toString () {return "demo [id =" + id + ", name =" + name + ", contraseña =" + contraseña + "]"; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.