<%@page contentType="text/html; charset=gb2312"%> <%@page import="java.io.*"%> <%@page import="java.text.*"%> <%@page import="java.util.*"%> <%@page import="DBstep.iMsgServer2000.*"%> <%! public class iWebOffice { private String mOption; private String mRecordID; private String mUserName; private String mFileType; private String mFilePath; private DBstep.iMsgServer2000 MsgObj; public void ExecuteRun(HttpServletRequest request, HttpServletResponse response) { mOption = ""; mRecordID = ""; mUserName = ""; mFileType = ""; mFilePath = request.getSession().getServletContext().getRealPath(""); //取得服务器路径 MsgObj = new DBstep.iMsgServer2000(); //创建服务对象 //System.out.println("ReadPackage"); MsgObj.ReadPackage(request); //装入客户端发送的数据 if (MsgObj.GetMsgByName("DBSTEP").equalsIgnoreCase("DBSTEP")) { //如果是合法的信息包 mOption = MsgObj.GetMsgByName("OPTION"); //取得操作信息 System.out.println(mOption); //打印出调试信息 mUserName = MsgObj.GetMsgByName("USERNAME"); //取得系统用户 mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号 mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型 //mFilePath = mFilePath + "/Document/" + mRecordID + mFileType; //文档的完整路径 mFilePath = MsgObj.GetMsgByName("EXTPARAM"); //文档的完整路径 //System.out.println("mFilePath=="+mFilePath); if (mOption.equalsIgnoreCase("SAVEFILE")) { //下面的代码为保存为全文批注格式文件 //mFileBody=MsgObj.MsgFileBody(); //取得文档内容 mFileBody可以保存到数据库中,类型byte[] MsgObj.MsgTextClear(); //清除文本信息 //add by xhgao begin-----MsgFileBody是文档+全文批注的复合文档,这里需要利用MsgObj.ToDocument()方法,分离纯WORD文档 byte[] mFileBody = MsgObj.ToDocument(MsgObj.MsgFileBody()); //分离操作 MsgObj.MsgFileBody(mFileBody); //将分离后的文档数据读入组件对象 //add by xhgao end------- if (MsgObj.MsgFileSave(mFilePath)) { //保存文档 MsgObj.SetMsgByName("STATUS", "保存文档成功!"); //设置状态信息 MsgObj.MsgError(""); //清除错误信息 } else { MsgObj.MsgError("保存文档失败!"); //设置错误信息 } MsgObj.MsgFileClear(); } if (mOption.equalsIgnoreCase("LOADFILE")) { //下面的代码为调入全文批注格式文件 String isEmpty = MsgObj.GetMsgByName("EMPTY"); //是否是空内容文档的标识 if (isEmpty.equalsIgnoreCase("TRUE")) { //此时接收的文档中内容是空白的,请用日志记录保存时间、保存用户、记录编号等信息,用于将来发现文档内容丢失时排查用。 System.out.println("注意:本次保存的是空白内容的文档。RECORDID:" + mRecordID); } MsgObj.MsgTextClear(); //清除文本信息 if (MsgObj.MsgFileLoad(mFilePath)) { //调入文档内容 //MsgObj.MsgFileBody(mFileBody); //将文件信息打包,mFileBody为从数据库中读取,类型byte[] MsgObj.SetMsgByName("STATUS", "打开文档成功!"); //设置状态信息 MsgObj.MsgError(""); //清除错误信息 } else { MsgObj.MsgError("打开文档失败!"); //设置错误信息 } } } else { MsgObj.MsgError("客户端发送数据包错误!"); MsgObj.MsgTextClear(); MsgObj.MsgFileClear(); } //System.out.println("SendPackage"); MsgObj.SendPackage(response); //将结果数据包返回给客户端 } }%> <% iWebOffice officeServer = new iWebOffice(); officeServer.ExecuteRun(request, response); out.clear(); //用于解决JSP页面中“已经调用getOutputStream()”问题 out = pageContext.pushBody(); //用于解决JSP页面中“已经调用getOutputStream()”问题 %>