Maison Java javaDidacticiel Série d'apprentissage SpringMVC (6) Vérification des données

Série d'apprentissage SpringMVC (6) Vérification des données

Mar 03, 2017 am 10:58 AM
springmvc

Dans les séries (Série dapprentissage SpringMVC (6) Vérification des données) et (Série dapprentissage SpringMVC (6) Vérification des données), nous avons montré comment lier les données. Après avoir lié les données, comment garantir l'exactitude des données que nous obtenons ? C'est ce dont nous allons parler dans cet article —> Validation des données.

Ici, nous utilisons Hibernate-validator pour la vérification. Hibernate-validator implémente le cadre de vérification JSR-Série dapprentissage SpringMVC (6) Vérification des données0Série dapprentissage SpringMVC (6) Vérification des données et prend en charge la vérification du style d'annotation. Nous devons d'abord aller sur http://www.php.cn/ pour télécharger le package jar requis. Ici, nous utilisons Série dapprentissage SpringMVC (6) Vérification des données.Série dapprentissage SpringMVC (6) Vérification des données.Série dapprentissage SpringMVC (6) Vérification des données.Final comme démonstration. Après décompression, hibernate-validator-Série dapprentissage SpringMVC (6) Vérification des données.Série dapprentissage SpringMVC (6) Vérification des données.Série dapprentissage SpringMVC (6) Vérification des données.Final.jar et. jboss-logging-Série dapprentissage SpringMVC (6) Vérification des données.Série dapprentissage SpringMVC (6) Vérification des données Les trois packages .0.jar et validation-api-Série dapprentissage SpringMVC (6) Vérification des données.0.0.GA.jar sont ajoutés au projet.

Configurez le fichier springservlet-config.xml dans le projet précédent, comme suit :

<!-- 默认的注解映射的支持 -->  
    <annotation-driven></annotation-driven>
    
    <bean>
        <property></property>
        <!--不设置则默认为classpath下的 ValidationMessages.properties -->
        <property></property>
    </bean>
    <bean></bean>
    <bean>  
        <property></property>  
        <property></property>  
        <property dapprentissage springmvc v des donn></property>  
    </bean>
Copier après la connexion


propriété nom="basename" valeur="classpath:validatemessages"/>中Le classpath:validatemessages est le fichier où se trouve le message de vérification de l'annotation, et nous devons l'ajouter dans le dossier des ressources.

Ajoutez un ValidateController.java dans le package com.demo.web.controllers avec le contenu suivant :

package com.demo.web.controllers;import java.security.NoSuchAlgorithmException;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.demo.web.models.ValidateModel;

@Controller
@RequestMapping(value = "/validate")public class ValidateController {
    
    @RequestMapping(value="/test", method = {RequestMethod.GET})    public String test(Model model){        if(!model.containsAttribute("contentModel")){
            model.addAttribute("contentModel", new ValidateModel());
        }        return "validatetest";
    }
    
    @RequestMapping(value="/test", method = {RequestMethod.POST})    public String test(Model model, @Valid @ModelAttribute("contentModel") ValidateModel validateModel, BindingResult result) throws NoSuchAlgorithmException{        
        //如果有验证错误 返回到form页面
        if(result.hasErrors())            return test(model);        return "validatesuccess";     
    }
    
}
Copier après la connexion


Parmi eux @Valid @ModelAttribute("contentModel") ValidateModel @Valid de validateModel signifie valider après avoir lié les données à @ModelAttribute("contentModel").

Ajoutez un ValidateModel.java dans le package com.demo.web.models avec le contenu suivant :

package com.demo.web.models;import org.hibernate.validator.constraints.Email;import org.hibernate.validator.constraints.NotEmpty;import org.hibernate.validator.constraints.Range;public class ValidateModel{
    
    @NotEmpty(message="{name.not.empty}")    private String name;
    @Range(min=0, max=Série dapprentissage SpringMVC (6) Vérification des donnéesSérie dapprentissage SpringMVC (6) Vérification des données0,message="{age.not.inrange}")    private String age;
    @NotEmpty(message="{email.not.empty}")
    @Email(message="{email.not.correct}")    private String email;    
    public void setName(String name){        this.name=name;
    }    public void setAge(String age){        this.age=age;
    }    public void setEmail(String email){        this.email=email;
    }    
    public String getName(){        return this.name;
    }    public String getAge(){        return this.age;
    }    public String getEmail(){        return this.email;
    }
    
}
Copier après la connexion


Annotez le fichier où la vérification message se trouve. Ajoutez le contenu suivant au fichier validatemessages.properties :

name.not.empty=\uSérie dapprentissage SpringMVC (6) Vérification des donnéesSérie dapprentissage SpringMVC (6) Vérification des données0D\u79F0\uSérie dapprentissage SpringMVC (6) Vérification des donnéesE0D\u80FD\uSérie dapprentissage SpringMVC (6) Vérification des donnéesESérie dapprentissage SpringMVC (6) Vérification des donnéesA\u7A7A\uSérie dapprentissage SpringMVC (6) Vérification des données00Série dapprentissage SpringMVC (6) Vérification des données
age.not.inrange=\uSérie dapprentissage SpringMVC (6) Vérification des donnéesE7Série dapprentissage SpringMVC (6) Vérification des données\u9F8Série dapprentissage SpringMVC (6) Vérification des données\u8D8Série dapprentissage SpringMVC (6) Vérification des données\uSérie dapprentissage SpringMVC (6) Vérification des donnéesSérie dapprentissage SpringMVC (6) Vérification des donnéesFA\u8Série dapprentissage SpringMVC (6) Vérification des données0Série dapprentissage SpringMVC (6) Vérification des données\uSérie dapprentissage SpringMVC (6) Vérification des données6FSérie dapprentissage SpringMVC (6) Vérification des données\uSérie dapprentissage SpringMVC (6) Vérification des données00Série dapprentissage SpringMVC (6) Vérification des données
email.not.correct=\u90AE\u7BBSérie dapprentissage SpringMVC (6) Vérification des données\uSérie dapprentissage SpringMVC (6) Vérification des données7Série dapprentissage SpringMVC (6) Vérification des données0\uSérie dapprentissage SpringMVC (6) Vérification des données7Série dapprentissage SpringMVC (6) Vérification des données0\uSérie dapprentissage SpringMVC (6) Vérification des donnéesE0D\u6B6Série dapprentissage SpringMVC (6) Vérification des données\u786E\uSérie dapprentissage SpringMVC (6) Vérification des données00Série dapprentissage SpringMVC (6) Vérification des données
email.not.empty=\u7Série dapprentissage SpringMVC (6) Vérification des donnéesSérie dapprentissage SpringMVC (6) Vérification des donnéesSérie dapprentissage SpringMVC (6) Vérification des données\uSérie dapprentissage SpringMVC (6) Vérification des donnéesBSérie dapprentissage SpringMVC (6) Vérification des données0\u90AE\uSérie dapprentissage SpringMVC (6) Vérification des donnéesEF6\uSérie dapprentissage SpringMVC (6) Vérification des donnéesE0D\u80FD\u60DF\u60Série dapprentissage SpringMVC (6) Vérification des données0\uSérie dapprentissage SpringMVC (6) Vérification des données00Série dapprentissage SpringMVC (6) Vérification des données
Copier après la connexion


où name.not.empty et ainsi de suite correspondent respectivement au xxx dans message= "xxx" dans le nom du fichier ValidateModel.java, le contenu suivant est le code ASCII qui est automatiquement converti lors de la saisie du chinois. Bien sûr, vous pouvez également écrire xxx directement comme contenu d'invite sans créer un autre fichier validatemessages.properties et l'ajouter. , mais c'est incorrect car il est difficile de l'encoder. Si vous l'encodez, il n'y a aucun moyen de l'internationaliser.

Ajoutez deux vues, validatetest.jsp et validatesuccess.jsp, dans le dossier des vues :

nbsp;html PUBLIC "-//WSérie dapprentissage SpringMVC (6) Vérification des donnéesC//DTD HTML Série dapprentissage SpringMVC (6) Vérification des données.0Série dapprentissage SpringMVC (6) Vérification des données Transitional//EN" "http://www.wSérie dapprentissage SpringMVC (6) Vérification des données.org/TR/htmlSérie dapprentissage SpringMVC (6) Vérification des données/loose.dtd"><meta><title>Insert title here</title>
    <form>     
        
        <errors></errors><br><br>
            
        name:<input><br>
        <errors></errors><br>
        
        age:<input><br>
        <errors></errors><br>
        
        email:<input><br>
        <errors></errors><br>

        <input>
        
    </form>  
Copier après la connexion


nbsp;html PUBLIC "-//WSérie dapprentissage SpringMVC (6) Vérification des donnéesC//DTD HTML Série dapprentissage SpringMVC (6) Vérification des données.0Série dapprentissage SpringMVC (6) Vérification des données Transitional//EN" "http://www.wSérie dapprentissage SpringMVC (6) Vérification des données.org/TR/htmlSérie dapprentissage SpringMVC (6) Vérification des données/loose.dtd"><meta><title>Insert title here</title>
    验证成功!
Copier après la connexion


Il convient particulièrement de noter le form:form modelAttribute="contentModel" method="post">'smodelAttribute="xxx" derrière Le nom xxx doit correspondre au @Valid correspondant @ModelAttribute("xxx") Les noms xxx sont cohérents, sinon les données du modèle et les informations d'erreur ne seront pas liées.

formulaire : erreurs chemin="nom">form:errors> affichera les informations d'erreur des attributs correspondants du modèle lorsque path="*", il s'affichera. les informations d'erreur de tous les attributs du message d'erreur du modèle.

Lancer le test :

Série dapprentissage SpringMVC (6) Vérification des données

Cliquez sur soumettre directement :

Série dapprentissage SpringMVC (6) Vérification des données

pour voir Le message d'erreur pour les paramètres s'affiche correctement.

Soumettre des données incorrectes :

Série dapprentissage SpringMVC (6) Vérification des données

Vous pouvez constater que le message d'erreur défini s'affiche toujours correctement.

Remplissez les données correctes et soumettez :

Série dapprentissage SpringMVC (6) Vérification des données

Série dapprentissage SpringMVC (6) Vérification des données

Vous pouvez voir que la vérification est réussie.

Voici les principales notes et instructions de vérification :

<.>@Digits(integer=chiffres entiers, fraction=chiffres décimaux)Vérifiez la valeur de l'élément de l'annotation La limite supérieure de. chiffres entiers et chiffres décimaux@FutureVérifiez que la valeur de l'élément de l'annotation (type de date) est postérieure à l'heure actuelle@Max(value=x)Vérifiez que la valeur de l'élément annoté est inférieure ou égale à la valeur spécifiée par @Max@Min(value=x)

Notes

Types de données applicables

Description

@AssertFalse

Booléen, booléen

La valeur de l'élément de l'annotation de vérification est fausse

@AssertTrue

Booléen, booléen

Vérifiez que la valeur de l'élément de l'annotation est vraie

@DecimalMax(value=x)

BigDecimal, BigInteger, String, byte, short, int , long et les wrappers respectifs des types primitifs. En outre pris en charge par HV : tout sous-type de Number et CharSequence

@DecimalMin(value=x)
BigDecimal, BigInteger, String, byte,short, int, long et les wrappers respectifs des types primitifs En outre pris en charge par HV : tout sous-type de Number et CharSequence

<.>

BigDecimal, BigInteger, String, byte, short, int, long et les wrappers respectifs des types primitifs Également pris en charge par HV : tout sous-type de Number et CharSequence.

java.util .Date, java .util.Calendar ; également pris en charge par HV, si l'API de date/heure Joda Time est sur le chemin de classe : toutes les implémentations deReadablePartial etReadableInstant.

BigDecimal, BigInteger, byte, short,int, long et les wrappers respectifs des types primitifs . Également pris en charge par HV : tout sous-type de CharSequence (la valeur numérique représentée par la séquence de caractères. est évalué), tout sous-type de Nombre.

BigDecimal, BigInteger, byte, short,int, long et les wrappers respectifs des types primitifs. De plus pris en charge par HV : tout sous-type de CharSequence (la valeur numérique représentée par la séquence de caractères est. évalué), tout sous-type de Nombre.

Vérifiez que la valeur de l'élément de l'annotation est supérieure ou égale à la valeur spécifiée par @Min

@NotNull

Tout type

Vérifiez que la valeur de l'élément de l'annotation n'est pas nulle

@Null

Tout type

Valider l'élément annoté La valeur est nulle

@Past

java.util.Date, java.util .Calendar ; également pris en charge par HV, si l'API de date/heure Joda Time est sur le chemin de classe : toutes les implémentations deReadablePartial etReadableInstant.

Vérifiez que la valeur de l'élément de l'annotation (type de date) est antérieure à l'heure actuelle

@Pattern(regex=regular expression, flag=)

String Également pris en charge par HV : tout sous-type de CharSequence.

Vérifiez que la valeur de l'élément annoté correspond à l'expression régulière spécifiée

@Size(min=valeur minimale , max=valeur maximale)

String, Collection, Map et tableaux Également pris en charge par HV : tout sous-type de CharSequence.

Vérifiez que la valeur de l'élément de l'annotation se situe dans la plage spécifiée de min et max (inclus), telle que la longueur des caractères et la taille de la collection

@Valid

Tout type non primitif (type de référence)

Vérifiez l'objet associé, tel qu'un objet de commande dans l'objet compte, précisez Vérifier l'objet de commande

@NotEmpty

CharSequence ,Collection, Map and Arrays

Vérifiez que la valeur de l'élément de l'annotation n'est ni nulle ni vide (la longueur de la chaîne n'est pas 0 et la taille de la collection n'est pas 0)

@Range(min=valeur minimale, max=valeur maximale)

CharSequence, Collection, Map and Arrays,BigDecimal, BigInteger, CharSequence, byte, short, int, long and the respective wrappers of the primitive types

Vérification La valeur de l'élément annoté est comprise entre les valeurs minimales et maximales

@NotBlank

CharSequence

Vérifiez que la valeur de l'élément de l'annotation n'est pas vide (non nulle et que la longueur est de 0 après avoir supprimé l'espace de début). @NotBlank s'applique uniquement aux chaînes et lors de la comparaison, les espaces dans la chaîne seront supprimés

@Length(min=limite inférieure, max=supérieure limite)

CharSequence

Vérifiez que la longueur de la valeur de l'élément de l'annotation se situe dans l'intervalle min et max

@Email

CharSequence

Vérifiez que la valeur de l'élément de l'annotation est Email, ou vous pouvez utiliser des expressions régulières et un indicateur pour spécifier un format d'e-mail personnalisé

Pour plus d'informations, veuillez vous référer à la documentation officielle : http://docs.jboss.org/hibernate/validator/Série dapprentissage SpringMVC (6) Vérification des données.Série dapprentissage SpringMVC (6) Vérification des données/reference/en-US/html/validator-usingvalidator.html

Remarque : je n'ai pas prêté attention à l'exemple de code dans les Série dapprentissage SpringMVC (6) Vérification des donnéesSérie dapprentissage SpringMVC (6) Vérification des données premiers articles auparavant. Je ne sais pas pourquoi le package téléchargé à ce moment-là n'avait pas de code. Fichier de projet .project. Par conséquent, après le téléchargement, il n'a pas pu être directement importé dans Eclipse pour être exécuté ou sur une machine virtuelle. Je l'ai à nouveau supprimé. Ces exemples de codes ne sont pas sauvegardés, mais les fichiers de code sont toujours là, vous pouvez donc le faire. créez un nouveau projet Web dynamique et importez les fichiers de configuration, les contrôleurs et les vues correspondants. Désolé pour la gêne occasionnée à tout le monde.

Ce qui précède est le contenu de la vérification des données dans SpringMVC Learning Series (6). Pour plus de contenu connexe, veuillez prêter attention à la série d'apprentissage SpringMVC (6). Site Web chinois PHP (www.php.cn) !


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comparaison et analyse des différences entre SpringBoot et SpringMVC Comparaison et analyse des différences entre SpringBoot et SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot et SpringMVC sont tous deux des frameworks couramment utilisés dans le développement Java, mais il existe des différences évidentes entre eux. Cet article explorera les fonctionnalités et les utilisations de ces deux frameworks et comparera leurs différences. Tout d’abord, découvrons SpringBoot. SpringBoot a été développé par l'équipe Pivotal pour simplifier la création et le déploiement d'applications basées sur le framework Spring. Il fournit un moyen rapide et léger de créer des fichiers exécutables autonomes.

Quelles sont les différences entre SpringBoot et SpringMVC ? Quelles sont les différences entre SpringBoot et SpringMVC ? Dec 29, 2023 am 10:46 AM

Quelle est la différence entre SpringBoot et SpringMVC ? SpringBoot et SpringMVC sont deux frameworks de développement Java très populaires pour la création d'applications Web. Bien qu’ils soient souvent utilisés séparément, les différences entre eux sont évidentes. Tout d’abord, SpringBoot peut être considéré comme une extension ou une version améliorée du framework Spring. Il est conçu pour simplifier le processus d'initialisation et de configuration des applications Spring afin d'aider les développeurs

Quelle est la différence entre SpringBoot et SpringMVC ? Quelle est la différence entre SpringBoot et SpringMVC ? Dec 29, 2023 pm 05:19 PM

SpringBoot et SpringMVC sont deux frameworks couramment utilisés dans le développement Java. Ils sont tous deux fournis par le framework Spring, mais ils présentent certaines différences dans leurs fonctions et leur utilisation. Cet article présentera respectivement les caractéristiques et les différences de SpringBoot et SpringMVC. 1. Caractéristiques de SpringBoot : Configuration simplifiée : SpringBoot simplifie considérablement le processus de configuration du projet grâce au principe de convention sur la configuration. Il peut configurer automatiquement les paramètres requis par le projet et les développeurs

Quelles sont les différences entre springboot et springmvc Quelles sont les différences entre springboot et springmvc Jun 07, 2023 am 10:10 AM

Les différences entre springboot et springmvc sont les suivantes : 1. Différentes significations ; 2. Différentes configurations ; 3. Différentes dépendances ; 4. Différentes périodes de développement 6. Différentes façons d'implémenter la fonction d'empaquetage JAR ; Fonction fournie ; 8. Différentes fonctions ; 9. Différents supports de communauté et de documentation ;

Quelles sont les différences entre spring et springmvc Quelles sont les différences entre spring et springmvc Dec 29, 2023 pm 05:02 PM

La différence entre spring et springmvc : 1. Positionnement et fonctions ; 2. Fonctions de base 3. Champs d'application ; Introduction détaillée : 1. Positionnement et fonctions. Spring est un cadre de développement d'applications complet qui fournit l'injection de dépendances, la programmation orientée aspect, la gestion des transactions et d'autres fonctions. Il est conçu pour simplifier le développement d'applications au niveau de l'entreprise, et Spring MVC est le meilleur. Framework Spring. Un module qu'il contient est utilisé pour le développement d'applications Web et implémente le modèle MVC 2. Fonctions de base, etc.

Utilisation de SpringMVC pour le traitement des services Web dans le développement d'API Java Utilisation de SpringMVC pour le traitement des services Web dans le développement d'API Java Jun 17, 2023 pm 11:38 PM

Avec le développement d’Internet, les services Web deviennent de plus en plus courants. En tant qu'interface de programmation d'applications, JavaAPI lance constamment de nouvelles versions pour s'adapter aux différents scénarios d'application. En tant que framework open source populaire, SpringMVC peut nous aider à créer facilement des applications Web. Cet article explique en détail comment utiliser SpringMVC pour le traitement des services Web dans le développement JavaAPI, y compris la configuration de SpringMVC, l'écriture de contrôleurs et l'utilisation de

Comment utiliser l'intercepteur SpringMVC de Java Comment utiliser l'intercepteur SpringMVC de Java May 13, 2023 pm 02:55 PM

Le rôle de l'intercepteur L'intercepteur de SpringMVC est similaire au filtre dans le développement de servlets, qui est utilisé pour pré-traiter et post-traiter le processeur. Les intercepteurs sont connectés en une chaîne dans un certain ordre, et cette chaîne est appelée chaîne d'intercepteurs (InterceptorChain). Lors de l'accès à une méthode ou à un champ intercepté, les intercepteurs de la chaîne d'intercepteurs seront appelés dans l'ordre dans lequel ils ont été précédemment définis. Les intercepteurs sont également la mise en œuvre spécifique des idées AOP. La différence entre les intercepteurs et les filtres : Filtre (Filter) Le domaine d'utilisation de l'intercepteur (Intercepter) fait partie de la spécification du servlet et peut être utilisé par n'importe quel projet JavaWeb.

Comparez les similitudes et les différences entre SpringBoot et SpringMVC Comparez les similitudes et les différences entre SpringBoot et SpringMVC Dec 29, 2023 am 08:30 AM

Analyser les similitudes et les différences entre SpringBoot et SpringMVC SpringBoot et SpringMVC sont des frameworks de développement très importants dans le domaine Java. Bien qu'ils fassent tous deux partie du framework Spring, il existe des différences évidentes en termes d'utilisation et de fonctionnalité. Cet article comparera SpringBoot et SpringMVC et analysera les similitudes et les différences entre eux. Tout d’abord, découvrons SpringBoot. PrintempsBo

See all articles