A maior parte da verificação dos dados de solicitação HTTP no sistema B/S é feita no lado do cliente, o que também é para considerações de simplicidade e experiência do usuário, mas a verificação do lado do servidor é indispensável em alguns sistemas com altos requisitos de segurança.
Spring3 suporta a estrutura de verificação JSR-303. O JSR-303 é um sub-especificação em Java EE 6 chamado Beanvalidation. A implementação oficial de referência é o Validador Hibernate (nada tem a ver com o Hibernate ORM). O JSR 303 é usado para verificar os valores dos campos em feijões Java.
O validador verifica principalmente a racionalidade dos dados enviados pelo usuário, como se está vazio, se o comprimento da senha é superior a 6 dígitos, seja puramente digital etc. Então, como você pode usar uma estrutura de verificação tão poderosa na inicialização da primavera?
Combinado com validação e trampolim
1. Adicione tags ao feijão
Parte do código:
A tag precisa ser adicionada ao atributo, @NotBlank O significado da tag é explicado no final do artigo
Public class Usuário {ID inteiro privado; @NotBlank (message = "{user.name.notblank}") nome da string privada; Nome de usuário privado de string;2. Ligue a verificação no controlador
Adicione a tag @validada ao parâmetro de solicitação no controlador para ativar a verificação
@RequestMapping (Method = requestMethod.post) Usuário público Crie (@RequestBody @Validated User) {return userservice.create (usuário); }3. Crie um novo arquivo de configuração de mensagem de erro em recurso
Crie um novo arquivo de configuração de mensagens imediata "ValidationMessages.Properties" no diretório de recursos
Nota: O nome deve ser "validationMessages.properties" porque o Springboot lê automaticamente a mensagem de erro em validationMessages.properties no caminho de classe.
O arquivo ValidationMessages.Properties é codificado como ASCII. O tipo de dados é o valor da chave. Key "user.name.notblank" é o valor da mensagem correspondente nos aparelhos do primeiro passo.
O valor é uma mensagem rápida, mas é ASCII. (O conteúdo é "o nome não pode estar vazio")
4. Personalize o manipulador de exceção para capturar mensagens de erro
Quando a verificação falhar, uma exceção será lançada. A mensagem de exceção é as informações rápidas configuradas em validationmessages.properties. O manipulador de exceção é definido aqui. Capture informações de exceção (porque pode haver vários itens que não passam na verificação, eles são capturados e processados de maneira uniforme) e jogue -os no front -end. (Esta é a frente e a parte traseira, remetente separado)
public void MethodargumentNotValideXception (Exceção ex, httpServletRequest Solicy, httpServletResponse resposta) {Logger.error (":" + Commonutil.gethttpClientInfo (solicitação), ex); MethodargumentNotValideXception c = (MethodargumentNotValidexception) Ex; Lista <BJecterror> erros = c.getBindingResult (). GetAllErrors (); StringBuffer errorMsg = new StringBuffer (); errors.stream (). foreach (x -> errorMsg.append (x.getDefaultMessage ()). Append (";"; ")); pouplateExceptionResponse (resposta, httpstatus.internal_server_error, errorMsg.toString ()); } private void pouplateExceptionResponse (resposta httpServletResponse, httpstatus errorcode, string errorMessage) {try {Response.senderror (errorCode.value (), errorMessage); } catch (ioexception e) {Logger.error ("Falha ao preencher o erro de resposta", e); }}5. Anexe alguns significados de tags
| limite | ilustrar |
|---|---|
| @Nulo | Limitar apenas a nulo |
| @NotNull | O limite não deve ser nulo |
| @Assertfalse | O limite deve ser falso |
| @AssertTrue | O limite deve ser verdadeiro |
| @Decimalmax (valor) | O limite deve ser um número que não seja maior que o valor especificado. |
| @Decimalmin (valor) | O limite deve ser um número não menor que o valor especificado |
| @Digits (número inteiro, fração) | O limite deve ser um decimal, e o número de dígitos na parte inteira não pode exceder o número inteiro, e o número de dígitos na parte da fração não pode exceder a fração |
| @Futuro | O limite deve ser uma data futura |
| @Max (valor) | O limite deve ser um número que não seja maior que o valor especificado. |
| @Min (valor) | O limite deve ser um número não menor que o valor especificado |
| @Passado | O limite deve ser uma data passada |
| @Pattern (valor) | A restrição deve cumprir a expressão regular especificada |
| @Size (Max, min) | O comprimento do caractere limite deve estar entre min e max |
| @Passado | Verifique se o valor do elemento (tipo de data) da anotação é anterior ao horário atual |
| @NotEmpty | Verifique se o valor do elemento da anotação de verificação não é nulo e não está vazio (o comprimento da string não é 0, o tamanho da coleção não é 0) |
| @NotBlank | Verifique se o valor do elemento da anotação não está vazio (não é nulo, o comprimento é 0 após a remoção do primeiro espaço). Ao contrário do @NotEmpty, o @NotBlank é aplicado apenas a strings e removerá os espaços de string ao comparar. |
| Verifique se o valor do elemento da anotação é o email e você também pode especificar um formato de email personalizado por meio de expressões e sinalizadores regulares. |
Exemplo
@Pattern (regexp = "^[a-za-z0-9]+$", message = "{Account.username.space}") @size (min = 3, max = 20, message = "{Account.username.size}")Exemplo 2
Aqui, usamos principalmente anotações para aprender. Vamos falar sobre nossas necessidades primeiro:
Temos uma Demo.html, na página, existem duas caixas de entrada de nomes de elementos, biblioteca de entrada de senha e botão de envio.
Depois de se submeter ao plano de fundo, use o validador para verificação e depois avance para Demo.html se houver um erro,
Primeiro, escrevemos uma classe de entidade para receber a entrada do usuário e usar a anotação do validador para verificar:
pacote com.kfit.demo; importar org.hibernate.validator.constraints.length; importar org.hibernate.validator.constraints.notEmpty; classe pública demo {private longo id; @NotEmpty (message = "Nome não pode estar vazio") Nome da sequência privada; @NotEmpty (message = "A senha não pode estar vazia") @Length (min = 6, message = "O comprimento da senha não pode ser menor que 6 dígitos") senha da sequência privada; publiclong getId () {return id; } publicVoid setId (longId) {this.id = id; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } @Override public String tostring () {return "Demo [id =" + id + ", nome =" + nome + ", senha =" + senha + "]"; }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.