当前位置:   article > 正文

参数校验 验签_参数验签

参数验签
//service层
public class ApiServiceImpl{
	
	public Map<String,Object> query(DTO dto){
		Map<String,Object> result = new HashMap<String,Object>();
		result.put("resultCode",StatusCode.SUCCESS);
		result.put("resultMsg","查询成功");

		//参数校验(通常校验非空)
		Map<String,Object> checkParamsResult = checkParams(dto);
		if("F".equals(MapUtils.getString(checkParamsResult,"resultCode"))){
			result.put("resultCode",StatusCode.PARAMS_NULL);
			result.put("resultMsg",checkParamsResult.get("resultMsg"));
			return result;
		}
		//验签
		if(!checkSign(dto)){
			result.put("resultCode",StatusCode.SIGN_ERROR);
			result.put("resultMsg","验签失败");
			return result;
		}
		//业务代码
		//省略
	}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
//xx接口的校验参数
public Map<String,Object> checkParams(DTO dto){
	//添加需要校验的参数
	ValidatorList validatorList = new ValidatorList();
	validatorList.add(MapValidator.notEmpty("appId","appId不能为空"));
	validatorList.add(MapValidator.notEmpty("companyNo","companyNo不能为空"));
	validatorList.add(MapValidator.notEmpty("sign","sign不能为空"));
	validatorList.add(MapValidator.notEmpty("businessNo","businessNo不能为空"));
	//校验dto
	return validatorList.validateToMapResult(transBean2Map(dto))
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
//Validator组合,支持多种validator
public ValidatorList implements Validator{
	private List validators = new ArrayList();

	public Map validateToMapResult(Object data){
		Errors errors = new Errors();
		validate(data,errors);
		Map result = new HashMap();
		result.put("resultCode","N");
		if(e.hasError()){
			Iterator it = e.iterator();
			StringBuffer sb = new StringBuffer();
			while(it.hasNext()){
				sb.append((it.next()).getMessage()).append(".");
			}
			result.put("resultCode","Y");
			result.put("resultMsg",sb.toString());
		}
		return result;
	}
	public void validate(Object data,Errors e){
		Errors  temp = new Errors();
		Iterator it = validators.iterator();
		while(it.hasNext()){
			Validator v = it.next();
			//这里的validate,就是根据validator的类型,即service方法中ValidatorList里添加的validator,这里添加的是MapValidator.notEmpty("companyNo","companyNo不能为空"),说明require会返回一个validator。
			v.validate(data,temp);
		}
		//将temp里的内容装到e中
		e.add(temp);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
public abstract class MapValidator implements Validator{
	//校验非空
	public static MapValidator notEmpty(final String field,final String resultMsg){
		return new MapValueNotEmpty(field,resultMsg);
	}
	//校验日期格式
	public static MapValidator date(final String field,final String resultMsg,final String pattern){
		return new MapValueDateFormat(field,resultMsg,pattern);
	}
	//校验数字
	public static number(final String field,final String resultMsg){
		return new MapValueValidator(field,resultMsg){
			@Override
			protected boolean validate(Object o){
				if(null == o){return true;}
				try{
					//如果能转换成功,则说明字符串是数字格式,程序能正常往下走,如果转换失败,则异常,走catch块。
					new BigDecimal((String)o);
					return true;
				}catch(Exception e){
					return false;
				}
			}

		}

	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
public class MapValueNotEmpty extends MapValueValidator{
	public void validate(Object o){return isEmpty(o)}
}
  • 1
  • 2
  • 3
public abstract class MapValueValidator extends MapValidator{
	
	protected boolean isEmpty(Object o){
		if(null == o){return true;}
		if(!(o instance of String)){return false;}
		return ((String)o).trim().equals("");
	}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/296826
推荐阅读
相关标签
  

闽ICP备14008679号