根据身份证号码自动获取出生日期,性别,籍贯
Posted zywds
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据身份证号码自动获取出生日期,性别,籍贯相关的知识,希望对你有一定的参考价值。
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我,我发给你。
结果:
输入身份证号码后,当然这里我的身份证号码被我去掉了,你懂的!
这样,在今后项目中,给用户的体验感就会很强,只需要身份证号码就行。
以上是关于根据身份证号码自动获取出生日期,性别,籍贯的主要内容,如果未能解决你的问题,请参考以下文章