zoukankan      html  css  js  c++  java
  • 根据身份证号码自动获取出生日期,性别,籍贯

    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<S_area_code> list=new ArrayList<S_area_code>();
            for(S_area_code item:lists) {
                list.add(new S_area_code(item.getID(),item.getAreaCode(),item.getProvince(),item.getCity(),item.getDistrict(),item.getDetail()));
            }
            try {
                response.getWriter().print(JsonUtils.toJson(list));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

    Q4:JsonUtils(注释出现了乱码,大家理解一下。当然也可以将改正的方法发给我,谢了。)

    package jsonUtil;
    
    import java.text.SimpleDateFormat;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class JsonUtils {
        /**
         *  搴忓垪鍖栨垚json
         * */
        public static String toJson(Object obj) {
            // 瀵硅薄鏄犲皠鍣�
            ObjectMapper mapper = new ObjectMapper();
            String result = null;
            // 搴忓垪鍖杣ser瀵硅薄涓簀son瀛楃�涓�
            try {
                result = mapper.writeValueAsString(obj);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            return result;
        }
        
        /**
         * 鍙嶅簭鍒楀寲鎴愬�璞�
         * */
        public static <T> T toObject(String json,Class<T> valueType) {
            //瀵硅薄鏄犲皠鍣�
            ObjectMapper mapper=new ObjectMapper();
            T result=null;
            try {
                result=mapper.readValue(json,valueType);
    
            }catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    }

     Q5:com.vo

    package com.vo;
    
    public class S_area_code {
        int ID;
        int areaCode;
        String province;
        String city;
        String district;
        String detail;
        public S_area_code() {}
        public S_area_code(int iD, int areaCode, String province, String city, String district, String detail) {
            super();
            ID = iD;
            this.areaCode = areaCode;
            this.province = province;
            this.city = city;
            this.district = district;
            this.detail = detail;
        }
        public int getID() {
            return ID;
        }
        public void setID(int iD) {
            ID = iD;
        }
        public int getAreaCode() {
            return areaCode;
        }
        public void setAreaCode(int areaCode) {
            this.areaCode = areaCode;
        }
        public String getProvince() {
            return province;
        }
        public void setProvince(String province) {
            this.province = province;
        }
        public String getCity() {
            return city;
        }
        public void setCity(String city) {
            this.city = city;
        }
        public String getDistrict() {
            return district;
        }
        public void setDistrict(String district) {
            this.district = district;
        }
        public String getDetail() {
            return detail;
        }
        public void setDetail(String detail) {
            this.detail = detail;
        }
        
    }

     Q6:com.dao

    package com.dao;

    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;

    import com.vo.S_area_code;

    import util.DBUtil;

    public class S_area_codedaoimpl {
        public List<S_area_code> getAllList(int areaCode){
            String sql="select * from s_area_code where areaCode=?";
            ResultSet rs=(ResultSet)DBUtil.execute(sql, new Object[] {areaCode});
            List<S_area_code> list=new ArrayList<S_area_code>();
            S_area_code model=null;
            try {
                while(rs.next()) {
                    model=new S_area_code();
                    model.setID(rs.getInt(1));
                    model.setAreaCode(rs.getInt(2));
                    model.setProvince(rs.getString(3));
                    model.setCity(rs.getString(4));
                    model.setDistrict(rs.getString(5));
                    model.setDetail(rs.getString(6));
                    list.add(model);
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return list;
        }
    }


     Q7:com.bo

    package com.bo;
    
    import java.util.List;
    
    import com.dao.S_area_codedaoimpl;
    import com.vo.S_area_code;
    
    public class S_area_codeboimpl {
        S_area_codedaoimpl si=new S_area_codedaoimpl();
        public List<S_area_code> getAllList(int areaCode){
            return si.getAllList(areaCode);
        }
    }

    Q8:DBUtil

    package util;
    
    import java.io.IOException;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    
    public class DBUtil {
        //连接对象
        //Statement 命令对象
        //打开连接
        //关闭连接
        //得到一个连接对象
        //查询(有参,无参)
        //修改(有参,无参)
        
        static Connection conn = null;
        static Statement stmt = null;
        //驱动,服务器地址,登录用户名,密码    
        static String DBDRIVER;
        static String DBURL;
        static String DBUSER;
        static String DBPWD;
        
        static {
            //先创建资源文件,扩展名为.properties
            //内容是以:dbuser=sa  格式
            Properties prop = new Properties();//先获取资源对象
            try {
                prop.load(Thread.currentThread().getContextClassLoader().
                        getResourceAsStream("resources/dbconfig.properties"));
                DBDRIVER = prop.getProperty("DBDRIVER");
                DBURL = prop.getProperty("DBURL");
                DBUSER = prop.getProperty("DBUSER");
                DBPWD = prop.getProperty("DBPWD");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }
        
        //打开连接
        public static void open() {
            //加载驱动
            try {
                Class.forName(DBDRIVER);
                conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                    e.printStackTrace();
            }
        }
        //关闭连接
        public static void close() {
            try {
                if(stmt!=null && stmt.isClosed())
                        stmt.close();
                if(conn!=null && !conn.isClosed())
                    conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } 
        //得到一个连接对象,当用户使用DBUtil无法解决个性问题时
        //可以通过本方法获得连接对象
        public static Connection getConnection() {
            try {
                if(conn==null ||conn.isClosed())
                    open();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return conn;
        }
        
        //executeQuery
        //executeUpdate
        //execute
        //获得查询的数据集
        //不带参数的查询
        //select * from student where name='' and sex=''
        public static ResultSet executeQuery(String sql) {
            try {
                open();//保证连接是成功的
                stmt = conn.createStatement();
                return stmt.executeQuery(sql);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        
        //修改表格内容
        public static int executeUpdate(String sql) {
            int result = 0;
            try {
                open();//保证连接是成功的
                stmt = conn.createStatement();
                result = stmt.executeUpdate(sql);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                close();
            }
            return result;
        }
        //如果执行的查询或存储过程,会返回多个数据集,或多个执行成功记录数
        //可以调用本方法,返回的结果,
        //是一个List<ResultSet>或List<Integer>集合
        public static Object execute(String sql) {
            boolean b=false;
            try {
                open();//保证连接是成功的
                stmt = conn.createStatement();
                b = stmt.execute(sql);        
                //true,执行的是一个查询语句,我们可以得到一个数据集
                //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
                if(b){
                    return stmt.getResultSet();
                }
                else {
                    return stmt.getUpdateCount();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if(!b) {
                    close();
                }
            }
            return null;
        }
        
        // 
        //select * from student where name=? and sex=?
        //带参数的查询,只有输入参数
        public static ResultSet executeQuery(String sql,Object[] in) {
            try {
                open();//保证连接是成功的
                PreparedStatement pst = conn.prepareStatement(sql);
                for(int i=0;i<in.length;i++)
                    pst.setObject(i+1, in[i]);
                stmt = pst;//只是为了关闭命令对象pst
                return pst.executeQuery();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        //带参数修改,只有输入参数
        public static int executeUpdate(String sql,Object[] in) {
            try {
                open();//保证连接是成功的
                PreparedStatement pst = conn.prepareStatement(sql);
                for(int i=0;i<in.length;i++)
                    pst.setObject(i+1, in[i]);
                stmt = pst;//只是为了关闭命令对象pst
                return pst.executeUpdate();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
                //e.printStackTrace();
            }finally {
                close();
            }
            return 0;
        }
        public static Object execute(String sql,Object[] in) {
            boolean b=false;
            try {
                open();//保证连接是成功的
                PreparedStatement pst = conn.prepareStatement(sql);
                for(int i=0;i<in.length;i++)
                    pst.setObject(i+1, in[i]);
                b = pst.execute();
                //true,执行的是一个查询语句,我们可以得到一个数据集
                //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
                if(b){
                    System.out.println("----");
                    /*List<ResultSet> list = new ArrayList<ResultSet>();
                    list.add(pst.getResultSet());
                    while(pst.getMoreResults()) {
                        list.add(pst.getResultSet());
                    }*/
                    return pst.getResultSet();
                }
                else {
                    System.out.println("****");
                    List<Integer> list = new ArrayList<Integer>();
                    list.add(pst.getUpdateCount());
                    while(pst.getMoreResults()) {
                        list.add(pst.getUpdateCount());
                    }
                    return list;
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if(!b) {
                    System.out.println("====");
                    close();
                }
            }
            return null;
        }
        //调用存储过程  proc_Insert(?,?,?)
        public static Object executeProcedure(String procName,Object[] in) {
            open();
            try {
                procName = "{call "+procName+"(";
                String link="";
                for(int i=0;i<in.length;i++) {
                    procName+=link+"?";
                    link=",";
                }
                procName+=")}";
                CallableStatement cstmt = conn.prepareCall(procName);
                for(int i=0;i<in.length;i++) {
                    cstmt.setObject(i+1, in[i]);
                }
                if(cstmt.execute())
                {
                    return cstmt.getResultSet();
                }
                else {
                    return cstmt.getUpdateCount();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            return null;
        }
        
    
        /*
         * 调用存储过程,并有输出参数
         * @procName ,存储过程名称:proc_Insert(?,?)
         * @in ,输入参数集合
         * @output,输出参数集合
         * @type,输出参数类型集合
         * */
        public static Object executeOutputProcedure(String procName,
                Object[] in,Object[] output,int[] type){
            Object result = null;
            try {
                CallableStatement cstmt = conn.prepareCall("{call "+procName+"}");
                //设置存储过程的参数值
                int i=0;
                for(;i<in.length;i++){//设置输入参数
                    cstmt.setObject(i+1, in[i]);
                    //print(i+1);
                }
                int len = output.length+i;
                for(;i<len;i++){//设置输出参数
                    cstmt.registerOutParameter(i+1,type[i-in.length]);
                    //print(i+1);
                }
                boolean b = cstmt.execute();
                //获取输出参数的值
                for(i=in.length;i<output.length+in.length;i++)
                    output[i-in.length] = cstmt.getObject(i+1);
                if(b) {
                    result = cstmt.getResultSet();
                }
                else {
                    result = cstmt.getUpdateCount();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return result;
        }
        //调用存储过程查询出所有的值
            public static Object executeProcedures(String procName) {
                open();
                try {
                    procName = "{call "+procName+"}";
                    CallableStatement cstmt = conn.prepareCall(procName);
                    if(cstmt.execute())
                    {
                        return cstmt.getResultSet();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }
            public static void main(String[] msg) {
                open();
            }
    }

    Q9:配置文件

    DBDRIVER=com.mysql.jdbc.Driver
    DBURL=jdbc:mysql://localhost:3306/areadb?serverTimezone=GMT%2B8
    DBUSER=root
    DBPWD=

    注意:此数据库使用的是MySql数据库

    该有的代码我都贴了,除了一些架包,这个,需要的q我,我发给你。

    结果:

    输入身份证号码后,当然这里我的身份证号码被我去掉了,你懂的!

    这样,在今后项目中,给用户的体验感就会很强,只需要身份证号码就行。

    zywds
  • 相关阅读:
    python中的 if __name__ == "__main__": 语句的作用
    python的打包与解包
    python循环删除列表元素
    python字典键值对新增与修改的几种方法及差异总结
    python列表元素删除的几种方法以及差异总结
    python之redis(二)
    python之redis(一)
    python之mysql(四)
    python之mysql(三)
    python之mysql(二)
  • 原文地址:https://www.cnblogs.com/zywds/p/9368109.html
Copyright © 2011-2022 走看看