数据校验

dbcp 详细配置

可紊 提交于 2020-01-22 15:49:31
1.配置参数 username : 连接用户名 password: 连接密码 url : 连接 url( 如果连接 mysql ,格式为 jdbc:mysql://ip:port/dbname) driverClassName : jdbc driver 名字 ( 如果是 mysql ,则为com.mysql.jdbc.Driver) connectionProperties : 当建立一个数据库连接的时候,这些属性参数将传给 jdbc driver ,参数的形式必须是 [propertyName=property;]* 。 注: username 和 password 必须明确的传给 driver, 不必包含在这个属性中。 i nitialSize : 默认值是 0, 连接池创建连接的初始连接数目 maxActive : 默认值是 8, 连接池中同时可以分派的最大活跃连接数 maxIdle : 默认是 8 ,连接池中最大空闲连接数 minIdle : 默认是 0, 连接数中最小空闲连接数 maxWait : 默认值是无限大,当连接池中连接已经用完了,等待建立一个新连接的最大毫秒数 ( 在抛异常之前 ) validationQuery : 一条 sql 语句,用来验证数据库连接是否正常。这条语句必须是一个查询模式,并至少返回一条数据。一般用“ select 1 ”

spring boot验证框架

不羁岁月 提交于 2020-01-21 01:27:02
在平时开发中,前端一般都会做参数的正确化校验,但是单单前端做校验是不够保险的,所以后端也需要加上相关的参数校验,防止有人绕过前端直接调用接口。 而spring boot就提供有这样的验证框架,默认实现用的是Hibernate validator。我们只需要将@Validated注解标注在方法参数上,spring boot就可以对参数进行校验,同时把校验结果放在BindingResult对象里。 spring boot验证框架提供的一系列常用注解 @Null:验证对象是否为空 @NotNull:验证对象是否不为空 @NotEmpty:验证对象不为空,或者集合不为空 @NotBlank:验证字符串不为空,或者不是空字符串("“或者” ") @Size(min=,max=):验证对象的长度,字符串或集合都行 @Length:字符串的长度 @Max:验证数字是否小于等于指定的值 @Min:验证数字是否大于等于指定的值 @Digits:验证数字是否符合指定格式 @Range:验证数字是否在指定范围内 @Email:验证邮件格式是否正确,值为null的话,不做校验 @Pattern:验证String对象是否符合正则表达式 怎么使用spring boot验证框架 新建一个普通的spring boot+swagger2项目,有一个Employee员工对象来做测试,每个字段都加了一个常用校验注解:

Spring自定义校验

允我心安 提交于 2020-01-20 16:09:40
参考资料 JSR303、349 -Bean Validation 数据校验规范使用说明和验证流程源码分析 Spring 全局异常处理 注意事项 使用Java JSR303、349 Bean Validation 数据校验规范来做数据校验 参考资料: JSR303、349 -Bean Validation 数据校验规范使用说明和验证流程源码分析 利用好分组 减少校验的逻辑代码 分组的class 需要的是接口,我们可以专门定义一个包来存放 配置全局异常统一处理 ,这样可以对业务异常,以及校验异常等进行统一的处理,解放代码逻辑 带分组的Demo MobileValidator 校验类如下: import javax . validation . ConstraintValidator ; import javax . validation . ConstraintValidatorContext ; public class MobileValidator implements ConstraintValidator < Mobile , String > { @Override public boolean isValid ( String s , ConstraintValidatorContext constraintValidatorContext ) { System .

Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

筅森魡賤 提交于 2020-01-19 04:33:22
icense,即版权许可证,一般用于收费软件给付费用户提供的访问许可证明。根据应用部署位置的不同,一般可以分为以下两种情况讨论: 应用部署在开发者自己的云服务器上。这种情况下用户通过账号登录的形式远程访问,因此只需要在账号登录的时候校验目标账号的有效期、访问权限等信息即可。 应用部署在客户的内网环境。因为这种情况开发者无法控制客户的网络环境,也不能保证应用所在服务器可以访问外网,因此通常的做法是使用服务器许可文件,在应用启动的时候加载证书,然后在登录或者其他关键操作的地方校验证书的有效性。 注:限于文章篇幅,这里只讨论代码层面的许可限制,暂不考虑逆向破解等问题。此外,在下面我只讲解关键代码实现,完整代码可以参考: gitee.com/zifangsky/L… 二 使用 TrueLicense 生成License (1)使用 Spring Boot 构建测试项目ServerDemo,用于为客户生成License许可文件: 注:这个完整的Demo项目可以参考: gitee.com/zifangsky/L… i)在pom.xml中添加关键依赖: de.schlichtherle.truelicense truelicense-core 1.33 provided 复制代码 ii)校验自定义的License参数: TrueLicense的 de.schlichtherle.license

Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

大兔子大兔子 提交于 2020-01-19 04:30:06
一 简介 License,即版权许可证,一般用于收费软件给付费用户提供的访问许可证明。根据应用部署位置的不同,一般可以分为以下两种情况讨论: 应用部署在开发者自己的云服务器上。这种情况下用户通过账号登录的形式远程访问,因此只需要在账号登录的时候校验目标账号的有效期、访问权限等信息即可。 应用部署在客户的内网环境。因为这种情况开发者无法控制客户的网络环境,也不能保证应用所在服务器可以访问外网,因此通常的做法是使用服务器许可文件,在应用启动的时候加载证书,然后在登录或者其他关键操作的地方校验证书的有效性。 注:限于文章篇幅,这里只讨论代码层面的许可限制,暂不考虑逆向破解等问题。此外,在下面我只讲解关键代码实现,完整代码可以参考: gitee.com/zifangsky/L… 二 使用 TrueLicense 生成License (1)使用Spring Boot构建测试项目ServerDemo,用于为客户生成License许可文件: 注:这个完整的Demo项目可以参考: gitee.com/zifangsky/L… i)在pom.xml中添加关键依赖: <dependency> <groupId>de.schlichtherle.truelicense</groupId> <artifactId>truelicense-core</artifactId> <version>1.33<

基于spreadJS的excel导入

谁说我不能喝 提交于 2020-01-19 01:42:57
excel导入校验一直是企业级开发的一个痛点,一堆数据导入进去了,通过后台校验之后,客户无法弄懂导入失败之后的校验结果,特别是导入大量数据,并且出现大量失败后的时候,客户往往要重复修改excel很多次,才能实现excel成功导入,到底有没有一种方式是导入进去之后就直接校验,并且校验失败后能够将失败的结果更加直观的展示到网页上,直接修改了之后就能导入成功,于是笔者找到了spreadjs。 上图所示,可以将excel导入到网页上,点击保存就可以对数据进行验证并保存,校验成功就保存成功,校验失败了之后就会将失败原因展现在网页上,可以根据错误提示进行修改,可以更加方便的进行导入数据。 来源: CSDN 作者: 一直在远方 链接: https://blog.csdn.net/u010497647/article/details/103946662

SAP系统采购发票校验要点

我的梦境 提交于 2020-01-17 23:56:21
后勤采购发票校验是后勤管理的一部分,处于后勤供应链的最后,后勤发票校验与财务核算(FI)模块和成本控制(CO)模块紧密集成,将付款或发票分析的相关信息传递给FICO模块。通常在完成采购的收货之后,企业进行采购发票校验,下面将首先对SAP系统中标准的发票校验进行分享。 SAP 系统标准的发票校验有四种业务类型; 发票: 正常的蓝字发票; 贷方凭证: 红字冲销发票; 后续借记 :增加供应商应付款,对发票校验的补充; 后续贷记: 减少供应商应付款,对发票校验的补充 在发票校验时我们通常会基于采购收货情况进行发票校验;当然也存在部分供应商是基于采购订单进行发票校验,即下达采购订单时供应商就送来采购发票,形成企业的应付账款。在SAP系统首先通过供应商进行控制,也可通过采购订单进行控制。 在确定发票校验的模式(基于收货或是订单)的情况下,可以进一步细分确定校验的数据,在实际项目实施中通常使用的有以下几种: 供应商 :按照供应商进行汇总数据; 交货单 :即根据供应商的送货单号,在录入采购收货单时在“交货单”上录入的信息; 采购订单: 按照采购订单编号汇总数据; 来源: https://www.cnblogs.com/hipphappy/p/10802774.html

Springboot + redis + 注解 + 拦截器来实现接口幂等性校验

半世苍凉 提交于 2020-01-16 02:22:24
一、概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次 等等 二、常见解决方案 唯一索引 – 防止新增脏数据 token机制 – 防止页面重复提交 悲观锁 – 获取数据的时候加锁(锁表或锁行) 乐观锁 – 基于版本号version实现, 在更新数据那一刻校验数据 分布式锁 – redis(jedis、redisson)或zookeeper实现 状态机 – 状态变更, 更新数据时判断状态 三、本文实现 本文采用第2种方式实现, 即通过redis + token机制实现接口幂等性校验 四、实现思路 为需要保证幂等性的每一次请求创建一个唯一标识token, 先获取token, 并将此token存入redis, 请求接口时, 将此token放到header或者作为请求参数请求接口, 后端接口判断redis中是否存在此token: 如果存在, 正常处理业务逻辑, 并从redis中删除此token, 那么, 如果是重复请求, 由于token已被删除, 则不能通过校验, 返回请勿重复操作提示 如果不存在, 说明参数不合法或者是重复请求, 返回提示即可 五

Django Form组件

不羁的心 提交于 2020-01-15 21:56:26
目录 Django Form组件 Form介绍 普通手写登录功能 使用Form组件实现该功能 Form组件常用参数 钩子函数 其他字段渲染(需要拷贝即可) Django Form所有内置字段 Django Form组件 Form介绍 在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确 form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通手写登录功能 views.py from django.shortcuts import render def register(request): error_dict = {'username': '', 'password': ''} if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') if '' in username: error_dict['username'] = '你个老色批' if not password: error_dict['password'] = '密码不能为空,你个DSB' return render(request, 'register.html', locals(

Django CSRF与auth模块

有些话、适合烂在心里 提交于 2020-01-15 21:52:51
目录 Django CSRF与auth模块 CSRF CSRF相关装饰器 auth模块 扩展默认的auth_user表 Django CSRF与auth模块 CSRF FORM表单中怎么通过CSRF校验 只需要在form表单中写一个 {% csrf_token %} ajax通过asrf校验有三种方法 $.ajax({ url:'', type:'post', {#data:{'username':'yang'},#} //第一种方式 自己手动获取 {#data:{'username':'yang','csrfmiddlewaretoken':$('input[name="csrfmiddlewaretoken"]').val()},#} //第二种方式 利用模板语法 {#data:{'username': 'yang', 'csrfmiddlewaretoken':'{{ csrf_token }}'},#} //第三种方式 通用方式 需要引入外部js文件 data:{'username':'yang'}, success:function (data) { alert(data) } }) 第三种需要引入外部js文件,文件中需要书写以下代码 写一个getCookie方法 function getCookie(name) { var cookieValue = null; if