spring mvc 数据校验开发步骤

1.导入数据校验的jar包

导入的包有:

    hibernate-validator-4.3.0.Final.jar
    jboss-logging-3.1.0.CR2.jar
    validation-api-1.0.0.GA.jar

其中的版本可根据自己需求而选择

2.修改spring mvc配置文件,配置校验器

    
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
    bean>
3.修改spring mvc配置文件,启用校验器
<mvc:annotation-driven validator="validator"/>
4.添加校验规则;在控制器中启用校验器,对客户端传来的数据进行校验
  • 对course实体类,添加校验规则
        @Size(min=2,max=20)
        private String courseName;
        //同一个参数,可以启用多个校验规则
        @NotNull
        @Range(min=1,max=10)
        private Integer courseScore; //在使用框架技术后,为了避免可空的类型转换异常,一般使用包装类进行定义
        @NotNull()
        private Date startDate;
  • 在控制器中启用校验器,对客户端传来的数据进行校验
    //使用@Validated 启用校验规则
    //注意校验结果参数需要放在校验参数后面才能生效:@Validated Course course,BindingResult bindingResult
    @RequestMapping("/doAdd")
    public String doAddCourse(Model model,@Validated Course course,BindingResult bindingResult){

        //启用服务端校验后,客户端输入的参数在校验是=时可能会校验失败,如果校验失败则错误信息会绑定BindingResult对象中
        if(bindingResult.hasErrors()){
            List errors = bindingResult.getAllErrors();
            for(ObjectError error : errors){
                logger.info(error.getDefaultMessage());
            }
            //如果验证错误,则不执行保存操作,可以把错误信息返回到新增页面进行显示
            model.addAttribute("errors",errors);
            model.addAttribute("course",course);//把表单信息回传jsp页面,进行返显
            return "addCourse";
        }//注意:服务器校验应该在调用业务层代码前进行处理

        //mvc框架很重要的两个功能是数据的封装、数据的转换、编码的转换
        logger.info(course.getCourseId()+","+course.getCourseName()+
                ","+course.getCourseScore()+","+course.getStartDate());
        //调用service保存到数据库中
        boolean blag = courseService.addCourse(course);
        //在spring mvc中使用重定向请求
        logger.info("blag="+blag);
        if(blag==true){
            return "redirect:/course/find.action";
        }else{
            return "redirect:/course/toAdd.action";
        }
    }
5.捕获错误信息(可使用自定义错误信息提示),进行信息返显
  • jsp页面:
<div>
    
        <c:if test="${errors!=null }">
            <c:forEach items="${errors }" var="error">
                <c:out value="${error.defaultMessage }" />
            c:forEach>
        c:if>
    div>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    
    <td><input type="text" name="courseId" value="${course.courseId }"/>td>
  • 新建自定义信息提示
    自定义信息提示文件:demoValidationMessage.properties
    #定制国际化的异常提示信息
    #可以根据程序的功能模块进行定制
    #${0}表示,调用校验规则时传递的值
    ssmdemo.course.courseid.notnull=课程编号不能为空
    ssmdemo.course.courseid.min=课程编号长度必须大于等于${min}

    ssmdemo.course.courseName.notnull=课程名称不能为空
    ssmdemo.course.courseName.min=课程名长度必须大于等于{min},小于等于{max}

    ssmdemo.course.courseScore.notnull=课程分数不能为空
    ssmdemo.course.courseScore.min=课程分数必须大于等于{min},小于等于{max}

    ssmdemo.course.startDate.notnull=日期不能为空
  • 相应的spring mvc配置文件 - - 修改

    
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
        <property name="validationMessageSource" ref="messageSource">property>
    bean>

    
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>classpath:config/demoValidationMessagevalue>
            list>
        property>
        <property name="defaultEncoding" value="UTF-8"/>
        
        <property name="cacheSeconds" value="120">property>
    bean>

你可能感兴趣的:(ssm,spring,mvc,数据校验)