`
axiang_2898
  • 浏览: 89915 次
  • 性别: 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  
写得很好,我明天试一下

相关推荐

    web打印.doc

    2. **Applet与Servlet之间的通信**:客户端Applet如何与服务器端Servlet进行数据交换。 3. **PDF报表文件的读写操作**:涉及到PDF文件的读取、写入等操作。 4. **Applet的安全打包及其签名**:确保Applet可以在用户...

    数学建模拟合与插值.ppt

    数学建模拟合与插值.ppt

    [net毕业设计]ASP.NET教育报表管理系统-权限管理模块(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    mysql相关资源.txt

    mysql相关资源.txt

    利用HTML+CSS+JS的国漫分享网站(响应式)

    此项目为一个HTML+CSS+JS的国漫分享网站,用户可以在此网站中观看自己喜欢的国漫。此网站共有4个页面,分别为首页,最新动态,热门推荐,分类。页面动漫图片齐全,内容可更改。可用于期末课程设计或个人课程设计。

    Python爬虫爬取漫画

    Python爬虫爬取漫画

    C++语言编程用模拟退火算法解决旅行商问题

    模拟退火算法应用。C++语言编程用模拟退火算法解决旅行商问题。该资源包含模拟退火算法C++语言的源代码。模拟退火算法是一种基于概率的全局优化算法,最初来自于物理学中的退火过程。它通过模拟金属冷却时原子排列逐渐趋于最低能量状态的过程来寻找问题的最优解。模拟退火算法常用于解决非线性、组合优化问题,特别适合于大规模、复杂的搜索空间。

    传感器试题及答案.doc

    传感器试题及答案.doc

    [net毕业设计]ASP.NET网上书店(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    MongoDB数据表基本操作中文最新版本

    本文档主要讲述的是MongoDB数据表基本操作;希望对大家会有帮助;感兴趣的朋友可以过来看看

    1-全国各省废气、废水排放二氧化硫、氮氧化物、烟尘、颗粒物排放量统计数据2011-2021年-社科数据.zip

    本数据集提供了2011至2021年间全国各省废气和废水中主要污染物的排放量统计数据。数据涵盖了二氧化硫、氮氧化物、烟尘和颗粒物等关键污染物的排放量,为研究中国环境状况和污染物排放趋势提供了宝贵信息。数据显示,2011-2021年间,各省的二氧化硫排放量从数十万吨到数百万吨不等,其中广东、广西、海南等省份的排放量较高。氮氧化物排放量同样显示出地域差异,北京、天津等北方城市的排放量相对较低,而一些工业大省如河北、山西的排放量较高。颗粒物排放量统计显示,工业源和生活源是主要的排放源,其中工业源排放量占比较大。这些数据不仅对环保政策制定者具有参考价值,也为学术研究提供了实证基础。

    脉冲宽度测量单片机课程设计.doc

    脉冲宽度测量单片机课程设计.doc

    [net毕业设计]ASP.NET在线毕业论文提交系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    求职与招聘(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    [net毕业设计]ASP.NET视频点播系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    全国矢量地图数据【国道+高速】-ArcGis Shape 格式数据集

    全国矢量地图数据【国道+高速公路】ArcGIS Shape格式数据集是一种专门用于地理信息系统(GIS)的矢量数据集,包含中国范围内国道和高速公路的详细路网信息。该数据集广泛应用于交通规划、导航、物流分析和灾害应急等领域,具有高精度和易用性。 数据集特点: 1. 数据内容: 国道:包括以“G”开头的国家级公路,如G1京哈高速、G107国道等。 高速公路:包括全国范围内的所有高速公路网,覆盖主要经济区、城市和边境口岸。 属性数据: 道路编号(国道或高速公路编号)。 道路名称。 道路等级(如一级、二级、快速路等)。 起点和终点坐标。 道路长度(单位:公里)。 相关属性(如路段建成年份、设计速度、车道数等)。 2. 数据格式: **Shapefile(.shp)**格式,支持主流GIS软件(如ArcGIS、QGIS)及数据处理工具(如Python、Matlab)。 3. 投影坐标系: 一般采用WGS84地理坐标系,或可根据需求转换为**GCJ-02(火星坐标系)**以配合国内导航应用。

    4.html

    4

    ASP网上作业提交系统(源代码+论文)(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    Oracle常用分析函数说明中文最新版本

    Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 感兴趣的朋友可以过来看看

Global site tag (gtag.js) - Google Analytics