java进行参数快捷校验,ehi-verification
ehi-verification
项目介绍
一个好用的快速的参数校验框架
支持直接调用校验并提供Spring-webmvc拦截器对请求参数进行校验
软件架构
没啥架构,不强制依赖第三方Jar包
更新记录
1.0.3 解决返回JSON多出逗号的问题
1.0.4
1.直接以@RequestBody 形式获取参数的校验
2.新增BodyReaderFilter可协助解决流只能读取一次的问题
安装教程
PS:最新版已同步至Maven中央仓库
com.yuxuan66
ehi-verification
1.0.6
如非Maven项目直接打包后找到Jar放入项目中即可
使用说明
首先我们先来认识几个常用的类和注解
Verification,Param,Len
EhiVerification,VerificationResult,Result,ConstFormat
Param:标记一个参数要进行校验
参数:
value(String)=字段名称
require(boolean)=是否需要(默认为需要)
asFor(String)=必须跟asFor的字段内容一致
nullFor(String)=nullFor的字段内容和当前内容不能同时为空
nullMsg(String)=字段为空的错误提示,默认使用全局提示
errorMsg(String)=字段校验不通过的错误提示,默认使用全局提示
pattern(String)=用来校验的正则
len(@Len)=长度校验
Verification:标记一个类,Bean只有此注解才会生效
参数:
params(@Param)=字段列表
@Verification(params = {
@Param(value = "name", require = false, len = @Len(min = 10, max = 20),errorMsg = "用户名必须为10~20位字符"),
@Param(value = "password"),
@Param(value = "email", pattern = ConstFormat.EMAIL)
})
public class User extends HashMap {
private String name;
private String password;
private String email;
@Param(value = "age")
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
demo
public static void main(String ...args){
User user = new User();
user.setName("1111111111");
user.setEmail("eqeq@qq.com");
user.setPassword("dsadsa");
VerificationResult verificationResult = new EhiVerification().verification(user);
System.out.println(verificationResult.isVerification());
System.out.println(verificationResult.getErrorMsg());
}
//校验一个实体 实体可以集成Map会自动区分
VerificationResult verificationResult = new EhiVerification().verification(user);
返回一个校验结果
verificationResult.isVerification();//返回是否有校验不通过字段
verificationResult.getErrorMsg();//返回校验不通过的提示语,如上行代码返回true则此代码返回空字符串
下面我们来学习一下高级的使用方式,这里我们使用springboot进行集成
拦截器配置
package com.km66.knowledge.support.config.web;
import com.km66.knowledge.support.interceptor.AuthInterceptor;
import com.km66.knowledge.support.resolver.DictArgumentResolver;
import com.yuxuan66.ehi.verification.core.EhiVerification;
import com.yuxuan66.ehi.verification.interceptor.ParamInterceptor;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//创建核心校验器
EhiVerification ehiVerification = new EhiVerification();
//添加参数拦截器
registry.addInterceptor(new ParamInterceptor(ehiVerification));
}
}
Controller配置
@RequestMapping(path = "updateAccessTokenByRefreshToken", method = RequestMethod.POST)
@ResponseBody
@Verification(params = {
@Param(value = "username", len = @Len(min = 10, max = 20),errorMsg = "用户名格式不正确",nullMsg = "用户名必须输入"),
@Param(value = "email" ,pattern = ConstFormat.EMAIL),
@Param(value = "password")
})
public RespEntity updateAccessTokenByRefreshToken(@RequestParam Map params) {
try {
return usersService.updateAccessTokenByRefreshToken(params);
} catch (Exception e) {
logger.error("服务器异常", e);
return RespEntity.fail();
}
}
交流群:795272647
参与贡献
Fork 本项目
新建 Feat_xxx 分支
提交代码
新建 Pull Request
java进行参数快捷校验,ehi-verification相关推荐
- 基于Java Bean Validation对Request参数进行校验的设计思路
数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致重复代码的发生. 为了避免重复, 开发人员经常会把这些校验逻辑直 ...
- spring多参java注解_spring参数注解校验
在写一些controller协议的时候,有些时候从前端传过来的参数较多,好的办法是定义一个实体类来封装请求参数,但是用实体类封装参数后,无法对参数值进行校验,可以使用spring的@Validated ...
- Java中使用注解校验参数
一.参数校验的注解 Java中参数校验的注解来自三方面,分别是 javax.validation:validation-api,对应包javax.validation.constraints org. ...
- java 对json 格式做参数格式校验
需求背景: 在接口中,需要对返回的数据进行格式校验,对于不符合要求的返回数据就表示接口数据有变更,对于该接口及时了解到接口参数的变化.所以需要对接口返回的json 字符串进行格式校验. ps :接口返 ...
- java分组校验_SpringBoot @Validated注解实现参数分组校验的方法实例
前言 在前后端分离开发的时候我们需要用到参数校验,前端需要进行参数校验,后端接口同样的也需要,以防传入不合法的数据. 1.首先还是先导包,导入pom文件. org.springframework.bo ...
- Java 启动参数大全
2019独角兽企业重金招聘Python工程师标准>>> java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 其二是非标准参数 ...
- Java启动参数(-, -X, -XX参数)详解
目录 Java启动参数分类 一.JVM标准参数(-) 获取方法: java -help 二.JVM非标准参数(-X) 获取方法: java -X 三.JVM非Stable参数(-XX) 获取方法: ...
- java jsr 303_java对象校验(validation)-JSR303规范
JSR303 规范简介 web开发有一句名言:永远不要相信用户输入,在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情.应用程序必须通过某种手段来确保输入进来的数据从语义 ...
- java表单后端校验
此文摘抄至http://www.cnblogs.com/bolg666/p/5207881.html java后端校验 网站的后端校验是不可或缺的一部分,我们在后台验证表单时,可能需要把前端传过来的字 ...
最新文章
- 短 URL 服务的设计以及实现
- adc量化单位_单片机外围模块漫谈之二,如何提高ADC转换精度
- leetcode算法题--Flood Fill
- IOS静态库生成及测试
- 【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate
- 关于范围for语句的使用
- MySQL sql_model问题研究
- 基于顺序存储结构的图书信息表的最爱图书的查找(C++)
- Linux 修改环境变量
- 2021-10-18
- Freepiano如何使用sf2音源,sfark如何转换至sf2?
- 基于51单片机的避障小车
- 智慧交通信息服务平台产品解决方案
- 解决:启动word等office相关软件时,比较慢,会卡在一步Foxit PDF Creator COM Add-in很久
- 接口调用频繁限制,接口限制流量
- 如何显示密件抄送人员地址_什么是密件抄送,以及为什么不使用它会成为一个可怕的人...
- leaflet绘制具有虚线框的多边形(125)
- 夜深人静写算法(三十七)- 威尔逊定理
- 腾讯云物联网-网关设备体验
- 蓝牙BLE5.0扩展广播介绍
热门文章
- fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
- C语言|博客作业10
- 陈艾盐:春燕百集访谈节目第二十五集
- agc024F Simple Subsequence Problem
- PHP网站从服务器下载文件到本地
- FreeRTOS -- 简介
- 华为要开发人工智能手机 魅族新机发布会却被调侃不用开了!
- tp6 SQL调试常用操作
- [动态规划]基因序列相似性问题
- 软件设计(十四)-UML建模(上)