zoukankan      html  css  js  c++  java
  • SpringMVC_数据校验

    一:数据校验的分类

    数据校验分为前台校验和后台校验,前台校验主要是利用JavaScript来完成的,后台校验主要利用Java代码来完成的,可以使用SpringMvc和Hibernate validator来完成数据校验

    二:后台数据校验

    1:导入Maven相关Jar包(在父pom.xml文件中)

    <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-validator</artifactId>
       <version>6.0.9.Final</version>
    </dependency>

    2:创建Java类需要校验的数据属性上添加相应的注解

    package com.doaoao.check;
    import javax.validation.constraints.Min;
    import javax.validation.constraints.NotEmpty;
    import javax.validation.constraints.Size;
    
    public class testUser {
        
        @NotEmpty(message = "用户名不能为空")
        @Size(min = 5,max = 10,message = "用户名的长度为{min}-{max}之间")  // 会将{min}替换为前面设置的min值
        private String username;
        
        @Min(value = 0,message = "年龄的大小不能小于{vlaue}")
        @Min(value = 150,message = "年龄的大小不能大于{vlaue}")
        private int age;
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

     3:修改配置文件 springmvc.xml中的内容

    <!--验证器-->
    <bean id="doaoaoValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
    </bean>
    
    <!--注册注解驱动-->
    <mvc:annotation-driven validator="doaoaoValidator"/>

    4:创建一个Controller

    package com.doaoao.check;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.FieldError;
    import org.springframework.validation.ObjectError;
    import org.springframework.validation.annotation.Validated;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    import java.util.List;
    
    @Controller
    public class UserController {
        @RequestMapping("/register.do")
        public ModelAndView register(@Validated testUser user, BindingResult br){
            ModelAndView m = new ModelAndView();
            List<ObjectError> allError = br.getAllErrors();
            // 当格式校验出错时执行 alllError不为空时
            if(allError != null && allError.size() > 0){
                FieldError nameError = br.getFieldError("name");
                FieldError ageError = br.getFieldError("age");
    
                // 当用户名输入出现问题
                if(nameError != null){
                    m.addObject("nameError",nameError.getDefaultMessage());
                }
    
                // 当年龄输入出现问题
                if(ageError != null){
                    m.addObject("ageError",ageError.getDefaultMessage());
                }
                m.setViewName("/register");
                return m;
            }
            m.addObject("name",user.getUsername());
            m.setViewName("/user");
            return m;
        }
    }

    5:jsp中的内容

     <form action="/register.do" method="get">
        用户名:<input type="text" name="username">${nameError}<br>
        年龄:<input type="text" name="age">${ageError}<br>
        <input type="submit" value="提交">
    </form>

    # 注:hibernate validator中常用注解

     ...

    本笔记参考自:小猴子老师教程 http://www.monkey1024.com

  • 相关阅读:
    网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、RSS、VXLAN
    pve5下的iptables案例分析-无法访问input相关端口
    linux mail相关-涉及windows下nslookup使用
    qemu的vnc选项-参考至qemu wiki
    windows任务管理器-线程优先级
    在proxmox中模拟树莓派
    unzip命令的使用
    fdisk分区遇到的问题-涉及lv逻辑卷扩容
    fail2ban(1)
    Different Integers 牛客网暑期ACM多校训练营(第一场) J 离线+线状数组或者主席树
  • 原文地址:https://www.cnblogs.com/Doaoao/p/10669968.html
Copyright © 2011-2022 走看看