package mypackage.jasperreport;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
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.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;
public class Print extends HttpServlet {
/**
* Constructor of the object.
*/
public Print() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
performTask(request,response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
performTask(request,response);
}
/**
* 执行打印任务
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void performTask(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String jrxml=this.getServletContext().getRealPath("/userInfo/userInfo.jrxml");
String jasper=this.getServletContext().getRealPath("/userInfo/userInfo.jasper");
OutputStream out = response.getOutputStream();
//将*.jrxml文件编译成*.jasper文件
try {
JasperCompileManager.compileReportToFile(jrxml);
//定义表头参数
Map parameters=new HashMap();
parameters.put("caption", "学生信息管理");
parameters.put("userCodeTitle", "编号");
parameters.put("userNameTitle", "姓名");
parameters.put("sexTitle", "性别");
parameters.put("ageTitle", "年龄");
parameters.put("telTitle", "电话");
parameters.put("addressTitle", "地址");
//定义JasperFillManager的fillReport方法需要的dataSource
UserInfoDAO userDAO=new UserInfoDAO();
List<UserInfo> reportList=userDAO.getAllUserInfo();
JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(reportList);
//定义JasperPrint对象
JasperPrint jasperPrint=JasperFillManager.fillReport(jasper,parameters,dataSource);
response.setContentType("application/pdf");
JRPdfExporter exporter=new JRPdfExporter();
request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
List jasperPrintList=BaseHttpServlet.getJasperPrintList(request);
exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(out!=null){
out.close();
}
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}
分享到:
相关推荐
1. Java Development Kit (JDK):因为JasperReports是用Java编写的,所以需要一个Java运行环境。 2. iReport:这是一个基于JasperReports的报表设计工具,用于创建JRXML报表模板。 3. JasperReports Library:包含...
- **子报表与嵌套报表**:JasperReports支持在一个主报表中嵌入多个子报表,这种层次结构的设计可以用于展示复杂的数据关系。 - **图表与图形**:JasperReports提供了丰富的图表组件,如柱状图、折线图、饼图等,...
### JasperReports与iReport制作PDF报表 #### 一、引言 在当今信息化时代,数据可视化及报告生成已经成为企业日常运营中的重要组成部分。无论是业务分析、财务报告还是客户服务,高质量的报表都能帮助组织更好地...
标题 "jasperreports打印word格式报表的问题" 涉及的是使用JasperReports库生成并打印Word(.doc或.docx)格式报表时遇到的技术挑战。JasperReports是一款开源Java库,它允许开发者创建、设计和导出各种类型的报告,...
然后,在Spring-Boot应用中,我们需要创建一个服务或者控制器来处理报表的生成和导出。使用JasperPrint对象加载JRXML文件,并通过JasperExportManager导出成不同的格式。以下是一个简单的示例: ```java import ...
父子报表是JasperReports的一个重要特性,它允许在一个主报告中嵌套一个或多个子报告。子报告通常用于显示与主报告相关但需要独立设计的详细信息。在本例中,`report1.jrxml`可能作为父报表,而`report1_subreport2...
3. **编译报表模板**:将.JRXML文件编译成.JASPER文件,这是一个二进制格式,JasperReports引擎可以直接执行。编译过程可以使用JasperCompileManager类完成,也可以在iReport中直接操作。 4. **填充报表**:在运行...
1. **iReport**:这是一个基于Java的报表设计工具,它允许开发者通过直观的用户界面创建、编辑和管理JasperReports报表模板。iReport支持多种数据源,包括数据库、CSV、XML等,并提供丰富的图表类型和样式选项。 2....
JasperReports 是一款开源的报表工具,用于设计和生成各种类型的报表,包括 PDF、Excel、XML 等格式。在使用 JasperReports 生成报表时,你需要遵循以下详细流程: 1. **新建报表**: - 打开 JasperReports 设计...
JasperReports使用一个基于XML的报告设计语言(JasperReport Design)来创建报表模板。开发者可以在这些模板中添加文本、图像、表格、图表等各种元素,并设置样式、字体、颜色等格式。设计完成后,模板可以保存为`....
JasperReports则是一个用于生成报表的Java类库,它提供了一套完整的API,允许开发者在应用程序中集成报表功能。JasperReports支持多种输出格式,如PDF、HTML、Excel、CSV等,可以根据需求灵活选择。此外,它还具有...
JasperReports是一个强大的开源Java报表库,主要用于帮助Java开发者在他们的应用程序中集成报表功能。它不是一个独立的应用,而是需要被包含在Java应用的CLASSPATH中,以作为一个库被调用。JasperReports遵循Lesser ...
当XML文档通过验证,JasperReports引擎可以将其编译成“已编译”的报表设计,这通常是一个.JRXML文件,用于后续的数据填充和渲染。 报表设计的编译过程是必要的,因为它将XML模板转换为引擎可以直接执行的格式。...
- 如何将PDF格式的报表结果直接输出到打印机。 #### 5. 参考信息及其他 - **变量、参数及字段引用**: - 提供iReport中变量、参数及字段的引用格式。 - **作者联系方式**: - 联系作者获取更多支持或反馈。 - *...
JasperReports是一个开源的Java报表库,它允许开发者创建复杂的数据驱动报表,并将其集成到Java应用程序中。JasperReports支持多种数据源,包括JDBC、XML、CSV等,能够生成PDF、HTML、Excel等多种格式的报表。此外,...
《JasperReports ireports制作PDF报表.pdf》这本书可能专门针对使用iReport设计PDF报表的技巧。PDF报表是一种常见且可打印的格式,适合企业内部的正式报告。书中的内容可能包括如何优化PDF输出,调整字体、页眉和...
iReport是JasperReports的图形化设计工具,用于创建复杂的报表布局,而JasperReports本身则是一个功能丰富的Java库,用于生成静态和动态的报表。 在报表开发的世界里,JasperReports以其灵活性和可扩展性脱颖而出。...
本程序算不上大项目,是本人自己做的。只是完成了大项目里的某个基本技术,如:整合SSH2 整合jasperReports生成pdf报表。用的人请根据映射文件在oracle里建一个用户表就行了。改一下配置文件里的数据库密码。