<%@ page contentType="text/html; charset=gb2312" %> <%@ page import="java.io.*" %> <%@ page import="java.text.*" %> <%@ page import="java.util.*" %> <%@ page import="java.lang.*"%> <%@ page import="java.sql.*" %> <%@ page import="java.net.*" %> <%@ page import="DBstep.iDBManager2000.*" %> <%@ page import="DBstep.*" %> <%@page import="oracle.jdbc.OracleResultSet"%> <%@page import="oracle.sql.BLOB"%> <% DBstep.iDBManager2000 ObjConnBean = new DBstep.iDBManager2000(); String mCommand; String mDocumentID = ""; String mSignatureID = ""; byte[] mSignature; String mSignatures; String strSql; String mUserName; String mExtParam; int mSignatureSize; String mSignature_1=""; boolean mResult; java.lang.String KeyName; //文件名 java.io.File ObjFile; //文件对象 java.io.FileReader ObjFileReader; //读文件对象 char[] ChrBuffer; //缓冲 int intLength; //实际读出的字符数 String mSignatureName; //印章名称 String mSignatureUnit; //签章单位 String mSignatureUser; //持章人 String mSignatureSN; //签章SN String mSignatureGUID; //全球唯一标识符 String mMACHIP; //机器IP String OPType; //操作标志 String mKeySn; //KEY序列号 mCommand=request.getParameter("COMMAND"); mUserName=new String(request.getParameter("USERNAME").getBytes("8859_1")); mExtParam=new String(request.getParameter("EXTPARAM").getBytes("8859_1")); System.out.println(""); System.out.println("ReadPackage"); System.out.println(mCommand); if(mCommand.equalsIgnoreCase("SAVESIGNATURE")){ //保存签章数据信息 mDocumentID=new String(request.getParameter("DOCUMENTID").getBytes("8859_1")); mSignatureID=new String(request.getParameter("SIGNATUREID").getBytes("8859_1")); mSignature=request.getParameter("SIGNATURE").getBytes("8859_1"); mSignatureSize=mSignature.length; System.out.println("DocuemntID:"+mDocumentID); System.out.println("SignatureID:"+mSignatureID); //System.out.println("Signature:"+mSignature); if (ObjConnBean.OpenConnection()){ strSql="SELECT * from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'"; ResultSet rs = null; rs = ObjConnBean.ExecuteQuery(strSql); if (rs.next()) { //strSql = "update HTMLSignature set DocumentID='"+mDocumentID+"',SIGNATUREID='"+mSignatureID+"',Signature='"+mSignature+"'"; //strSql = strSql + " Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'"; strSql="update HTMLSignature set DocumentID=?,SignatureID=?,SignatureSize=?,Signature=EMPTY_BLOB() where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'"; //ObjConnBean.ExecuteUpdate(strSql); }else{ //取得唯一值(mSignature) java.util.Date dt=new java.util.Date(); long lg=dt.getTime(); Long ld=new Long(lg); mSignatureID=ld.toString(); strSql="insert into HTMLSignature (DocumentID,SignatureID,SignatureSize,Signature) values (?,?,?,EMPTY_BLOB()) "; } rs.close(); try{ java.sql.PreparedStatement prestmt=null; prestmt=ObjConnBean.Conn.prepareStatement(strSql); prestmt.setString(1, mDocumentID); prestmt.setString(2, mSignatureID); prestmt.setInt(3, mSignatureSize); ObjConnBean.Conn.setAutoCommit(true); prestmt.execute(); ObjConnBean.Conn.commit(); prestmt.close(); Statement stmt = null; ObjConnBean.Conn.setAutoCommit(false); stmt = ObjConnBean.Conn.createStatement(); OracleResultSet update = (OracleResultSet) stmt.executeQuery("select Signature from HTMLSignature where DocumentID=" + mDocumentID + " and SignatureID=" + mSignatureID + " for update"); if (update.next()) { try { // PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), SignatureSize); BLOB vField=((oracle.jdbc.OracleResultSet) update).getBLOB("Signature"); OutputStream outstream = vField.getBinaryOutputStream(); outstream.write(mSignature, 0, mSignatureSize); outstream.close(); } catch (IOException e) { System.out.println(e.toString()); mResult = false; } } update.close(); stmt.close(); ObjConnBean.Conn.commit(); mSignature = null; mResult = true; } catch(SQLException e){ System.out.println("保存签章错误:"+e.toString()); mResult=false; } ObjConnBean.CloseConnection(); } out.clear(); out.print("SIGNATUREID="+mSignatureID+"\r\n"); out.print("RESULT=OK"); } if(mCommand.equalsIgnoreCase("GETNOWTIME")){ //获取服务器时间 java.sql.Date mDate; Calendar cal = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String mDateTime=formatter.format(cal.getTime()); out.clear(); out.print("NOWTIME="+mDateTime+"\r\n"); out.print("RESULT=OK"); } if(mCommand.equalsIgnoreCase("DELESIGNATURE")){ //删除签章数据信息 mDocumentID=request.getParameter("DOCUMENTID"); mSignatureID=request.getParameter("SIGNATUREID"); System.out.println("DocuemntID:"+mDocumentID); System.out.println("SignatureID:"+mSignatureID); if (ObjConnBean.OpenConnection()){ strSql="SELECT * from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'"; ResultSet rs=null; rs = ObjConnBean.ExecuteQuery(strSql); if(rs.next()){ try{ strSql="DELETE from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'"; ObjConnBean.ExecuteUpdate(strSql); } catch(Exception ex){ out.println(ex.toString()); } } ObjConnBean.CloseConnection(); } out.clear(); out.print("RESULT=OK"); } if(mCommand.equalsIgnoreCase("LOADSIGNATURE")){ //调入签章数据信息 mDocumentID=request.getParameter("DOCUMENTID"); mSignatureID=request.getParameter("SIGNATUREID"); System.out.println("DocuemntID:"+mDocumentID); System.out.println("SignatureID:"+mSignatureID); if (ObjConnBean.OpenConnection()){ strSql="SELECT * from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'"; ResultSet rs=null; rs = ObjConnBean.ExecuteQuery(strSql); if(rs.next()){ try{ mSignatureSize=rs.getInt("SignatureSize"); BLOB vField=((OracleResultSet) rs).getBLOB("Signature"); mSignature=new byte[mSignatureSize]; InputStream instream = vField.getBinaryStream(); instream.read(mSignature, 0, mSignatureSize); instream.close(); mSignature_1=new String(mSignature); } catch (IOException ex) { System.out.println(ex.toString()); } } ObjConnBean.CloseConnection(); } System.out.println(mSignature_1); out.clear(); out.print(mSignature_1+"\r\n"); out.print("RESULT=OK"); } if(mCommand.equalsIgnoreCase("SHOWSIGNATURE")){ //获取当前签章SignatureID,调出SignatureID,再自动调LOADSIGNATURE数据 mDocumentID=request.getParameter("DOCUMENTID"); System.out.println("DocuemntID:"+mDocumentID); mSignatures=""; if (ObjConnBean.OpenConnection()){ strSql="SELECT * from HTMLSignature Where DocumentID='"+mDocumentID + "'"; ResultSet rs=null; rs = ObjConnBean.ExecuteQuery(strSql); while(rs.next()){ mSignatures=mSignatures+rs.getString("SignatureID")+";"; } ObjConnBean.CloseConnection(); } out.clear(); out.print("SIGNATURES="+mSignatures+"\r\n"); out.print("RESULT=OK"); } //--------------------------------------------------------------------------------------- if(mCommand.equalsIgnoreCase("GETSIGNATUREDATA")){ //批量签章时,获取所要保护的数据 String mSignatureData = ""; mDocumentID = request.getParameter("DOCUMENTID"); System.out.println(new String(request .getParameter("FIELDSLIST").getBytes("8859_1"))); System.out.println(request.getParameter("FIELDSNAME")); String targetUrl = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/GetmSignatureData.do" + "?documentID=" + mDocumentID; try { URL url = new URL(targetUrl); HttpURLConnection connection = (HttpURLConnection) url .openConnection();// 此时cnnection只是为一个连接对象,待连接中 connection.setRequestMethod("GET"); //设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection .setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); connection.connect(); BufferedReader bf = new BufferedReader( new InputStreamReader(connection.getInputStream(), "gb2312")); String line; StringBuilder sb1 = new StringBuilder(); // 用来存储响应数据 // 循环读取流,若不到结尾处 while ((line = bf.readLine()) != null) { sb1.append(line); } bf.close(); // 重要且易忽略步骤 (关闭流,切记!) connection.disconnect(); // 销毁连接 String result = ""; try { result = java.net.URLDecoder.decode(sb1.toString(), "gb2312"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String[] arrResult = result.split("\r\n"); Map map = new HashMap();//字符串转换为map for (String tmp : arrResult) { String[] arrTmp = tmp.split("="); try { map.put(arrTmp[0].trim(), arrTmp[1]); } catch (Exception e) { map.put(arrTmp[0], ""); } } //--------------------------------------------------------------------------- StringBuffer sb = new StringBuffer(); sb.append("BH=" + (map.get("BH")!=null?map.get("BH").trim():null)+ "\r\n"); sb.append("ZYDW=" +(map.get("ZYDW")!=null?map.get("ZYDW").trim():null) + "\r\n"); sb.append("ZYWTR="+(map.get("ZYWTR")!=null?map.get("ZYWTR").trim():null) + "\r\n"); sb.append("CM=" + (map.get("CM")!= null?map.get("CM").trim():null) + "\r\n"); sb.append("XCGLFZR=" + (map.get("XCGLFZR")!=null? map.get("XCGLFZR").trim():null) + "\r\n"); sb.append("WXHWMCBH=" +(map.get("WXHWMCBH")!=null? map.get("WXHWMCBH").trim():null) + "\r\n"); sb.append("WPBH=" + (map.get("WPBH")!=null? map.get("WPBH").trim():null) + "\r\n"); sb.append("JSPM=" + (map.get("JSPM")!=null? map.get("JSPM").trim():null) + "\r\n"); sb.append("BZ=" + (map.get("BZ")!=null? map.get("BZ").trim():null) + "\r\n"); sb.append("WXPLB=" +(map.get("WXPLB")!=null? map.get("WXPLB").trim():null) + "\r\n"); sb.append("BYZD4=" +(map.get("BYZD4")!=null? map.get("BYZD4").trim():null) + "\r\n"); sb.append("INOROUT=" +(map.get("INOROUT")!=null? map.get("INOROUT").trim():null) + "\r\n"); sb.append("ZYSL=" +(map.get("ZYSL")!=null? map.get("ZYSL").trim():null) + "\r\n"); sb.append("SG=" + (map.get("SG")!=null? map.get("SG").trim():null) + "\r\n"); sb.append("XG=" + (map.get("XG")!=null? map.get("XG").trim():null) + "\r\n"); sb.append("MAO=" + (map.get("MAO")!=null? map.get("MAO").trim():null) + "\r\n"); sb.append("HZWXX=" +(map.get("HZWXX")!=null? map.get("HZWXX").trim():null) + "\r\n"); sb.append("DXDJ=" + (map.get("DXDJ")!=null? map.get("DXDJ").trim():null) + "\r\n"); sb.append("WRLB=" + (map.get("WRLB")!=null? map.get("WRLB").trim():null) + "\r\n"); sb.append("JZXSL=" +(map.get("JZXSL")!=null? map.get("JZXSL").trim():null) + "\r\n"); sb.append("HC=" +(map.get("HC")!=null? map.get("HC").trim():null) + "\r\n"); sb.append("HWZL=" +(map.get("HWZL")!=null? map.get("HWZL").trim():null) + "\r\n"); sb.append("HWXS=" +(map.get("HWXS")!=null? map.get("HWXS").trim():null) + "\r\n"); sb.append("LHXZ=" +(map.get("LHXZ")!=null? map.get("LHXZ").trim():null) + "\r\n"); sb.append("ZYDD=" +(map.get("ZYDD")!=null? map.get("ZYDD").trim():null) + "\r\n"); sb.append("ZYSJQ=" +(map.get("ZYSJQ")!=null? map.get("ZYSJQ").trim():null) + "\r\n"); sb.append("ZYSJZ=" +(map.get("ZYSJZ")!=null? map.get("ZYSJZ").trim():null) + "\r\n"); sb.append("AQFFCS=" +(map.get("AQFFCS")!=null? map.get("AQFFCS").trim():null) + "\r\n"); sb.append("BGR=" +(map.get("BGR")!=null? map.get("BGR").trim():null) + "\r\n"); sb.append("LXFS=" +(map.get("LXFS")!=null? map.get("LXFS").trim():null) + "\r\n"); sb.append("BGSJ=" +(map.get("BGSJ")!=null? map.get("BGSJ").trim():null) + "\r\n"); sb.append("BYZD2=" +(map.get("BYZD2")!=null? map.get("BYZD2").trim():null) + "\r\n"); //审核前审核的数据还没入库 //sb.append("SHYJ=" +(map.get("SHYJ")!=null? map.get("SHYJ").trim():null) + "\r\n"); //sb.append("SHR=" +(map.get("SHR")!=null? map.get("SHR").trim():null) + "\r\n"); //sb.append("SHSJ=" + (map.get("SHSJ")!=null? map.get("SHSJ").trim():null) + "\r\n"); mExtParam = URLDecoder.decode(mExtParam,"utf-8"); //System.out.println(mExtParam); sb.append(mExtParam); //############################################################## //mSignatureData = session.getAttribute("mSignatureData").toString(); //session.putValue("mSignatureData",null); mSignatureData = sb.toString(); } catch (Exception e) { e.printStackTrace(); } mSignatureData = java.net.URLEncoder.encode(mSignatureData); out.clear(); out.print("SIGNATUREDATA=" + mSignatureData + "\r\n"); out.print("RESULT=OK"); } if(mCommand.equalsIgnoreCase("PUTSIGNATUREDATA")){ //批量签章时,写入签章数据 mDocumentID=new String(request.getParameter("DOCUMENTID").getBytes("8859_1")); mSignature=request.getParameter("SIGNATURE").getBytes("8859_1"); mSignatureSize=mSignature.length; if (ObjConnBean.OpenConnection()){ java.sql.PreparedStatement prestmt=null; try{ //取得唯一值(mSignature) java.util.Date dt=new java.util.Date(); long lg=dt.getTime(); Long ld=new Long(lg); mSignatureID=ld.toString(); String Sql="insert into HTMLSignature (DocumentID,SignatureID,SignatureSize,Signature) values (?,?,?,EMPTY_BLOB()) "; prestmt =ObjConnBean.Conn.prepareStatement(Sql); prestmt.setString(1, mDocumentID); prestmt.setString(2, mSignatureID); prestmt.setInt(3, mSignatureSize); ObjConnBean.Conn.setAutoCommit(true); prestmt.execute(); ObjConnBean.Conn.commit(); prestmt.close(); Statement stmt = null; ObjConnBean.Conn.setAutoCommit(false); stmt = ObjConnBean.Conn.createStatement(); OracleResultSet update = (OracleResultSet) stmt.executeQuery("select Signature from HTMLSignature where DocumentID=" + mDocumentID + " and SignatureID=" + mSignatureID + " for update"); if (update.next()) { try { BLOB vField=((oracle.jdbc.OracleResultSet) update).getBLOB("Signature"); OutputStream outstream = vField.getBinaryOutputStream(); outstream.write(mSignature, 0, mSignatureSize); outstream.close(); mSignature_1=new String(mSignature); } catch (IOException e) { System.out.println(e.toString()); mResult = false; } } update.close(); stmt.close(); ObjConnBean.Conn.commit(); mSignature = null; mResult=true; } catch(SQLException e){ System.out.println(e.toString()); mResult=false; } ObjConnBean.CloseConnection(); } out.clear(); out.print("SIGNATUREID="+mSignature_1+"\r\n"); out.print("RESULT=OK"); } //--------------------------------------------------------------------------------------- if(mCommand.equalsIgnoreCase("SIGNATUREKEY")){ //mUserName=new String(request.getParameter("USERNAME").getBytes("8859_1")); String RealPath =mUserName+"\\"+mUserName+".key"; KeyName=application.getRealPath(RealPath); ObjFile=new java.io.File(KeyName); //创建文件对象 ChrBuffer=new char[10]; try{ if(ObjFile.exists()){//文件存在 InputStreamReader isr=new InputStreamReader(new FileInputStream(KeyName)); //ObjFileReader = new java.io.FileReader(ObjFile); //创建读文件对象 //ObjFileReader.skip(1); //ObjFileReader.read(ChrBuffer, 0, 1); //System.out.println(ChrBuffer); while((intLength=isr.read(ChrBuffer))!=-1){ //读文件内容 out.write(ChrBuffer,0,intLength); } out.write("\r\n"); out.write("RESULT=OK"); isr.close(); //关闭读文件对象 } else{ out.println("File Not Found"+KeyName); //文件不存在 } } catch(Exception e){ System.out.println(e.toString()); } } if(mCommand.equalsIgnoreCase("SAVEHISTORY")){ //保存签章历史信息 mSignatureName=new String(request.getParameter("SIGNATURENAME").getBytes("8859_1"));//印章名称 mSignatureUnit=new String(request.getParameter("SIGNATUREUNIT").getBytes("8859_1"));//印章单位 mSignatureUser=new String(request.getParameter("SIGNATUREUSER").getBytes("8859_1"));//印章用户名 mSignatureSN=new String(request.getParameter("SIGNATURESN").getBytes("8859_1"));//印章序列号 mSignatureGUID=new String(request.getParameter("SIGNATUREGUID").getBytes("8859_1"));//全球唯一标识 mDocumentID=new String(request.getParameter("DOCUMENTID").getBytes("8859_1"));//页面ID mSignatureID=new String(request.getParameter("SIGNATUREID").getBytes("8859_1"));//签章序列号 mMACHIP=new String(request.getParameter("MACHIP").getBytes("8859_1"));//签章机器IP OPType=new String(request.getParameter("LOGTYPE").getBytes("8859_1"));//日志标志 mKeySn=new String(request.getParameter("KEYSN").getBytes("8859_1"));//KEY序列号 if (ObjConnBean.OpenConnection()){ java.sql.PreparedStatement prestmt=null; try{ java.sql.Date mDate; Calendar cal = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String mDateTime=formatter.format(cal.getTime()); strSql="insert into HTMLHistory(SignatureName,SignatureUnit,SignatureUser,SignatureSN,"; strSql=strSql+"SignatureGUID,DocumentID,SignatureID,IP,LogTime,LogType,KeySN)"; strSql=strSql+" values(?,?,?,?,?,?,?,?,?,?,?)"; prestmt =ObjConnBean.Conn.prepareStatement(strSql); prestmt.setString(1, mSignatureName); prestmt.setString(2, mSignatureUnit); prestmt.setString(3, mSignatureUser); prestmt.setString(4, mSignatureSN); prestmt.setString(5, mSignatureGUID); prestmt.setString(6, mDocumentID); prestmt.setString(7, mSignatureID); prestmt.setString(8, mMACHIP); prestmt.setString(9,mDateTime); prestmt.setString(10,OPType); prestmt.setString(11,mKeySn); ObjConnBean.Conn.setAutoCommit(true); prestmt.execute(); ObjConnBean.Conn.commit(); prestmt.close(); mResult=true; } catch(SQLException e){ System.out.println(e.toString()); mResult=false; } ObjConnBean.CloseConnection(); } out.clear(); out.print("SIGNATUREID="+mSignatureID+"\r\n"); out.print("RESULT=OK"); } %>