java数据有效性检验的一些想法

http://www.cnblogs.com/ldcsaa/archive/2012/02/16/2353030.html  Java POJO Bean 对象与 Web Form 表单的自动装配(转)
http://blog.163.com/shygiant@126/blog/static/106671352007101954818234/
如果表单元素的名称和 Form Bean 属性名不一致则使用 keyMap 进行映射

1、先进行表单元素名和Bean属性的映射
2、通过配置文件来校验,在初始化时先读到bean里面来
3、提供一组校验函数(正则匹配和一部分常用的类型整型,正整型,short, char, byte, long, double, 并提供最大,最小限制,默认值, 字符串,只判断最长值及最小值,默认值,date, time,datetime,  HH:mm等)
4、更进一步的封装:校验并转为指定类型赋值
5、校验并转为指定类型,并保存到hashMap<String, Object>
6、校验并转为一上Object  (HashMap转为Object)

 

一、先将httpRequest中的参数全部读出,并保存到HashMap<String, String>中。这个似乎可以直接用ServletRequest.getParameterMap函数。但考虑到我们需要兼容上传参数名与bean不一致的情况,所以自己封装,允许设置name的转换
    static Map getParameterMap(ServletRequest request, HashMap<String, String> nameMap) {
        if (nameMap == null || nameMap.size() == 0) {
            return request.getParameterMap();
        }
        //
    }
二、效验规则信息类
    class CheckRule
    // 检验类型的枚举
    // 支持从一个字符串转为这个
       CheckRule(String strRule);
       SetRule(String strRule);
    // 支持从HashMap<String, String>转为一个HasmMap<String, CheckRule>
   
二、单个值的有效性判断(不抛异常,不返回错误提示)
    ParamChecker, 提供一些错误判断函数
      Boolean check(String param, CheckRule rule);
     
   
三、单个值的有效性判断并转为指定的基本类型并进行赋值,提供值不存在或异常时赋予默认值的函数,错误提示信息等,检验失败会抛出校验失败的异常


四、String转为基本类型

 

 public static Map testReflect(Object obj) {
  Map hashMap = new HashMap();
  try {
   Class c = obj.getClass();
   Method m[] = c.getDeclaredMethods();
   for (int i = 0; i < m.length; i++) {
    if (m[i].getName().indexOf("get")==0) {
      //System.out.println("方法名:"+m[i].getName());
     // System.out.println("值:"+ m[i].invoke(obj, new Object[0]));
     hashMap.put(m[i].getName(), m[i].invoke(obj, new Object[0]));
    }
   }
  } catch (Throwable e) {
   System.err.println(e);
  }
  return hashMap;
 }

 

MVC 验证框架的几个不足

1、一个controller只能有一个valitor,需要注册这个valitor及initBinder

2、转化与验证是分开的

3、验证没有针对某一个单独的参数

4、没有可以进行参数名映射的


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值