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相关推荐

  1. 基于Java Bean Validation对Request参数进行校验的设计思路

    数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致重复代码的发生. 为了避免重复, 开发人员经常会把这些校验逻辑直 ...

  2. spring多参java注解_spring参数注解校验

    在写一些controller协议的时候,有些时候从前端传过来的参数较多,好的办法是定义一个实体类来封装请求参数,但是用实体类封装参数后,无法对参数值进行校验,可以使用spring的@Validated ...

  3. Java中使用注解校验参数

    一.参数校验的注解 Java中参数校验的注解来自三方面,分别是 javax.validation:validation-api,对应包javax.validation.constraints org. ...

  4. java 对json 格式做参数格式校验

    需求背景: 在接口中,需要对返回的数据进行格式校验,对于不符合要求的返回数据就表示接口数据有变更,对于该接口及时了解到接口参数的变化.所以需要对接口返回的json 字符串进行格式校验. ps :接口返 ...

  5. java分组校验_SpringBoot @Validated注解实现参数分组校验的方法实例

    前言 在前后端分离开发的时候我们需要用到参数校验,前端需要进行参数校验,后端接口同样的也需要,以防传入不合法的数据. 1.首先还是先导包,导入pom文件. org.springframework.bo ...

  6. Java 启动参数大全

    2019独角兽企业重金招聘Python工程师标准>>> java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 其二是非标准参数 ...

  7. Java启动参数(-, -X, -XX参数)详解

    目录 Java启动参数分类 一.JVM标准参数(-) 获取方法: java -help 二.JVM非标准参数(-X) 获取方法: java -X 三.JVM非Stable参数(-XX) 获取方法:   ...

  8. java jsr 303_java对象校验(validation)-JSR303规范

    JSR303 规范简介 web开发有一句名言:永远不要相信用户输入,在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情.应用程序必须通过某种手段来确保输入进来的数据从语义 ...

  9. java表单后端校验

    此文摘抄至http://www.cnblogs.com/bolg666/p/5207881.html java后端校验 网站的后端校验是不可或缺的一部分,我们在后台验证表单时,可能需要把前端传过来的字 ...

最新文章

  1. 短 URL 服务的设计以及实现
  2. adc量化单位_单片机外围模块漫谈之二,如何提高ADC转换精度
  3. leetcode算法题--Flood Fill
  4. IOS静态库生成及测试
  5. 【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate
  6. 关于范围for语句的使用
  7. MySQL sql_model问题研究
  8. 基于顺序存储结构的图书信息表的最爱图书的查找(C++)
  9. Linux 修改环境变量
  10. 2021-10-18
  11. Freepiano如何使用sf2音源,sfark如何转换至sf2?
  12. 基于51单片机的避障小车
  13. 智慧交通信息服务平台产品解决方案
  14. 解决:启动word等office相关软件时,比较慢,会卡在一步Foxit PDF Creator COM Add-in很久
  15. 接口调用频繁限制,接口限制流量
  16. 如何显示密件抄送人员地址_什么是密件抄送,以及为什么不使用它会成为一个可怕的人...
  17. leaflet绘制具有虚线框的多边形(125)
  18. 夜深人静写算法(三十七)- 威尔逊定理
  19. 腾讯云物联网-网关设备体验
  20. 蓝牙BLE5.0扩展广播介绍

热门文章

  1. fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
  2. C语言|博客作业10
  3. 陈艾盐:春燕百集访谈节目第二十五集
  4. agc024F Simple Subsequence Problem
  5. PHP网站从服务器下载文件到本地
  6. FreeRTOS -- 简介
  7. 华为要开发人工智能手机 魅族新机发布会却被调侃不用开了!
  8. tp6 SQL调试常用操作
  9. [动态规划]基因序列相似性问题
  10. 软件设计(十四)-UML建模(上)