• SpringMvc的数据校验


         Spring4.0拥有自己独立的数据校验框架,同时支持JSR 303标准的校验框架,Spring在进行数据绑定的时候,可同时调用校验框架完成数据校验工作,在SpringMvc中,可直接通过注解驱动的方式进行数据校验。

        Spring的LocalValidatorFactoryBean既实现了Spring的Validator接口,也实现了JSR 303的Validator接口,只要在Spring容器里定义了一个LocalValidatorFactoryBean,即可将其注入到需要数据校验的bean中,Spring本身并没有提供JSR 303的实现,所以必须将JSR 303的jar包放到类路径下。

        <mvc:annotation-driven/>会默认装配好一个LocalValidatorFactoryBean,通过在处理方法的入参前面标注@Valid注解即可让SpringMvc在完成数据绑定之后执行数据校验的工作。

    package com.seven.demos;
    
    import com.seven.domain.Employee;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.Errors;
    import org.springframework.validation.FieldError;
    import org.springframework.web.bind.annotation.RequestMapping;
    import javax.validation.Valid;
    
    /**
     * Created by hu on 2016/4/4.
     */
    @RequestMapping("/SpringMvcTest1")
    @Controller
    public class SpringMvcTest1 {
        /*
        * 在目标方法中获取校验结果
        * 在表单/命令对象的属性中标注校验注解,在处理方法对应的入参前添加@Valid,SpringMvc就会实施校验
        * 并将校验结果保存在校验入参对象之后的BindingResult或Error入参中。
        * 常用的方法:
        * FieldError getFieldError(String field)
        * List<FieldError> getFieldErrors()
        * Object getFieldValue(String field)
        * int getErrorCount()
        * */
        @RequestMapping("/save")
        public String save(@Valid Employee employee,Errors errors){
            System.out.println("save:"+employee);
            if (errors.getErrorCount()>0){
                System.out.println("出错了!");
                for(FieldError error:errors.getFieldErrors()){
                    System.out.println(error.getField()+":"+error.getDefaultMessage());
                }
                //出错了,重新返回输入页面
                return "input";
            }
            //没有出错,就转到正确的页面
            return "success";
        }
    }
    

      SpringMvc除了会将表单/命令对象的校验结果保存在对应的BindingResult或Error对象中外,还会将所有校验结果保存到"隐含模型",即使处理方法的签名中没有对应与表单/命令对象的结果入参,校验结果也会保存在"隐含模型"中。隐含模型中的所有数据最终都是通过HttpServletRequest的属性列表暴露给JSP视图对象,因此在JSP中可以获取错误信息。

  • 相关阅读:
    绿盟UTS综合威胁探针管理员任意登录
    深信服EDR3.2.21任意代码执行
    linux反弹shell总结
    mysql在8.0版本下修改密码的命令
    Linux提权常用漏洞速查表
    windows提权常用系统漏洞与补丁编号速查对照表
    通达OA<=11.5版本SQL注入——附件上传
    通达OA<=11.5版本SQL注入——日程安排
    希尔伯特曲线python3实现
    深信服edr控制中心漏洞——验证码逻辑错误
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5350093.html
Copyright © 2020-2023  润新知