根据身份证号码自动获取出生日期,性别,籍贯

博客介绍了如何通过身份证号码自动获取个人的出生日期、性别和籍贯。涉及到的技术包括Servlet、JSON处理以及Java相关库的使用。通过实现这一功能,可以提升用户体验,仅需输入身份证号码即可获取关键个人信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Q1:数据库

由于数据有点多,我们在这就不展示了(需要的联系我,我发给你)

i

这是里面所用到的一些架包,包等等。相信大家对这一块都已经了解了,我就不说废话了。

Q2:html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <script src=js/jquery-1.11.3.js></script>
    身份证号码:<input type="text" id="idCard"/>
    出生日期:<input type="text" id="birthday"/>
    性别:<input type="radio" name="sex" value="男" id="nan"/>男<input type="radio" name="sex" value="女" id="nv"/>女
    籍贯:<input type="text" id="place"/>
    <input type="button" value="确定" id="btnok"/>
    <script>
        var app={
                select:function(){
                    var cardid=$("#idCard").val();
                    var place=cardid.substring(0,6);
                    $.ajax({
                        type:'post',
                        url:'S_area_codeaction?action=select',
                        data:{areaCode:place},
                        success:function(data){
                            console.log(data);
                            $("#place").val(data[0].detail);
                        }
                    });
                },
                start:function(){
                    $("#btnok").click(function(){
                        var cardid=$("#idCard").val();
                        var nian=cardid.substring(6,10);//1998
                        var yue=cardid.substring(10,12);
                        var ri=cardid.substring(12,14);
                        var birthdays=nian+"-"+yue+"-"+ri;
                        /* var a=IsDate(birthdays); */
                        /* if(a){ */
                            $("#birthday").val(nian+"年"+yue+"月"+ri+"日");
                            var sex=cardid.substring(16,17);
                            if(sex%2==0){
                                $("#nv").prop("checked",true);
                            }else{
                                $("#nan").prop("checked",true);
                            }
                            app.select();    
                        /* } */
                    });
                }
        };
        app.start();
      //下面可以判断日期:
/* function IsDate(str) { arr = str.split("-"); if(arr.length == 3) { intYear = parseInt(arr[0],10); intMonth = parseInt(arr[1],10); intDay = parseInt(arr[2],10); if(isNaN(intYear) || isNaN(intMonth) || isNaN(intDay)) { return false; } if(intYear > 2100 || intYear < 1900 || intMonth > 12 || intMonth < 0 || intDay > 31 || intDay < 0) { return false; } if((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && intDay > 30) { return false; } if(intYear % 100 == 0 && intYear % 400 || intYear % 100 && intYear % 4 == 0) { if(intDay > 29) return false; } else { if(intDay > 28) return false; } return true; } return false; } */ </script> </body> </html>

Q3:Servlet(S_area_codeaction)

package action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bo.S_area_codeboimpl;
import com.vo.S_area_code;

import jsonUtil.JsonUtils;

@WebServlet("/S_area_codeaction")
public class S_area_codeaction extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public S_area_codeaction() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");
        String action=request.getParameter("action");
        if(action.equals("select")) {
            select(request,response);
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
    //查询
    public void select(HttpServletRequest request, HttpServletResponse response) {
        S_area_codeboimpl si=new S_area_codeboimpl();
        int areaCode=Integer.parseInt(request.getParameter("areaCode"));
        List<S_area_code> lists=si.getAllList(areaCode);
        List&
自己写的比较全js验证,供大家参考 //身份证验证 function checkIdcard(idcard1,showMsg){ var idcard=this.trim(idcard1);// 对身份证号码做处理。去除头尾空格。 var Errors=new Array( "验证通过!", "身份证号码位数不对!", "身份证号码出生日期超出范围或含有非法字符!", "身份证号码校验错误!", "身份证地区非法!" ); var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} var idcard,Y,JYM; var S,M; var idcard_array = new Array(); idcard_array = idcard.split(""); /*基本校验*/ if(idcard == "" || idcard == null || idcard.length == 0) { if(showMsg==null||showMsg=="") alert("身份证号为空,请输入您的身份证号!"); return false; } /*地区检验*/ if(area[parseInt(idcard.substr(0,2))]==null) { if(showMsg==null||showMsg=="") alert(Errors[4]); return false; } /*身份号码位数及格式检验*/ switch(idcard.length){ case 15: if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 } else { ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 } if(ereg.test(idcard)){ //alert(Errors[0]+"15"); return true; //15位验证通过 } else { if(showMsg==null||showMsg=="") alert(Errors[2]); return false; } break; case 18: //18位身份号码检测 //出生日期的合法性检查 //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06
作  者:池龙电子邮件:poolord@2ndhometown.net个人主页:http://www.2ndhometown.net开发平台:MS Windows 2000 Profrssional / Delphi 6最后更新:2005.01.16  本压缩包主要包括了身份证号码相关处理单元ascidnum.pas、2004年9月30日的县及县以上行政区划代码定义文件regioncode.dat、18位公民身份证号码的编排规则以及一个示例程序idn.exe及其源代码。许可:  您可以不受任何限制的使用、修改、分发这个单元,但请不要删除此说明。  作者对本单元不作任何显式或隐含的安全性和适用性的担保。  如果您对本单元进行了修改,请花几分钟发送一份拷贝给我,非常感谢。版本历史:  2005.01.16 完成本单元        基本功能:          1. 从身份证号码中取信息          2. 判断身份证号码的有效性          3. 将15位号码转换成18位号码关于区划代码定义文件的说明:  区划代码转换为名称的部分,需要从外部文件中读取区划定义的数据(如随单元发布的文件regioncode.dat)。  该文件为纯文本文件,每行是一个代码和名称的对应关系。代码和名称之间以逗号作分隔。以#开头的行作为注释行,空行不处理。程序中作了一定的容错处理,通常情况下,不正确的数据会被略过。但在重新编排时,还是请尽量保证数据的正确性。  另外,为了保证查找的效率,所以要求文件中的记录按区划代码由小到大的顺序排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值