private void setResponseHeader( HttpServletResponse response, String uri, String transferEncoding) { // LogUtil.logDebug( uri + ".Accept-Encoding: "+ transferEncoding); String ext = null; int dot = uri.lastIndexOf("."); if (dot != -1) { ext = uri.substring(dot + 1); } if (ext != null && ext.length() > 0) { Integer expires = (Integer) expiresMap.get(ext); if (expires != null) { // LogUtil.logDebug( uri + ".Expires: "+ expires.intValue()); if (expires.intValue() > 0) { response.setHeader("Cache-Control", "max-age=" + expires.intValue()); // HTTP 1.1 } else { response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setDateHeader("Expires", expires.intValue()); } } } }
/** * This method handles PUT requests from the client. PUT requests will come from the applet * portion of this application and are the way that images and other files can be posted to the * server. * * @param request the HTTP request object * @param response the HTTP response object * @exception ServletException * @exception IOException */ public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); /* * The Scan applet will zip all the files together to create a * faster upload and to use just one server connection. */ ZipInputStream in = new ZipInputStream(request.getInputStream()); /* * This will write all the files to a directory on the server. */ try { try { File file = new File("scan"); Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(file)); document.open(); String fileSize = null; while (true) { ZipEntry entry = in.getNextEntry(); if (entry == null) { break; } File f = File.createTempFile("translate", entry.getName()); FileOutputStream out = new FileOutputStream(f); FileInputStream inStream = null; try { int read; byte[] buf = new byte[2024]; while ((read = in.read(buf)) > 0) { out.write(buf, 0, read); } out.close(); inStream = new FileInputStream(f); System.out.println(entry.getSize()); byte[] b = new byte[inStream.available()]; inStream.read(b); System.out.println(b.length); com.itextpdf.text.Image image1 = com.itextpdf.text.Image.getInstance(b); image1.scalePercent(30); image1.setCompressionLevel(9); document.add(image1); } finally { } } document.close(); // fileSize = CommonUtils.getFileSize(file); // DocumentStoreLogDAO documentStoreLogDAO = new DocumentStoreLogDAO(); // DocumentStoreLog documentStoreLog = null; // DocumentStoreLog documentStore = // (DocumentStoreLog)session.getAttribute(CommonConstants.DOCUMENT_STORE_LOG); // if(null != documentStore) { // documentStore.setFileSize(fileSize); // } // Transaction tx = documentStoreLogDAO.getSession().getTransaction(); // tx.begin(); // documentStoreLogDAO.save(documentStore); // tx.commit(); } catch (ZipException ze) { /* * We want to catch each sip exception separately because * there is a possibility that we can read more files from * the archive even if one of them is corrupted. */ ze.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } finally { in.close(); } /* * Now that we have finished uploading the files * we will send a reponse to the server indicating * our success. */ response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println("<html><head><title>ImageSrv</title></head></html>"); out.flush(); out.close(); response.setStatus(HttpServletResponse.SC_OK); }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 权限判断 StringBuffer sb = new StringBuffer(); String actionType = null; String queryString = null; String userid = null; String isCanAccess = "1"; HttpServletRequest hrequest = (HttpServletRequest) request; String strContext = hrequest.getContextPath(); if (request instanceof HttpServletRequest) { // 获取用户信息 userid = (String) hrequest.getSession().getAttribute("AuthorizedUserID"); strContext = hrequest.getContextPath(); queryString = hrequest.getQueryString(); // 整个参数串 actionType = hrequest.getParameter("actionType"); // 一般操作 if (actionType == null) { actionType = hrequest.getParameter("formSN"); // 针对查询的操作 if (actionType != null) { actionType = "formSN=" + actionType; } } else { actionType = "actionType=" + actionType; } } if (actionType != null) { // 如果参数不为空,则判断权限,通过存储过程判断 DBConnectionManager dbManager = new DBConnectionManager(); CallableStatement cstmt = null; Connection conn = null; try { conn = dbManager.getConnection(); String query = "{call pkg_security.userAccessFunction(?,?,?,?)}"; cstmt = conn.prepareCall(query); cstmt.registerOutParameter(1, OracleTypes.VARCHAR); cstmt.setString(2, userid); cstmt.setString(3, actionType == null ? null : actionType.trim()); cstmt.setString(4, queryString == null ? null : queryString.trim()); cstmt.execute(); isCanAccess = cstmt.getString(1); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (cstmt != null) { cstmt.close(); } } catch (Exception ex) { if (conn != null) try { conn.close(); } catch (SQLException e1) { e1.printStackTrace(); } } if (conn != null) try { conn.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } // 如果没有权限,定位到提示页面。 if (!isCanAccess.equals("1")) { HttpServletResponse out = (HttpServletResponse) response; out.sendRedirect(strContext + "/common/erroraccess.jsp"); return; } else { // 汉字问题 HttpServletRequest httpRequest = (HttpServletRequest) request; httpRequest.setCharacterEncoding(encoding); // chain.doFilter(request, response); // 压缩传输 HttpServletResponse httpResponse = (HttpServletResponse) response; String uri = httpRequest.getRequestURI(); String transferEncoding = getGZIPEncoding((HttpServletRequest) request); if (transferEncoding == null) { setResponseHeader(httpResponse, uri, transferEncoding); chain.doFilter(request, response); } else { if (!uri.endsWith("dd.xml")) // 不处理的有哪些?????? { chain.doFilter(request, response); } else { System.out.println("FrameworkFilter:: Filter handle dd.xml"); setResponseHeader(httpResponse, uri, transferEncoding); httpResponse.setHeader("Content-Encoding", transferEncoding); GZIPEncodableResponse wrappedResponse = new GZIPEncodableResponse((HttpServletResponse) response); chain.doFilter(request, wrappedResponse); wrappedResponse.flush(); } } } // Pass control on to the next filter // chain.doFilter(request, response); }
public GZIPEncodableResponse(HttpServletResponse response) throws IOException { super(response); wrappedOut = new GZIPServletStream(response.getOutputStream()); }