⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exportfilter.java

📁 exTreme taglib的使用
💻 JAVA
字号:
/* * Copyright 2004 original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *    http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.extremecomponents.table.filter;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;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.HttpServletResponse;import org.apache.avalon.framework.logger.ConsoleLogger;import org.apache.avalon.framework.logger.Logger;import org.apache.commons.lang.StringUtils;import org.apache.fop.apps.Driver;import org.apache.fop.messaging.MessageHandler;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.extremecomponents.table.handler.ExportHandler;import org.extremecomponents.util.MimeUtils;import org.xml.sax.InputSource;/** * Filter to handle the incoming FOP requests to generate the PDF document. *  *  * <filter><filter-name>ExportFilter </filter-name> <display-name>ExportFilter * </display-name> <filter-class>org.extremecomponents.table.filter.ExportFilter * </filter-class> </filter> <filter-mapping><filter-name>ExportFilter * </filter-name> <url-pattern>* </url-pattern> </filter-mapping> *  * <!-- Action Servlet Configuration --> <filter-mapping> * <filter-name>ExportFilter </filter-name> <servlet-name>eXtremeTest * </servlet-name> </filter-mapping> *  * @author jeff johnston */public class ExportFilter implements Filter {    private Logger log = null;    public void init(FilterConfig filterConfig)            throws ServletException {    }    public void destroy() {    }    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)            throws IOException, ServletException {        String invokeExport = null;        String exportName = null;        if (ExportFilterUtils.isExportMode(request)) {            invokeExport = ExportFilterUtils.findInvokeExport(request);            exportName = ExportFilterUtils.findExportName(request);            GenericResponseWrapper wrapper = new GenericResponseWrapper((HttpServletResponse) response);            chain.doFilter(request, wrapper);        } else {            chain.doFilter(request, response);        }        if (StringUtils.isNotBlank(invokeExport)) {            setResponseHeaders((HttpServletResponse) response, exportName);            try {                if (exportName.endsWith(ExportHandler.PDF))                    handlePDF(request, response);                else if (exportName.endsWith(ExportHandler.XLS))                    handleXLS(request, response);                else if (exportName.endsWith(ExportHandler.TXT) || exportName.endsWith(ExportHandler.CSV))                    handleTXT(request, response);            } catch (Exception e) {                e.printStackTrace();            }        }    }    protected void handleXLS(ServletRequest request, ServletResponse response)            throws Exception {        HSSFWorkbook wb = (HSSFWorkbook) request.getAttribute(ExportHandler.EXPORT_DATA);        if ( wb != null ) {            wb.write(response.getOutputStream());            response.getOutputStream().flush();            response.getOutputStream().close();        }    }    protected void handlePDF(ServletRequest request, ServletResponse response)            throws Exception {        String output = (String) request.getAttribute(ExportHandler.EXPORT_DATA);        if ( output != null ) {            InputStream is = new ByteArrayInputStream(output.getBytes("UTF-8"));            renderFO(new InputSource(is), (HttpServletResponse) response);        }    }    protected void handleTXT(ServletRequest request, ServletResponse response)            throws Exception {        String output = (String) request.getAttribute(ExportHandler.EXPORT_DATA);        if ( output != null ) {            byte[] content = output.getBytes();            response.setContentLength(content.length);            response.getOutputStream().write(content);            response.getOutputStream().flush();            response.getOutputStream().close();        }    }    protected void renderFO(InputSource foFile, HttpServletResponse response)            throws Exception {        ByteArrayOutputStream out = new ByteArrayOutputStream();        Driver driver = new Driver(foFile, out);        if (log == null) {            log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);            MessageHandler.setScreenLogger(log);        }        driver.setLogger(log);        driver.setRenderer(Driver.RENDER_PDF);        driver.run();        byte[] content = out.toByteArray();        response.setContentLength(content.length);        response.getOutputStream().write(content);        response.getOutputStream().flush();        response.getOutputStream().close();    }    protected void setResponseHeaders(HttpServletResponse response, String exportName) {        String mimeType = MimeUtils.getFileMimeType(exportName);        if (StringUtils.isNotBlank(mimeType)) {            response.setContentType(mimeType);        }        response.setHeader("Content-Disposition", "attachment;filename=\"" + exportName + "\"");        response.setHeader("Pragma", "public");        response.setDateHeader("Expires", (System.currentTimeMillis() + 1000));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -