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

  • 相关阅读:
    [转] CSocket 和CAsyncSocket类介绍
    error C2275: 'SOCKET' : illegal use of this type as an expression
    tagVARIANT、VARIANT、_variant_t和COleVariant
    使用MFC WinInet进行FTP中文件的简单上传和下载功能
    【转】VS2008快速将代码中字符串改为_T(“”)风格的方法
    【转】Internet与Intranet区别
    POSIX是什么?
    Ocx控件注册不成功?可能是tlb文件导致~
    十三种基于直方图的图像全局二值化算法原理、实现、代码及效果(转)
    图像匹配之欧式距离算法(转)
  • 原文地址:https://www.cnblogs.com/Doaoao/p/10669968.html
Copyright © 2011-2022 走看看