构造我们的JavaBean:(get,set方法省略,属性名称要与报表的字段名)
public class Person {
private String person_Id;
private String person_name;
private String person_age;
private String person_address;
}
构造我们的Service层:
public class PersonService {
public List<Person> getAllPerson() {
List<Person> perList = new ArrayList<Person>();
perList.add(new Person("101", "小博", "22", "湖北"));
perList.add(new Person("102", "张三", "21", "湖南"));
perList.add(new Person("103", "李四", "23", "江苏"));
perList.add(new Person("104", "王五", "22", "上海"));
perList.add(new Person("101", "小博", "22", "湖北"));
return perList;
}
}
构造我们的Servlet:
public class JRHTMLServlet 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;
response.setCharacterEncoding("utf-8");
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(jasperFile);
List<Person> personList = new PersonService().getAllPerson();
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,
new JRBeanCollectionDataSource(personList));
} catch (JRException e) {
e.printStackTrace();
}
if(null != jasperPrint){
JRHtmlExporter exporter = new JRHtmlExporter();
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"image?image=");
try {
exporter.exportReport();
} catch (JRException e) {
e.printStackTrace();
}
}
}
}
web.xml配置:
<servlet>
<servlet-name>JRHTMLServlet</servlet-name>
<servlet-class>com.mengya.servlet.JRHTMLServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JRHTMLServlet</servlet-name>
<url-pattern>/JRHTMLServlet</url-pattern>
</servlet-mapping>
在web.xml还要配置JasperReport的自带的一个Serlvet,不然显示报表内空时样式不好看。
<!-- JasperReport包中自带的Servlet,用来做为HTML形式显示报表的时候报表的图片,要在这里配置上,图片在jasperReport包中 -->
<servlet>
<servlet-name>JasperReportImageServlet</servlet-name>
<servlet-class>
net.sf.jasperreports.j2ee.servlets.ImageServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JasperReportImageServlet</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>
这里的servlet路径要与上面我写的那个serlvet中的JRHtmlExporterParameter.IMAGES_URI值一样!
页面调用:
<a href="JRHTMLServlet">Servlet中生成HTML</a>
不通过servlet直接通过jsp出生的方式如下:
<a href="jsp/viewer.jsp">JSP中生成报表显示</a>
viewer.jsp内空如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="com.mengya.JRDataSource.PersonDataSource " %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.util.*" %>
<%@ page import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="net.sf.jasperreports.j2ee.servlets.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.mengya.bean.Person" %>
<%@ page import="com.mengya.service.PersonService" %>
<%@ page import="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource" %>
<%
JasperPrint jasperPrint = (JasperPrint)session.getAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE);
if (request.getParameter("reload") != null || jasperPrint == null)
{
File reportFile = new File(application.getRealPath("/jasper/preson.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("File preson.jasper not found. The report design must be compiled first.");
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
Map parameters = new HashMap();
parameters.put("year", "2009");
parameters.put("unit_mc", "武汉XX科技有限公司");
List<Person> personList = new PersonService().getAllPerson();
jasperPrint =
JasperFillManager.fillReport(
jasperReport,
parameters,
new JRBeanCollectionDataSource(personList)
);
session.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
}
JRHtmlExporter exporter = new JRHtmlExporter();
int pageIndex = 0;
int lastPageIndex = 0;
if (jasperPrint.getPages() != null)
{
lastPageIndex = jasperPrint.getPages().size() - 1;
}
String pageStr = request.getParameter("page");
try
{
pageIndex = Integer.parseInt(pageStr);
}
catch(Exception e)
{
}
if (pageIndex < 0)
{
pageIndex = 0;
}
if (pageIndex > lastPageIndex)
{
pageIndex = lastPageIndex;
}
StringBuffer sbuffer = new StringBuffer();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, sbuffer);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../image?image=");
exporter.setParameter(JRExporterParameter.PAGE_INDEX, new Integer(pageIndex));
exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "");
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");
exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");
exporter.exportReport();
%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<head>
<style type="text/css">
a {text-decoration: none}
</style>
</head>
<body text="#000000" link="#000000" alink="#000000" vlink="#000000">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="50%"> </td>
<td align="left">
<hr size="1" color="#000000">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><a href="viewer.jsp?reload=true"><img src="../images/reload.GIF" border="0"></a></td>
<td> </td>
<%
if (pageIndex > 0)
{
%>
<td><a href="viewer.jsp?page=0"><img src="../images/first.GIF" border="0"></a></td>
<td><a href="viewer.jsp?page=<%=pageIndex - 1%>"><img src="../images/previous.GIF" border="0"></a></td>
<%
}
else
{
%>
<td><img src="../images/first_grey.GIF" border="0"></td>
<td><img src="../images/previous_grey.GIF" border="0"></td>
<%
}
if (pageIndex < lastPageIndex)
{
%>
<td><a href="viewer.jsp?page=<%=pageIndex + 1%>"><img src="../images/next.GIF" border="0"></a></td>
<td><a href="viewer.jsp?page=<%=lastPageIndex%>"><img src="../images/last.GIF" border="0"></a></td>
<%
}
else
{
%>
<td><img src="../images/next_grey.GIF" border="0"></td>
<td><img src="../images/last_grey.GIF" border="0"></td>
<%
}
%>
<td width="100%"> </td>
</tr>
</table>
<hr size="1" color="#000000">
</td>
<td width="50%"> </td>
</tr>
<tr>
<td width="50%"> </td>
<td align="center">
<%=sbuffer.toString()%>
</td>
<td width="50%"> </td>
</tr>
</table>
</body>
</html>
分享到:
相关推荐
标题"JasperReport+Servlet Web应用之:打印"表明这是一个关于如何在基于Servlet的Web应用程序中使用JasperReport进行报表打印的教程。JasperReport是一款强大的开源报表工具,它允许开发者创建复杂的报表并将其集成...
**JasperReport与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...
在Web环境中显示JasperReport生成的报表通常有两种方法: 1. **直接嵌入到Web页面**:通过将报表以图片或HTML的形式直接嵌入到Web页面中实现。 2. **通过Servlet调用**:创建一个Servlet处理报表请求,动态生成报表...
在"整合Struts2+JasperReport Web报表应用示例"中,我们将探讨如何将这两个框架结合起来,为Web应用提供动态数据可视化的能力。首先,我们需要理解Struts2的核心概念,如Action、Interceptor(拦截器)和Result。...
#### 第三部分:使用 JasperReport 作为报表控件开发 Web 报表应用 在 Web 应用程序中集成 JasperReport,主要涉及以下几个步骤: 1. **部署**: 将 JasperReport 的 JAR 文件添加到 Web 应用程序的类路径中。 2. *...
JasperReport是一款开源的报告生成库,它允许开发者创建复杂的、可定制的打印和Web报表。JasperReport支持多种数据源,包括数据库连接、CSV文件、XML数据等,可以生成PDF、HTML、Excel、CSV等多种格式的报表。其强大...
【iReport与Jasperreport整合开发Web报表向导】 iReport和Jasperreport是Java世界中广泛使用的报表设计工具和报表引擎,它们为开发者提供了强大的报表设计和展示能力。本教程将详细介绍如何利用这两个工具进行Web...
标题中的“jasperreport报表模板预览 applet与servlet通信”涉及到的是Java开发中的一种常见应用场景,即使用JasperReports库创建报表,并通过Applet和Servlet进行交互以实现报表的预览。JasperReports是一个强大的...
### Jasperreport与iReport整合开发Web报表学习笔记 #### 一、环境配置 为了能够顺利地使用Jasperreport和iReport进行报表设计与开发,首先需要确保开发环境配置正确。 1. **Java JDK环境**: 确保已安装最新版的...
在IT行业中,报表工具是数据分析和业务展示的重要组成部分。`iReport`和`JasperReport`是两个在Java领域广泛...通过学习和实践这个压缩包中的内容,你可以提升在Web报表开发方面的技能,更好地满足业务数据展示的需求。
【jasperreport】 JasperReport是一个开源的...通过这个实例,你可以深入理解JasperReport、MyEclipse和Struts2的结合使用,提高你在企业级Web应用开发中的能力。记得在实践中不断尝试和探索,以便更好地掌握这些技术。
在Spring MVC中集成JasperReport,能够方便地在Web应用中展示复杂的数据报表,同时解决中文显示和国际化的问题,使得报表能够适应多语言环境。 在Spring MVC项目中集成JasperReport,首先需要在`pom.xml`文件中添加...
- **报表工具的使用**:介绍如何使用 Ireport 和 JasperReport 等报表工具来生成各种类型的报表,满足企业级应用的需求。 #### 六、团队协作与分层技术 - **团队开发**:通过分组开发的方式,培养学生的团队协作...