package org.mortbay.jetty.filters import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.mortbay.jetty.HttpHeaderValues; import org.mortbay.jetty.HttpHeaders; /** * This filter enables the "Fast Web View" feature of the Adobe Acrobat plug-in. The filter * should only be executed on .pdf files only. */ public class PDFFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; // Add "Accept-Ranges: bytes" httpResponse.addHeader(HttpHeaders.ACCEPT_RANGES, HttpHeaderValues.BYTES); String ranges = httpRequest.getHeader(HttpHeaders.RANGE); if (ranges != null) { /* * This allows to close the HTTP connection after a byte range has been downloaded * by the Adobe Acrobat plug-in. Otherwise, the browser keeps the connection open until * the connection expires. */ httpResponse.addHeader(HttpHeaders.CONNECTION, HttpHeaderValues.CLOSE); } chain.doFilter(request, response); } public void destroy() { } public void init(FilterConfig arg0) throws ServletException { } }