接上文。。
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page
import="java.io.*,
net.sf.jasperreports.engine.*,
net.sf.jasperreports.engine.util.*,
java.util.*,
java.sql.*,
net.sf.jasperreports.engine.export.*,
net.sf.jasperreports.j2ee.servlets.*,
com.lowagie.text.*,
net.sf.jasperreports.engine.data.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
/*
1,静态的数据 可以存在 parameters 中
2,动态循环的数据 存在 map 数据源中 reportRows
*/
File reportFile = new File(application.getRealPath("jasper/report20.jasper"));
//JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile);
//------------------数据库来的对应的数据----------------------------------------------------------
//静态数据。
Map<String,Object> parameters = getStaticdata();
//动态数据源。
ArrayList reportRows2 = getData();
//创建动态的数据源。
JRDataSource dataSource = new JRMapCollectionDataSource(reportRows2);
//(JasperReport对象/由指定.jasper文件生成,静态的数据--表名/静态列名等,动态数据源)
/*
下面的这个方法要三个参数,后面2个,是指数据源,
没有的话 第二个可以为 null; 第三个 可以写一个空的数据源
(jasperReport, null, new JREmptyDataSource())
*/
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
//用于处理图片显示问题。
session.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath()+"/servlets/image?image=");
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
//pdf
/* JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
*/
exporter.exportReport();
out.flush();
//conn.close();
%>
现在就基本完成了。里面也可以加图片,我也在网上搜了些方法去解决。没有大量测试。
小白一个,希望大家多多交流。下面是效果:
这里有我的demo,需要可以去下载
http://download.csdn.net/detail/qinzuoguo/9800029
启动服务器后直接请求里面的jsp页面即可。