spring - validation 校验

spring - validation

validation就是前段传来的数据和数据的约束条件进行对比,对数据添加条件的

配置文件 pom.xml



<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.wmgroupId>
    <artifactId>validation_demoartifactId>
    <version>1.0-SNAPSHOTversion>
    <packaging>warpackaging>

    <name>validation_demo Maven Webappname>
    
    <url>http://www.example.comurl>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <maven.compiler.source>1.7maven.compiler.source>
        <maven.compiler.target>1.7maven.compiler.target>
    properties>

    <dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
            <scope>testscope>
        dependency>
        

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>4.3.17.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            
            <scope>providedscope>
        dependency>
        
        
        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-validatorartifactId>
            <version>5.4.1.Finalversion>
        dependency>
    dependencies>

    <build>
        <finalName>validation_demofinalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-clean-pluginartifactId>
                    <version>3.0.0version>
                plugin>
                
                <plugin>
                    <artifactId>maven-resources-pluginartifactId>
                    <version>3.0.2version>
                plugin>
                <plugin>
                    <artifactId>maven-compiler-pluginartifactId>
                    <version>3.7.0version>
                plugin>
                <plugin>
                    <artifactId>maven-surefire-pluginartifactId>
                    <version>2.20.1version>
                plugin>
                <plugin>
                    <artifactId>maven-war-pluginartifactId>
                    <version>3.2.0version>
                plugin>
                <plugin>
                    <artifactId>maven-install-pluginartifactId>
                    <version>2.5.2version>
                plugin>
                <plugin>
                    <artifactId>maven-deploy-pluginartifactId>
                    <version>2.8.2version>
                plugin>
            plugins>
        pluginManagement>
    build>
project>

web.xml的配置



<web-app>
  <display-name>Archetype Created Web Applicationdisplay-name>
  
  <servlet>
    <servlet-name>springmvcservlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    
    <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:spring-web.xmlparam-value>
    init-param>
  servlet>
  <servlet-mapping>
    <servlet-name>springmvcservlet-name>
    <url-pattern>/url-pattern>
  servlet-mapping>
web-app>

sping-web.xml


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/context"
       xmlns:context="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:component-scan base-package="com.wm.controller"/>
    <context:annotation-driven validator="myvalidator"/>
    
    <bean  id="myvalidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
    bean>
beans>

使用的方法

validation 是用注解的方式写在实体类的元素上加上注解进行约束的.

这里以Phone的实体类进行演示

package com.wm.entity;

import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * 〈手痒〉
* 〈〉 * * @author 11493 * @create 2018/6/8 * @since 1.0.0 */
public class Phone { // 校验字符串是否空白的 // @NotNull 校验不为空 @NotBlank(message = "品牌不能为空") private String brand; // 正则表达式 []代表的是 一位 // {3} 有3个和前面一样的 // ? 前面这个元素可以出现一次或者没有 // * 0-n个元素 // + 1-n个元素 // ()可以阔到一起,统一匹配规则 @Pattern(regexp = "[A-Z]([A-Za-z0-9]{3}){1,3}-[0-9]{3,4}[A-Z]?") private String model; // 最小值为0 @NotNull(message = "价钱不能为空") @Min(value = 0,message = "不能比零小") private Double price; private Date launchDate; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Date getLaunchDate() { return launchDate; } public void setLaunchDate(Date launchDate) { this.launchDate = launchDate; } }

注解的含义

@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@NotEmpty 被注释的字符串的必须非空
@NotBlank 验证字符串非null,且长度必须大于0
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Pattern(regex=) 被注释的元素必须符合指定的正则表达式
@Email 被注释的元素必须是电子邮箱地址
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Digits(integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@Range(min=,max=) 被注释的元素必须在合适的范围内
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false

controller层中验证测试

package com.wm.controller;

import com.wm.entity.Phone;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;

/**
 * 〈手痒〉
* 〈〉 * * @author 11493 * @create 2018/6/8 * @since 1.0.0 */
// mvc框架中的controller注入器 @Controller @RequestMapping("/phone") public class PhoneController { @RequestMapping("/add") public void add(@Valid/*校验*/ Phone phone,/*必须加一个bindingResult 是个返回结果*/BindingResult bindingResult) { if (bindingResult.hasErrors()) { // 判断结果是否有错误 field 是字段的意思 // FieldError brand = bindingResult.getFieldError("brand"); // System.out.println(brand.getDefaultMessage()); System.out.println("没有通过校验"); }else { System.out.println("通过了校验"); } } }

目录的结构

spring - validation 校验_第1张图片

你可能感兴趣的:(spring)