数据校验

SpringBoot 2 快速整合 | Hibernate Validator 数据校验

随声附和 提交于 2019-11-29 20:32:25
概述 在开发RESTFull API 和普通的表单提交都需要对用户提交的数据进行校验,例如:用户姓名不能为空,年龄必须大于0 等等。这里我们主要说的是后台的校验,在 SpringBoot 中我们可以通过使用 Hibernate Validator 来进行后台的数据校验的。 闲话少说!接下来就开始介绍如何使用 Hibernate Validator 来进行数据的校验。 Hibernate Validator 实战操作 我们在添加用户的功能基础上来进行改造。 用户Model类代码如下: public class User { private String name; private Integer age; //省略get and set 方法 } 用户Controller代码如下: java @RequestMapping(value = "",method = RequestMethod.POST) public void add(User user){ log.info("添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge()); } 第一步我们先在 User 类上添加校验的注解,具体代码如下: public class User { @NotEmpty(message="请输入您的名称!") private String

web网页测试用例(非常实用)

╄→尐↘猪︶ㄣ 提交于 2019-11-29 19:47:57
Web测试中,各类web控件测试点总结 一 、界面检查   进入一个页面测试,首先是检查title,页面排版,字段等,而不是马上进入文本框校验   1、页面名称title是否正确   2、当前位置是否可见 您的位置:xxx>xxxx   3、文字格式统一性   4、排版是否整齐   5、列表项显示字段是否齐全,列表项字段名称是否跟表单统一   6、同一页面,是否出现 字段名称相同、值取不同的问题。   7、数据加载情况:除了文本框的值,还要注意:   复选框,是否保存打√,或者保存不打√   下拉框,是否保存选择的值   多文本框,值是否都被保存,空格,换行是否保存 二、单文本框(type=text)   边界:字段长度   判空:是否可以为空   唯一性:是否唯一 (小归结:边界、判空、唯一性、特殊字符、正确性)   考虑语言,操作环境   特殊符号测试输入:   ' or 1<>'1   ' or '1'='1  ' or '1'<>'2  "|?><   where a='xxx'   下划线是否允许  输入全部空格 输入 单引号   ><script>alert(“123”);</script>>   特殊字段输入限定:   框内容是否合法(tel,ip,url,email)序号等,直接限制输入数字,其他过滤掉   输入金额文本框,整数首位为0,过滤掉,小数点后面

CRC32校验算法-C实现

a 夏天 提交于 2019-11-29 16:02:47
CRC即循环冗余校验码 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。 以下是CRC32的C语言实现,经过测试,能够正确运行: https://blog.csdn.net/weed_hz/article/details/25132343 来源: https://blog.csdn.net/qq_23940143/article/details/100850069

Struts2非字段校验器配置风格

白昼怎懂夜的黑 提交于 2019-11-29 13:21:10
一 视图 1 registForm.jsp <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>请输入您的注册信息</title> <s:head/> </head> <body> <h2>请输入您的注册信息</h2> <s:fielderror/> <s:form action="regist" validate="true"> <s:textfield name="name" label="用户名"/> <s:textfield name="pass" label="密码"/> <s:textfield name="age" label="年龄"/> <s:textfield name="birth" label="生日"/> <s

modbus通讯协议详解

荒凉一梦 提交于 2019-11-29 11:35:53
一、Modbus 协议简介     Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。其通信遵循以下的过程:   ● 主设备向从设备发送请求   ● 从设备分析并处理主设备的请求,然后向主设备发送结果   ● 如果出现任何差错,从设备将返回一个异常功能码   此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。   当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构

关于0348短信安全报文头SPI

帅比萌擦擦* 提交于 2019-11-29 11:19:01
   再看GP的0348短信规范文档的时候,一直有个疑问。就是0348安全报文中有个字段SPI,标识的是下行短信安全校验等级。   也就是是否需要进行CC校验,CNTR校验,数据加解密等。也就是说,如果SPI可以由发送方进行配置,如果不需要进行相关校验的时候,完全可以将spi置为00,那么安全域也就不会进行短信校验,这样038所有的CC安全cntr防重放攻击,将无效。之前很奇怪这个设定,就像把锁和钥匙都交给同一个人,那么这个锁将毫无用处。   后面再看102226规范文档的时候,返现gp其实已经考虑到了这点。再CA安装参数中,有个MSL即设定应用校验的最小安全等级。如果设定应用安装安全等级不小于02的话,那么就一定要进行cc校验,否则会返回错误。这样就完美解决上述问题。 来源: https://www.cnblogs.com/vimzhu/p/11516204.html

springMVC(八)——数据校验(后台校验 hibernate validate).

一曲冷凌霜 提交于 2019-11-29 07:05:21
数据校验(后台校验 hibernate validate) 1、首先要导入jar包 2、在相应的实体类中加入注解 package com.zhiyou100.zjc.bean; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; public class User { @NotEmpty(message = "用户名不为空") private String username; @Length(min = 6,max = 18,message = "密码长度在6~18之间") private String password; @Pattern(regexp = "/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$/",message = "手机号格式不正确") private String phone; public String getUsername() { return username; } public void setUsername(String

注册页面

不问归期 提交于 2019-11-29 06:28:53
HTML代码 1 <% @ page language = " java " contentType = " text/html; charset=utf-8 " 2 pageEncoding = " utf-8 " %> 3 <% @ include file = " base.jsp " %> 4 <! DOCTYPE html > 5 < html > 6 < head > 7 < meta charset ="UTF-8" > 10 < title ></ title > 149 </ head > 150 < body > 151 <!-- 头部 --> 152 < div id ="nav" class ="nav" ></ div > 153 < div class ="center" > 154 < div class ="Title" > 155 < ul > 156 < li >< img src ="${basePath}/static/img/imake.png" ></ li > 157 < li ></ li > 158 </ ul > 159 </ div > 160 < div class ="bg_box" > 161 < div class ="top_bg" > 162 < h3 > 注册会员 </ h3 > 163 < ul > 164 <

挖洞技巧:任意账号密码重置

你。 提交于 2019-11-29 05:52:30
1、通过忘记密码的方式,拦截数据包,修改接受验证码的手机号或者邮箱帐号。   这里需要的注意的是看系统是否做校验数据,有的只校验了用户信息但是没有校验手机号码,就算收到验证码也是没有不能够正常重置该用户名的。 2、跳过验证   有不少网站的重置密码方式像下面这种:     www.test.com/resetpassword.php?action=step1   像这种尝试去绕过,修改step1。 3、验证码多次有效的   登录的时候验证码不主动刷新多次登录有效的,可以直接尝试爆破。 4、替换cookie   用户重置的时候将请求包中的cookie换成用户B的。 5、修改ID   按照重置正常步骤走,但是要将ID改成别人的,这里主要是因为没有进行身份校验。当然也可以遍历所有id将密码所有人的密码改成一个。 6、验证码没有绑定用户   首先重置自己的密码,自己的手机会收到验证码,修改密码的时候将账号换成B用户的。 7、没有对用户进行校验   其实跟第6点很相似,这里只是最后一步修改密码的时候改为其他用户。 来源: https://www.cnblogs.com/ritte/p/11457250.html

drf框架2-序列化与反序列化

流过昼夜 提交于 2019-11-29 05:07:34
二次封装Response from rest_framework.response import Response """ # 封装前 Response({ 'status': 0, 'msg': 'ok', 'results': [], 'token': '' }, headers={}, status=200, content_type="") # 封装后 APIResponse(0, 'ok', results, status, headers, content_type) """ class APIResponse(Response): def __init__(self, data_status, data_msg, results=None, status=None, headers=None, content_type=None, **kwargs): data = { 'status': data_status, 'msg': data_msg } if results: data['results'] = results data.update(kwargs) super().__init__(data=data, status=status, headers=headers, content_type=content_type) 序列化组件 """ 序列化:对象