%@ 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()
+ "/GetSignatureData.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");
}
%>