jsp身份证验证代码

来源:互联网 发布:比较好玩的软件 编辑:程序博客网 时间:2024/04/28 17:08
<%@pageimport="java.lang.String"%><%@page contentType="text/html"pageEncoding="gbk"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"><html>   <head>       <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">      <title>身份证合法性验证</title>       <styletype="text/css">           p{display:block;width:440px;}          fieldset{width: 280px;}           pspan{width:50px;background: #ff0;                padding:2px;margin-right: 5px;              color:blue;}       </style>   </head>   <body>       <fieldset>          <legend>              身份证合法性验证          </legend>          <form action="">         <%--          verId方法中应按照如下算法进行对身份证进行验证:          必须是18位,前17位必须是数字           将身份证的前17位分别乘以7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,          然后将得到的数字相加后除以11,将得到的余数按照以下转换表进行比对,           如果左侧的余数对应的右侧数字和身份证号码的最后一位相同,则该身份证号码为真:          0-->1 1-->0 2-->X3-->9 4-->8 5-->76-->6 7-->5 8-->49-->3 10-->2       --%>         <%!//声明方法             String[] ai=newString[17];//用户的身份证号码数组;             int[] wi=newint[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//17位数对应的加权因子,自左至右;             int[] yi=newint[]{0,1,2,3,4,5,6,7,8,9,10};//余数;             String[]vi={"1","0","X","9","8","7","6","5","4","3","2"};//余数对应的校验码;         public static booleanIsNum(String str){//判断是否是数字              for(inti=0;i<str.length();i++){               if(str.charAt(i)<'0' ||str.charAt(i)>'9')                     returnfalse;                      }                    returntrue;               }// endIsNum         int sum=0;int y;Stringv;        public boolean verId(StringidNo){//判断检验结果             idNo=idNo.toLowerCase();            if(idNo.length()==18){              Stringn17=idNo.substring(0,17);//把obj第0位开始,长度为17的字符串赋给n17              StringendNum=idNo.substring(17,18);               if(IsNum(idNo) || ( IsNum(idNo.substring(0,17))&& endNum.equals("x") )){                 //如果检查的是18为整数,或者前17位是整数未位是x;                    Stringay=getVer(n17);                    if(ay.equals(endNum)){//如果得到的检验码与未位相符合刚返回true;否则都返回false;                         returntrue;                         }                    else{                        return false;                      }                 }//end of line65              else{                     return false;                  }            }//end of line62             else{                return false;                 }          }          publicString getVer(String num17){//检验方法              sum=0;             if(!IsNum(num17) ||num17.length()!=17){                 return "不是17个数字";                   }             else{                  for(inti=0;i<num17.length();i++){                     sum+=Integer.parseInt(String.valueOf(num17.charAt(i)))*wi[i];                     }                   y=sum;v=vi[y];                 return String.valueOf(v);                    }           }       %>          <%           String idno="";           if(request.getParameter("idnumber")!=null)            idno=request.getParameter("idnumber");          %>             <p>请输入要验证的身份证号码:</p><inputname="idnumber" value=<%=idno%>type="text"/>               <%               if(request.getParameter("five")==null){                doublenumber=Math.random()*10;//这是产生一个比10小的数                if(number<9){                   number=number+1;//这是让这个书比1大,防止转化成5位时会丢失位数                    }                double n=number*10000;//让这个数变成5位的                int num=(int)n;//把随机数变成整数                session.setAttribute("rdom",num);//将随机数写入session                }                %>             <p><span><%=session.getAttribute("rdom")%></span>输入左侧5位数字:</p>              <inputname="five"value=<%=request.getParameter("five")%>type="text"/>                             <%               if(request.getParameter("five")!=null){                   int random =(java.lang.Integer) session.getAttribute("rdom");                  session.setAttribute("myput",request.getParameter("five"));                   Stringmyput=(String)session.getAttribute("myput");                   intmy=Integer.parseInt(myput);                   if(my!=random){                     out.println("<pstyle=\"color:red;\">验证码错误!</p>");                         }                   else{                      if(verId(idno)){                         out.println("<pstyle=\"color:green;font=weight:bold;\">该身份证合法!</p>");                          }                       else{                            out.println("<pstyle=\"color:red;font=weight:bold;\">该身份证不合法!</p>");                             }                      }                     }                %>             <p><inputtype="submit" value="验证!"/></p>          </form>       </fieldset>   </body></html>