Mega Code Archive

 
Categories / Java / Servlets
 

Send filter

package com.rntsoft; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; public class SendFilter implements Filter {   private final static String PDF_DIR = "d:\\book\\rntsoft";   private final static String PDF_CONTENT_TYPE = "application/pdf";   private FilterConfig config;   /** Creates new SessionFilter */   public SendFilter() {   }   public void init(FilterConfig filterConfig) throws ServletException {     System.out.println("Instance created of " + getClass().getName());     this.config = filterConfig;   }   public void doFilter(ServletRequest request, ServletResponse response,       FilterChain chain) throws java.io.IOException, ServletException {     //get the file name from the 'file' parameter     String fileName = request.getParameter("file");     if (fileName == null || fileName.equals(""))       throw new ServletException(           "Invalid or non-existent file parameter in SendPdf component.");     if (fileName.indexOf(".pdf") == -1)       fileName = fileName + ".pdf";     ServletOutputStream stream = null;     BufferedInputStream buf = null;     HttpServletResponse httpResp = null;     try {       httpResp = (HttpServletResponse) response;       stream = httpResp.getOutputStream();       File pdf = new File(PDF_DIR + "/" + fileName);       //set response headers       httpResp.setContentType(PDF_CONTENT_TYPE);       httpResp.addHeader("Content-Disposition", "attachment; filename="           + fileName);       httpResp.setContentLength((int) pdf.length());       FileInputStream input = new FileInputStream(pdf);       buf = new BufferedInputStream(input);       int readBytes = 0;       //read from the file; write to the ServletOutputStream       while ((readBytes = buf.read()) != -1)         stream.write(readBytes);     } catch (Exception ioe) {       //  throw new ServletException(ioe.getMessage());       System.out.println(ioe.getMessage());     } finally {       if (buf != null)         buf.close();       if (stream != null) {         stream.flush();         //stream.close();       }     }//end finally     chain.doFilter(request, httpResp);   }   public void destroy() {     /*      * called before the Filter instance is removed from service by the web      * container      */   } }