读书人

JasperReport+Servlet Web使用之:导P

发布时间: 2012-11-22 00:16:41 作者: rapoo

JasperReport+Servlet Web应用之:导PDF,Excel,Rtf文件

第一,二,三,四步请参照:JasperReport+Servlet Web应用之:打印

导PDF文件的Servlet如下:

package com.mengya.servlet;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.JRExporterParameter;import net.sf.jasperreports.engine.JasperFillManager;import net.sf.jasperreports.engine.JasperPrint;import net.sf.jasperreports.engine.JasperReport;import net.sf.jasperreports.engine.export.JRPdfExporter;import net.sf.jasperreports.engine.util.FileBufferedOutputStream;import net.sf.jasperreports.engine.util.JRLoader;import com.mengya.JRDataSource.PersonDataSource;public class JRPDFServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletContext servletContext = this.getServletConfig().getServletContext();File jasperFile = new File(servletContext.getRealPath("/jasper/preson.jasper"));Map<String, String> parameters = new HashMap<String, String>();parameters.put("year", "2009");parameters.put("unit_mc", "武汉XX科技有限公司");JasperPrint jasperPrint = null;try {JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile.getPath());jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, new PersonDataSource());} catch (JRException e) {e.printStackTrace();}if (null != jasperPrint) {FileBufferedOutputStream fbos = new FileBufferedOutputStream();JRPdfExporter exporter = new JRPdfExporter();exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos);exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);try {exporter.exportReport();fbos.close();if (fbos.size() > 0) {response.setContentType("application/pdf");response.setContentLength(fbos.size());ServletOutputStream ouputStream = response.getOutputStream();try {fbos.writeData(ouputStream);fbos.dispose();ouputStream.flush();} finally {if (null != ouputStream) {ouputStream.close();}}}} catch (JRException e1) {e1.printStackTrace();}finally{if(null !=fbos){fbos.close();fbos.dispose();}}}}}

?

导Excel文件的Servlet如下:

public class JRJXLServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletContext context = this.getServletConfig().getServletContext();File jasperFile = new File(context.getRealPath("/jasper/preson.jasper"));Map<String, String> parameters = new HashMap<String, String>();parameters.put("year", "2009");parameters.put("unit_mc", "武汉XX科技有限公司");JasperPrint jasperPrint = null;try {JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,new PersonDataSource());} catch (JRException e) {e.printStackTrace();}if(null != jasperPrint){FileBufferedOutputStream fbos = new FileBufferedOutputStream();JRXlsAbstractExporter exporter = new JExcelApiExporter();exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos);exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);try {exporter.exportReport();fbos.close();if (fbos.size() > 0) {response.setContentType("application/exl");response.setHeader("Content-Disposition", "inline; filename=\"persons.xls\"");response.setContentLength(fbos.size());ServletOutputStream ouputStream = response.getOutputStream();try {fbos.writeData(ouputStream);fbos.dispose();ouputStream.flush();} finally {if (null != ouputStream) {ouputStream.close();}}}} catch (JRException e1) {e1.printStackTrace();}finally{if(null !=fbos){fbos.close();fbos.dispose();}}}}}

?

导rtf文件的servlet如下:

public class JRRTFServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletContext context = this.getServletConfig().getServletContext();File jasperFile = new File(context.getRealPath("/jasper/preson.jasper"));Map<String, String> parameters = new HashMap<String, String>();parameters.put("year", "2009");parameters.put("unit_mc", "武汉XX科技有限公司");JasperPrint jasperPrint = null;try {JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,new PersonDataSource());} catch (JRException e) {e.printStackTrace();}if(null != jasperPrint){FileBufferedOutputStream fbos = new FileBufferedOutputStream();JRRtfExporter exporter = new JRRtfExporter();exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos);exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);try {exporter.exportReport();fbos.close();if (fbos.size() > 0) {response.setContentType("application/rtf");response.setHeader("Content-Disposition", "inline; filename=\"person.rtf\"");response.setContentLength(fbos.size());ServletOutputStream ouputStream = response.getOutputStream();try {fbos.writeData(ouputStream);fbos.dispose();ouputStream.flush();} finally {if (null != ouputStream) {ouputStream.close();}}}} catch (JRException e1) {e1.printStackTrace();}finally{if(null !=fbos){fbos.close();fbos.dispose();}}}}}

?

该Servlet在web.xml配置如下:

<servlet><servlet-name>JRPDFServlet</servlet-name><servlet-class>com.mengya.servlet.JRPDFServlet</servlet-class></servlet><servlet><servlet-name>JREXLServlet</servlet-name><servlet-class>com.mengya.servlet.JREXLServlet</servlet-class></servlet><servlet><servlet-name>JRRTFServlet</servlet-name><servlet-class>com.mengya.servlet.JRRTFServlet</servlet-class></servlet><servlet-mapping><servlet-name>JRPDFServlet</servlet-name><url-pattern>/JRPDFServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>JREXLServlet</servlet-name><url-pattern>/JREXLServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>JRRTFServlet</servlet-name><url-pattern>/JRRTFServlet</url-pattern></servlet-mapping>

?页面调用如下:

h3><a href="JRPDFServlet">导出PDF文件</a></h3>  <br>  <h3><a href="JREXLServlet">导出EXL文件</a></h3>  <br>  <h3><a href="JRRTFServlet">导出RTF文件</a></h3>  <br>

??

1 楼 speed_guo 2010-04-23 多谢,正在学习这个 2 楼 csxthui123 2011-09-26 大虾! 有个问题请教一下。 如愿意请加qq: 463150644 . 感激不尽!

读书人网 >Web前端

热点推荐