知识大全 struts2自定义验证器(身份证验证)

Posted 数字

篇首语:骏马是跑出来的,强兵是打出来的。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 struts2自定义验证器(身份证验证)相关的知识,希望对你有一定的参考价值。

  struts 的验证器是用的xwork里面的验证 自定义验证器就是根据源码继承已有的字段验证器而来 具体步骤如下:

   展开xwork jar opensymphony xwork

   validator validators目录下有个default xml 将它复制到项目根目录下改名叫validators xml

   验证框架首先在根目录下找validators xml文件 没找到validators xml文件 验证框架将调用默认的验证设置 即default xml里面的配置信息

   新建一个类(身份证验证为例:类名CardIdFieldValidator)继承FieldValidatorSupport 实现validate方法

  package mons validators;

  import opensymphony xwork validator ValidationException;

  import opensymphony xwork validator validators FieldValidatorSupport;

  public class CardIdFieldValidator extends FieldValidatorSupport

  public void validate(Object object) throws ValidationException

  

  // 获得字段的名字

  String fieldName = getFieldName();

  // 获得输入界面输入的值

  String value = getFieldValue(fieldName object) toString();

  if (value == null || value length() <= )

  return;

  if(value length()!= && value length()!= )//身份证必须是 或 位!

  addFieldError(fieldName object);

  if(value length()== )

  validate CardId(value object);

  if(value length()== )

  validate CardId(value object);

  

  /** *//**

  * <p> 位身份证验证</p>

  *

  * 根据〖中华人民共和国国家标准 GB 〗中有关公民身份号码的规定 公民身份号码是特征组合码 由十七位数字本体码和一位数字校验码组成

  * 排列顺序从左至右依次为 六位数字地址码 八位数字出生日期码 三位数字顺序码和一位数字校验码

  *

  * 第十八位数字(校验码)的计算方法为

  * 将前面的身份证号码 位数分别乘以不同的系数 从第一位到第十七位的系数分别为

  * 将这 位数字和系数相乘的结果相加

  * 用加出来和除以 看余数是多少?

  * 余数只可能有 这 个数字 其分别对应的最后一位身份证的号码为 X

  * 通过上面得知如果余数是 就会在身份证的第 位数字上出现罗马数字的Ⅹ 如果余数是 身份证的最后一位号码就是

  *

  * @date Oct

  * @param value

  * @param object

  */

  public void validate CardId(String value Object object)

  

  // 获得字段的名字

  String fieldName = getFieldName();

  String tempStr = value substring( );

  String sourceCheckCode = value substring( );

  String checkCode = ;

  int[] a = new int[ ];

  int i = ;

  try

  

  while(i< )

  a[i] = Integer parseInt(tempStr substring(i i+ ));

  i++;

  

   catch (NumberFormatException e)

  

  addFieldError(fieldName object);

  

  int mod = (a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]*

  +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* +a[ ]* )% ;

  switch (mod)

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  case

  :   checkCode = x ;

  break;

  case :

  checkCode = ;

  break;

  case :

  checkCode = ;

  break;

  

  if(!sourceCheckCode equalsIgnoreCase(checkCode))

  addFieldError(fieldName object);

  

  /** *//**

  * <p> 位身份证验证</p>

  *

  * 只做了数字验证

  * @date Oct

  * @param value

  * @param object

  */

  public void validate CardId(String value Object object)

  

  String fieldName = getFieldName();

  int i = ;

  try

  

  while(i< )

  if(!Character isDigit(value charAt(i)))

  addFieldError(fieldName object);

  i++;

  

   catch (NumberFormatException e)

  

  addFieldError(fieldName object);

  

  

  

   在validators xml中添加一个validator节点 和其他validator一样指定名称和类名 这里指定的name就是你将来要是使用的类型名字

  <validator name= cardid class= mons validators CardIdFieldValidator />到此自定义验证器就完成 剩下的就和使用自带的验证器一样了

   新建action 继承ActionSupport或Action都行 写上相应需要验证的属性字段

   新建验证文件xxxx validation xml 这个xxxx就是你前面action的类名字 xxx xxx validation xml第二个xxx表示是jsp中的form提交action

  <field name= student sfzh >

  <field validator type= requiredstring short circuit= true >

  <message>身份证号不能为空 </message>

  </field validator>

  <field validator type= cardid >

  <message>身份证号格式不正确 </message>

  </field validator>

  </field> 配置struts xml 以及action

cha138/Article/program/Java/ky/201311/28891

相关参考

知识大全 FCKeditor自定义非空验证

FCKeditor自定义非空验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有时在使用FCK

知识大全 ASP.NET MVC如何实现自定义验证

ASP.NETMVC如何实现自定义验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 浅谈Struts2验证框架及用户注册

浅谈Struts2验证框架及用户注册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 请问朋友微信别人发的红包如果我实名验证选择了身份证号验证这样成功之后别人可以看见我的身份证信息吗

请问朋友微信别人发的红包如果我实名验证选择了身份证号验证这样成功之后别人可以看见我的身份证信息吗?不是,别人看不到,只是实名制认证,就像你办卡也得用身份证,微信朋友发的红包需要实名验证请问实名验证之后

知识大全 基于窗体的身份验证

ASP.Net:基于窗体的身份验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  基于窗体的验证

知识大全 使用Validation框架验证数据

Struts2教程5:使用Validation框架验证数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 网上订火车票时每张票的预留验证号码是各自的身份证号吗?

网上订火车票时每张票的预留验证号码是各自的身份证号吗?验证号码是自己的手机号,当然你可以帮别人订,同样可以用你的手机号网上火车票验证身份证号码怎么验证是身份信息显示正在审核中吗?拿身份证到火车站窗口进

知识大全 自验证文本框和Observer模式

自验证文本框和Observer模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近写程序当中

知识大全 支持ESMTP身份验证的邮件发送

支持ESMTP身份验证的邮件发送  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用NETFra

知识大全 就来说说Asp.net 身份验证、授权

就来说说Asp.net身份验证、授权  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [本周]如约