精华内容
下载资源
问答
  • 数据校验

    千次阅读 2013-04-24 09:40:47
    什么是数据校验? 通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。 奇偶校验 ...

    什么是数据校验?

    通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。


    奇偶校验

    实现方法:数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。
    应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。

    bcc异或校验法(block check character)


    实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常
    把她附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。
    校验值计算的代码类似于:
    unsigned uCRC=0;//校验初始值
    for(int i=0;i<DataLenth;i++) uCRC^=Data[i];
    适用范围:适用于大多数要求不高的数据通讯
    应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。

    crc循环冗余校验(Cyclic redundancy check)


    实现方法:这是利用除法及余数的原理来进行错误检测的.将接收到的码组进行除法运算
    ,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错。crc校验
    具还有自动纠错能力。
    crc检验主要有计算法和查表法两种方法,网上很多实现代码。
    适用范围:CRC-12码通常用来传送6-bit字符串;CRC-16及CRC-CCITT码则用是来传送
    8-bit字符。CRC-32:硬盘数据,网络传输等
    应用例子:rar,以太网卡芯片、MPEG解码芯片中

    md5校验和数字签名


    实现方法:主要有md5和des算法。
    适用范围:数据比较大或要求比较高的场合。如md5用于大量数据、文件校验,des用于保
    密数据的校验(数字签名)等等。
    应用例子:文件校验、银行系统的交易数据




    展开全文
  • 界面开发需要数据输入,输入数据就少不了数据校验。不同数据不同校验规则,本案例提供不同数据通过指定数据类型参数使用对应校验规则反馈结果。结果通过定义样式模板展示不同警醒效果!
  • struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验
  • java 数据校验

    2017-01-06 23:54:12
    java代码实现的数据校验类,包括奇偶校验和CRC校验等
  • 火龙果软件工程技术中心 本文内容包括:问题引出隔离校验器可组装校验器动态策略校验器模式与价值观结束语相关模式参考文献下载参考资料本文阐述软件架构与设计模式,它为架构师和开发人员提供了一组关于数据校验的...
  • struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
  • 这是校验数据的一种方式,即校验和方式,可实现数据发送的完整性验证
  • 本文实例讲述了Symfony数据校验方法。分享给大家供大家参考。具体分析如下: 校验在web应用程序中是一个常见的任务。数据输入到表单需要被校验。数据在被写入数据库之前或者传入一个webservice时也需要被校验。 ...
  • Android数据校验工具类

    2016-12-23 11:30:29
    Android数据校验工具类
  • 数据校验(数据完整性)

    千次阅读 2020-10-12 18:02:48
    数据校验 数据第一次写入成功后,会进行数据校验,获得校验和。 数据读取前,对数据进行校验,获得校验和,计算得到的校验和与第一次上传后的校验和进行对比。 两个校验和相同表示数据相同,可以提读取数据 ...

    数据校验

    在这里插入图片描述

    1. 数据第一次写入成功后,会进行数据校验,获得校验和。

    2. 数据读取前,对数据进行校验,获得校验和,计算得到的校验和与第一次上传后的校验和进行对比。

    3. 两个校验和相同表示数据相同,可以提读取数据

    4. 两个校验和不相同表示数据不相同,节点去其他节点读取

    5. 数据节点周期进行校验和计算,防止数据丢失。

    展开全文
  • SpringMVC_数据校验

    万次阅读 2019-07-31 21:48:16
    SpringMVC_数据校验

    一、JSR 303

    • JSR 303 Java Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0
    • JSR 303 通过Bean 属性上标注类似于 @NotNull@Max 等标准的注解指定校验规则,并通过标准的验证接口对 Bean 进行验证


    二、Hibernate Validator 扩展注解

    Hibernate Validator JSR 303 的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解

     

     

     


    三、Spring MVC 数据校验

    • Spring 4.0 拥有自己独立的数据校验框架,同时支持 JSR 303 标准的校验框架。
    • Spring 在进行数据绑定时,可同时调用校验框架完成数据校验工作。Spring MVC 中,可直接通过注解驱动的方式进行数据校验
    • Spring LocalValidatorFactroyBean 既实现了 Spring Validator 接口,也实现了 JSR 303 Validator 接口。只要在 Spring 容器中定义了一个 LocalValidatorFactoryBean,即可将其注入到需要数据校验的 Bean 中。
    • Spring 本身并没有提供 JSR303 的实现,所以必须将 JSR303 的实现者的 jar 包放到类路径下
    • <mvc:annotation-driven/> 会默认装配好一个 LocalValidatorFactoryBean,通过在处理方法的入参上标注 @valid 注解即可让 Spring MVC 在完成数据绑定后执行数据校验的工作
    • 在已经标注了 JSR303 注解的表单/命令对象前标注一个 @ValidSpring MVC 框架在将请求参数绑定到该入参对象后,就会调用校验框架根据注解声明的校验规则实施校验
    • Spring MVC 是通过对处理方法签名的规约来保存校验结果的:前一个表单/命令对象的校验结果保存到随后的入参中,这个保存校验结果的入参必须是 BindingResult Errors 类型,这两个类都位于 org.springframework.validation 包中
    • 需校验的 Bean 对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参
    • Errors 接口提供了获取错误信息的方法,如 getErrorCount() getFieldErrors(String field)
    • BindingResult 扩展了 Errors 接口

     


    四、在目标方法中获取校验结果

    在表单/命令对象类的属性中标注校验注解,在处理方法对应的入参前添加 @ValidSpring MVC 就会实施校验并将校验结果保存在被校验入参对象之后的 BindingResult Errors 入参中。

    常用方法:

    • FieldError getFieldError(String field)
    • List<FieldError> getFieldErrors()
    • Object getFieldValue(String field)
    • Int getErrorCount()

    五、在页面上显示错误 

    • Spring MVC 除了会将表单/命令对象的校验结果保存到对应的 BindingResult Errors 对象中外,还会将所有校验结果保存到 隐含模型
    • 即使处理方法的签名中没有对应于表单/命令对象的结果入参,校验结果也会保存在 隐含对象中。
    • 隐含模型中的所有数据最终将通过 HttpServletRequest 的属性列表暴露给 JSP 视图对象,因此在 JSP 中可以获取错误信息
    • JSP 页面上可通过 <form:errors path=“userName”> 显示错误消息

    六、示例

     

     

     

     


    七、提示消息的国际化 

    每个属性在数据绑定和数据校验发生错误时,都会生成一个对应的 FieldError 对象。

    当一个属性校验失败后,校验框架会为该属性生成 4 个消息代码,这些代码以校验注解类名为前缀,结合 modleAttribute、属性名及属性类型名生成多个对应的消息代码:例如 User 类中的 password 属性标准了一个 @Pattern 注解,当该属性值不满足 @Pattern 所定义的规则时, 就会产生以下 4 个错误代码:

    • Pattern.user.password
    • Pattern.password
    • Pattern.java.lang.String
    • Pattern

    当使用 Spring MVC 标签显示错误消息时, Spring MVC 会查看 WEB 上下文是否装配了对应的国际化消息,如果没有,则显示默认的错误消息,否则使用国际化消息。

    若数据类型转换数据格式转换时发生错误,或该有的参数不存在,或调用处理方法时发生错误,都会在隐含模型中创建错误消息。其错误代码前缀说明如下:

    • required:必要的参数不存在。如 @RequiredParam(“param1”) 标注了一个入参,但是该参数不存在
    • typeMismatch:在数据绑定时,发生数据类型不匹配的问题
    • methodInvocationSpring MVC 在调用处理方法时发生了错误

    注册国际化资源文件

     


    八、代码演示

    1. 输出错误消息

    public class Employee {
        @NotEmpty(message = "姓名不能为空")
        @Length(min = 5, max = 17, message = "姓名长度为5到17位")
        private String lastName;
    
        @Email
        private String email;
    
        private Integer gender;
    
        /**
         * 规定页面提交的日期格式
         *
         * @Past:必须是一个过去的时间
         * @Future :必须是一个未来的时间
         */
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        @Past
        private Date birth;
    

    注:需要自定义错误消息,字需要添加一个 message 属性即可,但是这样做我们就失去了国际化的功能

    /**
     * 保存员工
     */
    @RequestMapping(value = "/emp")
    public String addEmp(@Valid Employee employee, BindingResult result,
                         Model model) {
        System.out.println("要添加的员工:" + employee);
        // 获取是否有校验错误
        boolean hasErrors = result.hasErrors();
        Map<String, Object> errorsMap = new HashMap<>();
        if (hasErrors) {
            List<FieldError> errors = result.getFieldErrors();
            for (FieldError fieldError : errors) {
    
                System.out.println("错误消息提示:" + fieldError.getDefaultMessage());
                System.out.println("错误的字段是?" + fieldError.getField());
                System.out.println(fieldError);
                System.out.println("------------------------");
                errorsMap.put(fieldError.getField(), fieldError.getDefaultMessage());
            }
            //可以吧错误信息使用jsp进行回显
            model.addAttribute("errorInfo", errorsMap);
            System.out.println("有校验错误");
            return "index";
        } else {
            //...
            return "redirect:/success";
        }
    }
    <form action="emp">
        <input type="text" name="lastName" value="张三"><br>
        <input type="text" name="email" value="666666qq.com"><br>
        <input type="text" name="gender" value="0"><br>
        <input type="text" name="birth" value="2025-7-31"><br>
        <input type="submit">
    </form>

     输出

    要添加的员工:Employee{lastName='张三', email='666666qq.com', gender=0, birth=Thu Jul 31 00:00:00 CST 2025}
    错误消息提示:不是一个合法的电子邮件地址
    错误的字段是?email
    Field error in object 'employee' on field 'email': rejected value [666666qq.com]; codes [Email.employee.email,Email.email,Email.java.lang.String,Email]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [employee.email,email]; arguments []; default message [email],[Ljavax.validation.constraints.Pattern$Flag;@2fb720ec,org.springframework.validation.beanvalidation.SpringValidatorAdapter$ResolvableAttribute@179c3b74]; default message [不是一个合法的电子邮件地址]
    ------------------------
    错误消息提示:姓名长度为5到17位
    错误的字段是?lastName
    Field error in object 'employee' on field 'lastName': rejected value [张三]; codes [Length.employee.lastName,Length.lastName,Length.java.lang.String,Length]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [employee.lastName,lastName]; arguments []; default message [lastName],17,5]; default message [姓名长度为5到17位]
    ------------------------
    错误消息提示:需要是一个过去的时间
    错误的字段是?birth
    Field error in object 'employee' on field 'birth': rejected value [Thu Jul 31 00:00:00 CST 2025]; codes [Past.employee.birth,Past.birth,Past.java.util.Date,Past]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [employee.birth,birth]; arguments []; default message [birth]]; default message [需要是一个过去的时间]
    ------------------------
    有校验错误
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.9.Final</version>
    </dependency>

    2. 国际化演示

    public class Employee {
        @NotEmpty
        @Length(min = 5, max = 17)
        private String lastName;
    
        @Email
        private String email;
    
        private Integer gender;
    
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        @Past
        private Date birth;

     注:如果注解已经有 message  属性了,那么这个字段将会失去国际化功能,每次输出的都是这个message信息

    /**
     * 保存员工
     */
    @RequestMapping(value = "/emp")
    public String addEmp(@Valid Employee employee, BindingResult result,
                         Model model) {
        System.out.println("要添加的员工:" + employee);
        // 获取是否有校验错误
        boolean hasErrors = result.hasErrors();
    
        Map<String, Object> errorsMap = new HashMap<String, Object>();
        if (hasErrors) {
            List<FieldError> errors = result.getFieldErrors();
            for (FieldError fieldError : errors) {
    
                System.out.println("错误消息提示:" + fieldError.getDefaultMessage());
                System.out.println("错误的字段是?" + fieldError.getField());
                System.out.println(fieldError);
                System.out.println("------------------------");
                errorsMap.put(fieldError.getField(),
                        fieldError.getDefaultMessage());
            }
            model.addAttribute("errorInfo", errorsMap);
            System.out.println("有校验错误");
            return "index";
        } else {
           // employeeDao.save(employee);
            // 返回列表页面;重定向到查询所有员工的请求
            return "redirect:/emps";
        }
    }

     

    a)编写国际化配置文件

    errors_en_US.properties

    #精确优先
    #Email.email=email incorrect!~~
    Email=email buzhengque~~~
    NotEmpty=must not empty~~
    #占位符 动态传入
    Length.java.lang.String=length incorrect ,must between {2} and {1} ~~
    Past=must a past time~~~
    typeMismatch.birth=birth geshi buzhengque

    高级国际化 动态传入消息参数

    {0}:永远都是当前属性名;
    {1},{2}:参数的字典序。如下所示 {1} 代码的是 max 的值,{2} 代表的是 min 的值

    @NotEmpty
    @Length(min = 5, max = 17)
    private String lastName;

     errors_zh_CN.properties

    Email.email=邮箱不对!~~
    NotEmpty=不能为空~~
    Length.java.lang.String=长度不对~~
    Past=时间必须是过去的~~~
    typeMismatch.birth=生日的格式不正确

    b)让SpringMVC管理国际化资源文件 

    <!-- 管理国际化资源文件 -->
    <!--id必须是这个-->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <!--基础名-->
        <property name="basename" value="errors"/>
    </bean>
    
    <mvc:annotation-driven/>
    
    <mvc:default-servlet-handler/>

    c)来到页面取值

    <form action="emp" method="get">
        <input type="text" name="lastName" value="张三">${errorInfo.lastName}<br>
        <input type="text" name="email" value="666666qq.com">${errorInfo.email}<br>
        <input type="text" name="gender" value="0"><br>
        <input type="text" name="birth" value="2025-7-31">${errorInfo.birth}<br>
        <input type="submit">
    </form>

     

     

     

    展开全文
  • 数据校验的实现原理:数据校验码是在合法的数据编码之间,加进一些不允许出现的(非法的)编码,使合法的数据编码出现错误时成为非法编码。这样就可以通过检测编码的合法性达到发现错误的目的。
  • CalcCRC 数据校验工具

    2010-06-04 11:30:37
    CalcCRC 数据校验 工具CalcCRC 数据校验工具CalcCRC 数据校验工具CalcCRC 数据校验工具
  • 文档中包含了CRC8位数据校验 CRC16位数据校验 和校验 异或校验等常用校验方式,使用C++代码编写,很实用。
  • ssm数据校验和数据回显

    千次阅读 2018-11-05 12:50:07
    数据校验 校验的理解: 项目中,通常使用较多是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。 服务端校验: 控制层conroller:校验页面请求的参数的合法性。在服务端控制层...

     

     

    数据校验

     

    校验的理解:

    项目中,通常使用较多是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。

    服务端校验:

    • 控制层conroller:校验页面请求的参数的合法性。在服务端控制层conroller校验,不区分客户端类型(浏览器、手机客户端、远程调用)
    • 业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。
    • 持久层dao:一般是不校验的。

     

    springmvc校验需求:springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)。

    校验思路: 页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。

    此处做了两种情况

    1. 检验单一controller:pojo封装对象校验
    2. 分组校验多个controller:pojo对象属性校验

     

    单一校验:pojo对象属性校验

    需求

    本项目介绍的具体需求: 商品修改,添加校验(校验商品名称长度,生产日期的非空校验),如果校验出错,在商品修改页面显示错误信息。

    环境准备

    校验的三个核心jar包

    配置校验器

    <!-- 校验器 -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- hibernate校验器 -->
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
        <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如不指定,则默认classpath下的validationMessage.properties文件 -->
        <property name="validationMessageSource" ref="messageSource"></property>
    </bean>
    	
    <!-- 校验错误信息配置文件 -->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- 资源文件名 -->
        <property name="basenames">
    	<list>
    	    <!-- 配置错误信息文件 CustomValidationMessages.properties-->
    	    <value>classpath:CustomValidationMessages</value>
    	</list>
        </property>
        <!-- 解决中文乱码 -->
        <property name="defaultEncoding" value="utf-8"></property>		
        <!-- 资源文件编码格式 -->
        <property name="fileEncodings" value="utf-8"></property>
        <!-- 资源文件缓存时间 -->
        <property name="cacheSeconds" value="120"></property>
    </bean>

    校验器注入处理器适配器中

    <!-- 自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapte两个bean, 
        是spring MVC为@Controllers分发请求所必须的 -->
    <mvc:annotation-driven conversion-service="conversionService" validator="validator" />

    在pojo中编写错误规则

    // 商品名称在1-10个字符,message校验信息出错提示
    @Size(min=1,max=10,message="{items.items_name.length.error}")
    private String items_name; // 商品名称
    
    // 非空校验
    @NotNull(message="{items.items_price.isNull}")
    private Double items_price; // 商品价格

    编写错误信息

    这里注意:很多情况下java properties file中默认编码格式是:iso-8859-1,校验信息会出现乱码情况,需要改为UTF-8才能识别中文注释

    解决:Eclipse-Window-Preferences-General-Content Types-Text-Java Properties File-UTF-8

    #添加校验错误提示信息
    items.items_name.length.error=请输入1-10个字符的商品
    items.items_price.isNull=请输入商品价格!
    

    捕获校验错误信息

    在需要校验的pojo前边添加@Validated,后边添加BindingResult bindingResult接收校验出错信息
    注意:

    • @Validated和BindingResult bindingResult是配对出现。
    • 这里采用的是pojo的封装方式,所以需要@Valid来标识pojo的校验
    /**
     * 
     * @Description: 提交批量修改商品信息
     * 绑定原理:通过ItemsQueryVo批量提交商品信息,将商品信息存储在ItemsQueryVo的itemsList属性中
     * @param @param request 通过request对象获取请求信息
     * @param @param itemsQueryVo pojo绑定
     * @param @return 返回商品信息页面
     * @param @throws Exception   
     * @return ModelAndView  
     * @throws
     * @author XHChen
     * @date 2018年10月26日 下午9:30:23
    */
    @RequestMapping("/editItemsAllSubmit.action")
    public ModelAndView editItemsAllSubmit(HttpServletRequest request,
    	@Validated ItemsQueryVo itemsQueryVo, BindingResult bindingResult) 
    	throws Exception {
    		
    	// 返回ModelAndView
    	ModelAndView modelAndView = new ModelAndView();
    		
    	// 有校验错误
    	if (bindingResult.hasErrors()) {
    	    // 获得脚亚目错误信息
    	    List<ObjectError> objectErrors = bindingResult.getAllErrors();
    			
    	    // 页面提示错误信息
    	    // 添加错误信息
    	    modelAndView.addObject("objectErrors", objectErrors);
    			
    	    // 重新查询所有商品信息
    	    List<ItemsCustomer> itemsList = itemsService.findItemsList(itemsQueryVo);
    			
    	    // 返回数据
    	    modelAndView.addObject("itemsList", itemsList);
    			
    	    // 指定视图
    	    modelAndView.setViewName("items/editItemsQuery");
    			
    	} else {
    	    // 没有校验错误
    	    // 调用itemsService接口方法
    	    // 逐条提交批量修改商品信息
    	    itemsService.updateAllItems(itemsQueryVo.getItemsList());
        
    	    // 一次性提交批量修改商品信息,需要sql拼接
    	    // itemsService.updateAllItemsSubmit(itemsQueryVo.getItemsList());
    			
    	    // 重新查询所有商品信息
    	    List<ItemsCustomer> itemsList = itemsService.findItemsList(itemsQueryVo);
    			
    	    // 向页面传递数据
    	    modelAndView.addObject("itemsList", itemsList);
    			
    	    // 指定视图
    	    modelAndView.setViewName("items/itemsList");
    			
    	}
    	// 返回视图
    	return modelAndView;
    }
    

    在ItemsQueryVo.java商品信息包装类中标识校验

    // 接受list集合,批量商品信息
    @Valid
    private List<ItemsCustomer> itemsList;

    在页面显示校验错误信息

    <c:if test="${objectErrors!=null }">
        <c:forEach items="${objectErrors}" var="error">
    	${error.defaultMessage }
        </c:forEach>
    </c:if>

     

    分组校验:pojo封装对象校验

    需求

    在pojo中定义校验规则,而pojo是被多个 controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法需要不同的校验。

    解决方法:

    定义多个校验分组(其实是一个java接口),分组中定义有哪些规则

    每个controller方法使用不同的校验分组

     

    校验分组

    在cn.ssm.xhchen.validaGroups包下创建检验分组接口,接口不做任何方法,仅对校验进行分组

    商品名称校验接口

    package cn.ssm.xhchen.validaGroups;
    
    /**
     * 
     * ClassName: ValidaGroup1
     * 
     * @Description: 商品名称校验
     * @author XHChen
     * @date 2018年10月31日 下午9:16:56
     */
    public interface ValidaGroupItemsName {}
    

    商品价格校验校验接口

    package cn.ssm.xhchen.validaGroups;
    
    /**
     * 
     * ClassName: ValidaGroupItems_Price
     * 
     * @Description: 价格校验
     * @author XHChen
     * @date 2018年10月31日 下午9:20:50
     */
    public interface ValidaGroupItems_Price {}
    

    添加校验分组

    // 商品名称在1-10个字符,message校验信息出错提示
    @Size(min=1,max=10,message="{items.items_name.length.error}",groups=(ValidaGroupItemsName.class))
    private String items_name; // 商品名称
    
    // 非空校验
    @NotNull(message="{items.items_price.isNull}",groups=(ValidaGroupItems_Price.class))
    private Double items_price; // 商品价格

    Controller指定使用分组

    在需要校验的pojo前边添加@Validated,后边添加BindingResult bindingResult接收校验出错信息
    注意:

    • @Validated和BindingResult bindingResult是配对出现。
    • @Validated(value=ValidaGroupItemsName.class)指定校验分组
    • 单一controller不需要@Valid来标识pojo的校验
    /**
    * 
    * @Description: 修改商品信息
    * @param @param request 通过request对象获取请求信息
    * @param @param id 商品信息id
    * @param @param itemsCustomer
    * @param @return 返回商品列表
    * @param @throws Exception
    * @return ModelAndView
    * @throws
    * @author XHChen
    * @date 2018年10月26日 上午10:18:14
    */
    @RequestMapping("/editItemsSubmit.action")
    public ModelAndView editItemsSubmit(HttpServletRequest request, Integer id, 
    	@Validated(value=ValidaGroupItems_Price.class) ItemsCustomer itemsCustomer,BindingResult bindingResult,
    	ItemsQueryVo itemsQueryVo) throws Exception {
    		
    	// 返回ModelAndView
    	ModelAndView modelAndView = new ModelAndView();
    		
    	// 获得校验错误信息
    	if (bindingResult.hasErrors()) {
    			
    		List<ObjectError> objectErrors = bindingResult.getAllErrors();
    			
    		// 显示错误信息但页面
    		modelAndView.addObject("objectErrors", objectErrors);
    			
    		// 指定视图
    		modelAndView.setViewName("items/editItems");
    			
    	} else {
    		// 调用itemsService方法修改商品信息,需要将页面数据提交到此方法
    		itemsService.updateItems(id, itemsCustomer);
    
    		// 重新查询商品信息
    		List<ItemsCustomer> itemsList = itemsService.findItemsList(itemsQueryVo);
    
    		// 返回参数到页面
    		modelAndView.addObject("itemsList", itemsList);
    
    		// 指定视图
    		modelAndView.setViewName("items/itemsList");
    
    	}
    	// 返回指定视图
    	return modelAndView;
    		
    }

     

    数据回显

     

    什么数据回显: 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。

    pojo数据回显方法

    • springmvc默认对pojo数据进行回显。 pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写) 使用@ModelAttribute指定pojo回显到页面在request中的key。
    • @ModelAttribute还可以将方法的返回值传到页面 在商品查询列表页面,通过商品类型查询商品信息。 在controller中定义商品类型查询方法,最终将商品类型传到页面。
    // 商品分类
    // @ModelAttribute最终讲方法返回值放在value的key中
    @ModelAttribute("itemTypes")
    public Map<String, String> getItemTypes() {
    		
    	Map<String, String> getItemTypes = new HashMap<String, String>();
    		
    	getItemTypes.put("001", "电脑");
    	getItemTypes.put("002", "手机");
    		
    	return getItemTypes;
    }

    页面显示itemtypes数据

    <h3>商品类型</h3>
    <select name="itemTypes">
        <c:forEach items="${itemTypes }" var="itemTypes">
    	<option value="${itemTypes.key }">${itemTypes.value }</option>
        </c:forEach>
    </select>
    • 使用最简单方法使用model,可以不用@ModelAttribute。
    // 获得校验错误信息
    if (bindingResult.hasErrors()) {
    			
        List<ObjectError> objectErrors = bindingResult.getAllErrors();
    			
        // 显示错误信息但页面
        model.addAttribute("objectErrors", objectErrors);
    
        // 显示错误信息但页面
        model.addAttribute("items", itemsCustomer);
    
    
        // 返回指定视图
        return "items/editItems";
    			
    }

     

    展开全文
  • 普通检验是基础用法,非常容易,首先需要用户在SpringBootWeb项目中添加数据校验相关的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-...
  • 数据仓库实践杂谈(六)-数据校验

    千次阅读 2019-12-12 16:32:11
    从数据源卸载出来的数据,进入仓库之前的第一个步骤就需要进行数据校验数据校验的前提是在元数据中建立一套合适的数据标准。而其中,最重要的是确定每个字段的取值范围。基于这个数据标准,同步建立一套程序用于...
  • 数据校验,c#做的例子,各种校验,email,电话,数字,日期
  • 第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;第4章 数据校验和防碰撞算;...
  • 数据校验方法

    千次阅读 2016-11-05 23:37:48
    1.什么是数据校验  通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。 2.最简单的...
  • 常用的数据校验方法

    千次阅读 2018-06-11 16:26:57
    1.什么是数据校验&nbsp; 通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。 2.最...
  • Spring数据校验

    万次阅读 2014-01-24 11:41:15
    Spring数据校验 spring拥有自己独立的数据校验框架,同时支持JSR303标注校验。springDataBinder在进行数据绑定时,可同时调用校验框架完成数据校验工作。在spring mvc中则可直接通过注解驱动的方式进行数据校验  ...
  • JAVA数据校验总结

    千次阅读 2019-02-18 13:37:42
    应用工程中,数据校验是不可或缺的一环,为了避免随处散落和耦合紧密的代码,如何优雅灵活的编写校验代码,提供了一些思路供大家参考。数据校验大体可以分为两种,参数校验(参数非空,长度等) 和 业务校验(符合业务...
  • 数据处理——实现数据校验

    千次阅读 2018-03-10 21:51:06
    spring batch提供了对数据校验的功能,先读取数据,然后校验数据,最后写入数据。 在spring batch中实现检验,先定义一个类去实现Validator接口,然后Spring batch提供了一个ValidatingItemProcessor类,用于去执行...
  • 比如判断一个手机号是否格式正确,消费者的controller 层已经校验了,那么service层调Dubbo服务,Dubbo的提供者还需要在数据校验一次吗? 还一种业务校验应该放在哪里? 比如修改一个商品信息, 那么需要判断传入的...
  • 数据校验工具

    2013-06-25 11:47:18
    方便实用的各种校验方式的数据,把要校验数据复制到文本框,就可以得到校验结果!
  • 【校验码】数据校验

    千次阅读 2016-11-05 22:05:59
    计算机系统在进行数据的传输和存储时,难免会发生错误。...其原理是在数据中加入一些校验位,组成数据校验码,通过检查数据校验码的合法性来判断是否出错或进行纠错。常用的数据校验码有奇偶校验码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552,592
精华内容 221,036
关键字:

数据校验