`
axiang_2898
  • 浏览: 89910 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jasperreport报表模板预览 applet与servlet通信

阅读更多

本在经过一些时间,终于搞定了在applet上预览报表模板的功能,现帖出以供交流:

 

首先是解决的applet与servlet的相互通信,在servlet中把文件作为流的形式输出,applet中就可以调用了,servlet如下所示:

 

java 代码
  1. package servlets;   
  2.   
  3. import java.io.File;   
  4. import java.io.IOException;   
  5. import java.io.InputStream;   
  6. import java.io.ObjectOutputStream;   
  7. import java.io.PrintWriter;   
  8.   
  9. import javax.servlet.ServletContext;   
  10. import javax.servlet.ServletException;   
  11. import javax.servlet.ServletOutputStream;   
  12. import javax.servlet.http.HttpServlet;   
  13. import javax.servlet.http.HttpServletRequest;   
  14. import javax.servlet.http.HttpServletResponse;   
  15.   
  16. import net.sf.jasperreports.engine.JRException;   
  17. import net.sf.jasperreports.engine.JRReport;   
  18. import net.sf.jasperreports.engine.JRRuntimeException;   
  19. import net.sf.jasperreports.engine.util.JRLoader;   
  20.   
  21.   
  22. public class DesignViewServlet extends HttpServlet {   
  23.   
  24.     /**  
  25.      * 说明:  
  26.      * @param  
  27.      * @return  
  28.      */  
  29.     private static final long serialVersionUID = 2006;   
  30.   
  31.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {              
  32.         ServletContext context = this.getServletConfig().getServletContext();   
  33.            
  34.         File reportFile = new File(context.getRealPath("/reports/WebappReport.jasper"));   
  35.            
  36.            
  37.         if (!reportFile.exists()){   
  38.             throw new JRRuntimeException("File WebappReport.jasper 没有找到!");   
  39.         }else{   
  40.             response.setContentType("application/octet-stream");   
  41.                
  42.             ServletOutputStream out=response.getOutputStream();   
  43.                
  44.             ObjectOutputStream os=new ObjectOutputStream(out);   
  45.                
  46.             os.writeObject(reportFile);   
  47.             os.flush();   
  48.             os.close();   
  49.         }   
  50.            
  51.     }   
  52.        
  53. }   

 

第二步则要写applet啦,applet如下所示:

java 代码
  1. import java.awt.BorderLayout;   
  2. import java.io.DataInputStream;   
  3. import java.io.File;   
  4. import java.io.InputStream;   
  5. import java.io.PrintWriter;   
  6. import java.io.StringWriter;   
  7. import java.net.URL;   
  8. import java.net.URLConnection;   
  9.   
  10. import javax.swing.JApplet;   
  11. import javax.swing.JOptionPane;   
  12.   
  13. import net.sf.jasperreports.engine.JRReport;   
  14. import net.sf.jasperreports.engine.util.JRLoader;   
  15.   
  16.   
  17.   
  18. public class DesignViewApplet extends JApplet {   
  19.        
  20.        
  21.     public DesignViewApplet()   
  22.     {   
  23.         initComponents();   
  24.     }   
  25.   
  26.   
  27.        
  28.     public void init()   
  29.     {      
  30.             try  
  31.             {                  
  32.                 URL url = new URL(getCodeBase(),"../servlets/designview");     
  33.                 if(url!=null){   
  34.                     try{   
  35.                         File file = (File)JRLoader.loadObject(url);   
  36.                         JRDesignViewSimple view=new JRDesignViewSimple(file.getPath(),false);   
  37.                         this.pnlMain.add(view, BorderLayout.CENTER);   
  38.                     }catch(Exception e){   
  39.                         e.printStackTrace();   
  40.                     }   
  41.                 }                  
  42.             }   
  43.             catch (Exception e)   
  44.             {   
  45.                 StringWriter swriter = new StringWriter();   
  46.                 PrintWriter pwriter = new PrintWriter(swriter);   
  47.                 e.printStackTrace(pwriter);   
  48.                 JOptionPane.showMessageDialog(this, swriter.toString());   
  49.             }   
  50.     }   
  51.   
  52.   
  53.        
  54.     private void initComponents() {//GEN-BEGIN:initComponents   
  55.         pnlMain = new javax.swing.JPanel();   
  56.   
  57.         pnlMain.setLayout(new java.awt.BorderLayout());   
  58.   
  59.         getContentPane().add(pnlMain, java.awt.BorderLayout.CENTER);   
  60.   
  61.     }   
  62.        
  63.     private javax.swing.JPanel pnlMain;   
  64.        
  65. }   

 

上面用到一个方法JRDesignViewSimple view如下:

java 代码
  1. import java.io.InputStream;   
  2.   
  3. import net.sf.jasperreports.engine.JRException;   
  4. import net.sf.jasperreports.engine.JRReport;   
  5. import net.sf.jasperreports.view.JRDesignViewer;   
  6.   
  7.   
  8. public class JRDesignViewSimple extends JRDesignViewer {   
  9.   
  10.     public JRDesignViewSimple(String fileName, boolean isXML) throws JRException {   
  11.         super(fileName, isXML);   
  12.     }   
  13.     public JRDesignViewSimple(JRReport report) throws JRException {   
  14.         super(report);   
  15.     }   
  16.     public JRDesignViewSimple(InputStream is,boolean isXML) throws JRException {   
  17.         super(is,isXML);   
  18.     }      
  19. }   

 

这样java的代码就完成啦,下一步是写html来引用他!html的页面如下:

 由于applet的代码帖不上,我作为附件形式上传。

这样只要打开页面引用就可以啦!其中对applet的安全会有要求,要在java的安装目录上加上其相应的代码,以上的例子和大家一起讨论!谢谢发言。

分享到:
评论
5 楼 landong___ 2012-08-22  
jasper的填充数据没有啊,但是谢谢依然!
4 楼 guzhiwxb 2011-10-24  
请问一下怎么做到List<JasperRrint>的打印预览
3 楼 itlangqun 2008-12-15  
/reports/WebappReport.jasper
这个文件没有啊!!!不够详细啊,资料我感觉还不全!!比较失望...但还是学习啦.
2 楼 itlangqun 2008-12-15  
/reports/WebappReport.jasper
这个文件没有啊!!!不够详细啊,资料我感觉还不全!!比较失望...但还是学习啦.
1 楼 pdw2009 2007-10-31  
写得很好,我明天试一下

相关推荐

    JasperReport+Servlet Web应用之:打印预览

    **JasperReport与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...

    JasperReport报表设计总结

    JasperReport是一款强大的Java报表工具,它允许开发者创建复杂、多格式的报表,并能与各种数据源集成。本文主要总结了JasperReport报表设计的关键点,包括报表格式定制、数据填充以及显示或打印。 首先,报表格式的...

    JasperReport报表成型框架

    JasperReport的核心是基于模板的设计理念,用户可以通过iReport或Jaspersoft Studio等可视化设计工具创建报表模板。 1. **报表设计** - **模板语言**: JasperReport使用JRXML格式的XML文件作为报表模板,定义了...

    jasperreport一个子报表的例子

    在报表的填充过程中,这些Java类会与JRXML模板结合,生成最终的报表。 在实际操作中,我们可能需要以下步骤来实现子报表: 1. **设计子报表**:使用报表设计工具创建子报表的JRXML文件,定义其布局和数据绑定。 2....

    jasperreport报表开发小结.docx

    首先在 ireport 中设计报表模板,生成 XML 格式的文件,编译后生成 jasper 后缀的二进制文件。将编译好的.jasper 文件拷贝到 WEB 工程下,通过代码填充数据源生成最终的报表。 五、ireport 使用说明 Jaspersoft ...

    iReport-JasperReport 报表开发指南

    JasperReport提供了丰富的报表设计功能,包括自定义样式、模板、以及动态数据填充。 iReport作为JasperReport的前端设计工具,允许用户通过图形化界面来设计报表。它支持导入各种数据源,如数据库、XML文件或Java...

    JasperReport + Servlet Web应用之:HTML显示报表内容

    1. **报表模板设计**:使用JasperReport提供的设计工具创建报表模板(.jrxml文件)。模板定义了报表的布局、字段、样式等元素。 2. **编译报表模板**:将.jrxml文件编译成.JRDP文件,这是JasperReport可执行的二...

    Struts2与Jasperreport报表结合

    1. 设计报表:使用JasperReport的报表设计工具(如iReport或Jaspersoft Studio)创建报表模板。 2. 配置Struts2:在struts.xml中定义Action,指定处理报表请求的方法。 3. 实现Action:在Action中,加载数据源,执行...

    Struts2+JasperReport报表应用

    JasperReport是一个功能强大的开源报表引擎,允许开发人员通过iReports这样的设计工具以可视化的形式创建复杂的报表模板。Struts2,作为一个流行的Java Web框架,提供了一个灵活的MVC架构,使得在Web应用程序中集成...

    jasperreport模板一个

    它们是报告数据绑定的基础,通过字段将数据源中的信息与报表元素关联起来。 2. **表达式(Expressions)**:在jasperreport中,表达式用于计算或处理数据。它们可以是简单的Java代码片段,也可以是复杂的逻辑操作。...

    ireport-5.6.0 Jasperreport 报表工具 jar包大全

    这可能包括设置JDBC驱动、连接数据库、创建报表模板、在代码中调用报表引擎等步骤。 **应用场景:** 这些工具常用于企业级应用中,用于生成业务报告、数据分析、财务报表等,帮助决策者获取和理解关键业务数据。...

    springboot整合JasperReport实现报表功能

    总的来说,SpringBoot与JasperReport的整合使得报表生成变得简单,它提供了灵活的设计工具和丰富的数据绑定能力,可以帮助开发者快速地实现复杂报表的展示需求。通过学习和掌握这一技术,你可以提升企业应用的报表...

    JasperReport动态报表归并行数据

    这些工具提供图形化界面,便于创建和编辑报表模板,同时支持预览和调试,以确保动态数据处理的正确性。 6. **源码和工具的运用**: 标签中提到了“源码”和“工具”,这意味着在实际项目中,可能需要编写Java代码...

    JasperReport+Servlet Web应用之:打印

    在IT行业中,报表生成是企业级应用不可...开发者可以设计丰富的报表模板,利用Servlet处理用户请求,结合数据库数据动态生成报表,最终提供预览和打印服务。理解并掌握这一技术,对于开发企业级Web应用有着重要的价值。

Global site tag (gtag.js) - Google Analytics