package com.norteksoft.wf.engine.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.wf.engine.service.OfficeManager; /** * Servlet implementation class WebOffice */ public class WebOffice extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public WebOffice() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OfficeManager officeManager = (OfficeManager)ContextUtils.getBean("officeManager"); try { DBstep.iMsgServer2000 msgServer = new DBstep.iMsgServer2000(); if(request.getMethod().equalsIgnoreCase("POST")) { msgServer.MsgVariant(readPackage(request)); officeManager.operateOffice(msgServer); }else{ msgServer.MsgError("请使用Post方法"); msgServer.MsgTextClear(); msgServer.MsgFileClear(); } sendPackage(msgServer,response); } catch (Exception e) { e.printStackTrace(); } } /** * 发送处理后的数据包 * @param response */ private void sendPackage(DBstep.iMsgServer2000 msgServer,HttpServletResponse response) { try { response.getOutputStream().write(msgServer.MsgVariant()); response.getOutputStream().flush(); response.getOutputStream().close(); } catch (IOException e) { e.printStackTrace(); } } /** * 取得客户端发来的数据包 * @param request * @return */ private byte[] readPackage(HttpServletRequest request) { byte stream[] = null; int totalRead = 0; int readBytes = 0; int totalBytes = 0; try { totalBytes = request.getContentLength(); stream = new byte[totalBytes]; while (totalRead < totalBytes) { readBytes = request.getInputStream().read(stream, totalRead, totalBytes - totalRead); if(readBytes==-1)break; totalRead += readBytes; continue; } } catch (Exception e) { e.printStackTrace(); } return (stream); } }