- 浏览: 990168 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
打印预览与打印的准备工作是一样的,第一,二,三,四,五步请参照:JasperReport+Servlet Web应用之:打印
不同之处在于:我们同样要写一个预览的applet如下:
import java.io.PrintWriter; import java.io.StringWriter; import java.net.URL; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperPrintManager; import net.sf.jasperreports.engine.util.JRLoader; public class JRViewApplet extends javax.swing.JApplet { private URL url = null; private JasperPrint jasperPrint = null; public JRViewApplet() { } public void init() { String strUrl = getParameter("REPORT_URL"); if (strUrl != null) { try { url = new URL(getCodeBase(), strUrl); } catch (Exception e) { StringWriter swriter = new StringWriter(); PrintWriter pwriter = new PrintWriter(swriter); e.printStackTrace(pwriter); JOptionPane.showMessageDialog(this, swriter.toString()); } } else { JOptionPane.showMessageDialog(this, "Source URL not specified"); } } @Override public void start() { // initComponents(); if (url != null) { try { if (jasperPrint == null) { jasperPrint = (JasperPrint) JRLoader.loadObject(url); } if (jasperPrint != null) { ViewerFrame viewerFrame = new ViewerFrame(this .getAppletContext(), jasperPrint); viewerFrame.show(); } else { JOptionPane.showMessageDialog(this, "空报表!"); } } catch (Exception e) { StringWriter swriter = new StringWriter(); PrintWriter pwriter = new PrintWriter(swriter); e.printStackTrace(pwriter); JOptionPane.showMessageDialog(this, swriter.toString()); } } else { JOptionPane.showMessageDialog(this, "Source URL not specified"); } } private void initComponents() { pnlMain = new javax.swing.JPanel(); btnPrint = new javax.swing.JButton(); btnView = new javax.swing.JButton(); // btnPrint.setText("打印报表"); // btnPrint.addActionListener(new java.awt.event.ActionListener() { // public void actionPerformed(java.awt.event.ActionEvent evt) { // btnPrintActionPerformed(evt); // } // }); // pnlMain.add(btnPrint); btnView.setText("预览报表"); btnView.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnViewActionPerformed(evt); } }); pnlMain.add(btnView); getContentPane().add(pnlMain, java.awt.BorderLayout.WEST); } /** * 预览报表 * * @param evt */ protected void btnViewActionPerformed(java.awt.event.ActionEvent evt) { if (url != null) { try { if (jasperPrint == null) { jasperPrint = (JasperPrint) JRLoader.loadObject(url); } if (jasperPrint != null) { ViewerFrame viewerFrame = new ViewerFrame(this .getAppletContext(), jasperPrint); viewerFrame.show(); } else { JOptionPane.showMessageDialog(this, "空报表!"); } } catch (Exception e) { StringWriter swriter = new StringWriter(); PrintWriter pwriter = new PrintWriter(swriter); e.printStackTrace(pwriter); JOptionPane.showMessageDialog(this, swriter.toString()); } } else { JOptionPane.showMessageDialog(this, "Source URL not specified"); } } /** * 打印报表 * * @param evt */ protected void btnPrintActionPerformed(java.awt.event.ActionEvent evt) { if (url != null) { if (jasperPrint == null) { try { jasperPrint = (JasperPrint) JRLoader.loadObject(url); } catch (Exception e) { StringWriter swriter = new StringWriter(); PrintWriter pwriter = new PrintWriter(swriter); e.printStackTrace(pwriter); JOptionPane.showMessageDialog(this, swriter.toString()); } } if (jasperPrint != null) { final JasperPrint print = jasperPrint; Thread thread = new Thread(new Runnable() { public void run() { try { JasperPrintManager.printReport(print, true); } catch (Exception e) { StringWriter swriter = new StringWriter(); PrintWriter pwriter = new PrintWriter(swriter); e.printStackTrace(pwriter); JOptionPane.showMessageDialog(null, swriter .toString()); } } }); thread.start(); } else { JOptionPane.showMessageDialog(this, "空报表!"); } } else { JOptionPane.showMessageDialog(this, "Source URL not specified"); } } private javax.swing.JPanel pnlMain; private javax.swing.JButton btnView; private javax.swing.JButton btnPrint; }
它还需要两个辅助类:如下:
public class JRViewerPlus extends JRViewer { protected JButton btnPlus = new javax.swing.JButton(); public JRViewerPlus(JasperPrint jrPrint) throws JRException { super(jrPrint); tlbToolBar.remove(btnSave); tlbToolBar.remove(btnReload); btnPlus = new javax.swing.JButton(); btnPlus.setToolTipText("Plus..."); btnPlus.setText("Plus..."); btnPlus.setPreferredSize(new java.awt.Dimension(80, 23)); btnPlus.setMaximumSize(new java.awt.Dimension(80, 23)); btnPlus.setMinimumSize(new java.awt.Dimension(80, 23)); btnPlus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnPlusActionPerformed(evt); } }); tlbToolBar.add(btnPlus, 0); } protected void setZooms() { this.zooms = new int[] { 33, 66, 100, 133, 166, 200, 233 }; this.defaultZoomIndex = 2; } protected void btnPlusActionPerformed(java.awt.event.ActionEvent evt) { JOptionPane .showMessageDialog( this, "I just wanted to let you know that you can extend the JRViewer to customize it.\n The button you have pushed was added this way."); } }
public class ViewerFrame extends javax.swing.JFrame implements JRHyperlinkListener { private AppletContext appletContext = null; public ViewerFrame(AppletContext appletContext, JasperPrint jasperPrint) throws JRException { initComponents(); this.appletContext = appletContext; JRViewerPlus viewer = new JRViewerPlus(jasperPrint); viewer.addHyperlinkListener(this); this.pnlMain.add(viewer, BorderLayout.CENTER); } public void gotoHyperlink(JRPrintHyperlink hyperlink) { switch (hyperlink.getHyperlinkType()) { case JRHyperlink.HYPERLINK_TYPE_REFERENCE: { try { this.appletContext.showDocument(new URL(hyperlink .getHyperlinkReference()), "_blank"); } catch (MalformedURLException e) { JOptionPane.showMessageDialog(this, e.getMessage()); } break; } case JRHyperlink.HYPERLINK_TYPE_LOCAL_ANCHOR: case JRHyperlink.HYPERLINK_TYPE_LOCAL_PAGE: { break; } case JRHyperlink.HYPERLINK_TYPE_REMOTE_ANCHOR: case JRHyperlink.HYPERLINK_TYPE_REMOTE_PAGE: { JOptionPane .showMessageDialog(this, "Implement your own JRHyperlinkListener to manage this type of event."); break; } case JRHyperlink.HYPERLINK_TYPE_NONE: default: { break; } } } private void initComponents() { pnlMain = new javax.swing.JPanel(); setTitle("JasperViewer"); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); pnlMain.setLayout(new java.awt.BorderLayout()); getContentPane().add(pnlMain, java.awt.BorderLayout.CENTER); pack(); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit() .getScreenSize(); setSize(new java.awt.Dimension(400, 300)); setLocation((screenSize.width - 400) / 2, (screenSize.height - 300) / 2); } private javax.swing.JPanel pnlMain; }
说明:这三个类可以在jasperReport自带的demo中获得,只需做小小的改动就可以了。
同样还需要这三个类的编译后的class文件放到WebRoot/applet下面。将jasperreports-3.5.2-applet.jar,commons-logging-1.0.2.jar,commons-collections-2.1.jar三个包加进去。该applet所需要调用的servlet和servlet配置请见:http://zmx.iteye.com/admin/blogs/572812
页面调用的applet写法或js动态产生applet如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>打印窗口</title> </head> <script language="javascript"> <!-- function openView() { var url = "../JRPrintServlet"; document.write('<APPLET ID="JrPrt" CODE = "JRViewApplet.class" CODEBASE = "applets" ARCHIVE = "jasperreports-3.5.2-applet.jar,commons-logging-1.0.2.jar,commons-collections-2.1.jar" WIDTH = "0" HEIGHT = "0">'); document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">'); document.write('<PARAM NAME = "scriptable" VALUE="false">'); document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">'); document.write('</APPLET>'); } --> </script> <body bgcolor="#FFFFFF"> <input type="button" value="测试预览" onclick="openView();"> <!-- <APPLET CODE="JRViewApplet.class" CODEBASE = "applets" ARCHIVE = "jasperreports-3.5.2-applet.jar,commons-logging-1.0.2.jar,commons-collections-2.1.jar" WIDTH="300" HEIGHT="40"> </XMP> <PARAM NAME=CODE VALUE="JRViewApplet.class"> <PARAM NAME = ARCHIVE VALUE = "jasperreports-3.5.2-applet.jar,commons-logging-1.0.2.jar,commons-collections-2.1.jar" > <PARAM NAME="type" VALUE="application/x-java-applet;version=1.2.2"> <PARAM NAME="scriptable" VALUE="false"> <PARAM NAME="REPORT_URL" VALUE="../JRPrintServlet"> </APPLET> --> </body> </html>
- MyJasperReportWebPrint.rar (528.4 KB)
- 下载次数: 513
- lib2.rar (5.7 MB)
- 下载次数: 551
- lib1.rar (6.6 MB)
- 下载次数: 665
评论
4 楼
hslh22
2015-03-11
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/viewer.jsp at line 18
楼主少了包
commons-logging-1.1.1.jar
在网上下一个jar包添加进项目就可以解决了
楼主少了包
commons-logging-1.1.1.jar
在网上下一个jar包添加进项目就可以解决了
3 楼
xietingzi123456
2012-02-16
下载了项目,部署了,跑了, 但是org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/viewer.jsp at line 18
15: if (!reportFile.exists())
16: throw new JRRuntimeException("File preson.jasper not found. The report design must be compiled first.");
17:
18: JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
19:
20: Map parameters = new HashMap();
21: parameters.put("year", "2009");
报这个错啊。 是不要要加什么文件?
15: if (!reportFile.exists())
16: throw new JRRuntimeException("File preson.jasper not found. The report design must be compiled first.");
17:
18: JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
19:
20: Map parameters = new HashMap();
21: parameters.put("year", "2009");
报这个错啊。 是不要要加什么文件?
2 楼
guzhiwxb
2011-10-18
如果是List<JasperPrint> 如何打印预览
1 楼
veteran123
2010-07-26
正需要,研究一下
发表评论
-
jasperReport实现动态列打印
2010-03-23 19:35 5703public ActionResult projectPrin ... -
使用JavaBean构造JasperReport子报表
2010-01-27 14:05 10409使用JavaBean作为数据源构造JasperReport子报 ... -
JasperReport + Servlet Web应用之:HTML显示报表内容
2010-01-26 17:18 10027构造我们的JavaBean:(get,set方法省略,属性名称 ... -
JasperReport+Servlet Web应用之:导PDF,Excel,Rtf文件
2010-01-17 19:18 4291第一,二,三,四步请参照:JasperReport+Servl ... -
JasperReport+Servlet Web应用之:打印
2010-01-17 18:04 10071关于JasperReport的简介大家可以去google上去查 ...
相关推荐
本文将深入探讨如何在Servlet Web应用中利用JasperReport进行报表的生成与打印,同时会提及必要的库文件及其作用。 JasperReport是一个Java库,它允许开发者设计复杂的报表,并且支持多种输出格式,如PDF、HTML、...
在Web应用中,Servlet常用于接收和处理用户的请求,而JasperReport则可以作为Servlet的后端服务,生成报表内容。 要实现HTML显示报表,我们需要完成以下步骤: 1. **报表模板设计**:使用JasperReport提供的设计...
JasperReport是一款开源的报告生成库,它允许开发者创建复杂的、可定制的打印和Web报表。JasperReport支持多种数据源,包括数据库连接、CSV文件、XML数据等,可以生成PDF、HTML、Excel、CSV等多种格式的报表。其强大...
标题中的“jasperreport报表模板预览 applet与servlet通信”揭示了本文将要讨论的重点,即如何在Java环境中使用JasperReport库创建报表模板,并通过Applet和Servlet进行数据交互来实现预览功能。JasperReport是一个...
【jasperreport】 JasperReport是一个开源的...通过这个实例,你可以深入理解JasperReport、MyEclipse和Struts2的结合使用,提高你在企业级Web应用开发中的能力。记得在实践中不断尝试和探索,以便更好地掌握这些技术。
Servlet是Java Web应用中处理客户端请求的组件,它可以接收请求参数,生成响应内容,然后将其发送回客户端。 4. **显示于页面**:生成的PDF文件可以通过HTTP响应发送到浏览器,展示在页面上。这样用户可以直接在...
在Web环境中,`JasperReport`通常与Servlet容器(如Tomcat)或Java EE应用服务器(如Glassfish、JBoss)结合使用。报表的生成通常分为两个步骤:首先,使用`iReport`设计并保存`.jrxml`模板;然后,在服务器端,通过...
在开发Web应用时,iReport用于设计报表模板,而Jasperreport则负责运行时的报表渲染和数据填充。通过iReport设计好的模板(jrxml文件)可以被Jasperreport引擎解析并生成实际的报表。 4. **Web报表向导** iReport...
随着信息技术的发展,Web打印成为越来越多企业选择的高效打印方式之一。本文档旨在介绍如何利用Jaspersoft、iReport、Designer 4.5.0等工具实现Web端直接打印的需求,特别适用于.NET项目中希望优化打印流程的情况。...
`WEB-INF`目录是存放Web应用内部资源的地方,如Servlet配置、视图解析器配置等。`META-INF`通常用于存放项目的元数据,比如MANIFEST.MF文件。 通过以上步骤,我们成功地在Spring MVC项目中集成了JasperReport,并...
5. **浏览器兼容性**:JasperReport通过Servlet在服务器端生成PDF,然后发送到浏览器。某些浏览器可能不支持或有特定限制,导致PDF显示为空。 针对以上问题,解决策略可以分为以下几个步骤: 1. **验证JRXML文件**...
标题中的“ireport与java 桌面应用,web应用”揭示了本次讨论的核心主题,即如何使用ireport工具在Java环境下开发桌面应用程序和Web应用程序的报表功能。ireport是JasperReports库的一个图形化设计工具,允许开发者...
在web应用中,JasperReport通常被集成到Servlet容器如Tomcat中,将其库文件部署到WEB-INF/lib目录下。这样,Web应用就可以通过JasperReport的API调用来生成和显示报表。例如,可以使用`JasperFillManager`填充数据,...
设计完成后,可以通过JasperReport API在你的Java应用中编译和渲染报表: 1. 使用`JasperCompileManager`编译JRXML文件生成`.jasper`编译后的模板。 2. 创建数据集对象,填充数据源,这通常是基于Java集合或数据库...