Série d'apprentissage SpringMVC (6) Vérification des données
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>
où 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"; } }
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; } }
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
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>
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> 验证成功!
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 :
Cliquez sur soumettre directement :
pour voir Le message d'erreur pour les paramètres s'affiche correctement.
Soumettre des données incorrectes :
Vous pouvez constater que le message d'erreur défini s'affiche toujours correctement.
Remplissez les données correctes et soumettez :
Vous pouvez voir que la vérification est réussie.
Voici les principales notes et instructions de vérification :
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 <.> | @Digits(integer=chiffres entiers, fraction=chiffres décimaux)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. | |||
| @Max(value=x)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. | ||
| @Min(value=x)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 |
|
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) |
|
Vérification La valeur de l'élément annoté est comprise entre les valeurs minimales et maximales |
|
@NotBlank |
|
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) |
|
Vérifiez que la longueur de la valeur de l'élément de l'annotation se situe dans l'intervalle min et max |
|
|
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) !

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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

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 ;

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.

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

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.

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
