本在经过一些时间,终于搞定了在applet上预览报表模板的功能,现帖出以供交流:
首先是解决的applet与servlet的相互通信,在servlet中把文件作为流的形式输出,applet中就可以调用了,servlet如下所示:
java 代码
- package servlets;
-
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectOutputStream;
- import java.io.PrintWriter;
-
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.ServletOutputStream;
- 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.JRReport;
- import net.sf.jasperreports.engine.JRRuntimeException;
- import net.sf.jasperreports.engine.util.JRLoader;
-
-
- public class DesignViewServlet extends HttpServlet {
-
-
-
-
-
-
- private static final long serialVersionUID = 2006;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- ServletContext context = this.getServletConfig().getServletContext();
-
- File reportFile = new File(context.getRealPath("/reports/WebappReport.jasper"));
-
-
- if (!reportFile.exists()){
- throw new JRRuntimeException("File WebappReport.jasper 没有找到!");
- }else{
- response.setContentType("application/octet-stream");
-
- ServletOutputStream out=response.getOutputStream();
-
- ObjectOutputStream os=new ObjectOutputStream(out);
-
- os.writeObject(reportFile);
- os.flush();
- os.close();
- }
-
- }
-
- }
第二步则要写applet啦,applet如下所示:
java 代码
- import java.awt.BorderLayout;
- import java.io.DataInputStream;
- import java.io.File;
- import java.io.InputStream;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.net.URL;
- import java.net.URLConnection;
-
- import javax.swing.JApplet;
- import javax.swing.JOptionPane;
-
- import net.sf.jasperreports.engine.JRReport;
- import net.sf.jasperreports.engine.util.JRLoader;
-
-
-
- public class DesignViewApplet extends JApplet {
-
-
- public DesignViewApplet()
- {
- initComponents();
- }
-
-
-
- public void init()
- {
- try
- {
- URL url = new URL(getCodeBase(),"../servlets/designview");
- if(url!=null){
- try{
- File file = (File)JRLoader.loadObject(url);
- JRDesignViewSimple view=new JRDesignViewSimple(file.getPath(),false);
- this.pnlMain.add(view, BorderLayout.CENTER);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
- catch (Exception e)
- {
- StringWriter swriter = new StringWriter();
- PrintWriter pwriter = new PrintWriter(swriter);
- e.printStackTrace(pwriter);
- JOptionPane.showMessageDialog(this, swriter.toString());
- }
- }
-
-
-
- private void initComponents() {
- pnlMain = new javax.swing.JPanel();
-
- pnlMain.setLayout(new java.awt.BorderLayout());
-
- getContentPane().add(pnlMain, java.awt.BorderLayout.CENTER);
-
- }
-
- private javax.swing.JPanel pnlMain;
-
- }
上面用到一个方法JRDesignViewSimple view如下:
java 代码
- import java.io.InputStream;
-
- import net.sf.jasperreports.engine.JRException;
- import net.sf.jasperreports.engine.JRReport;
- import net.sf.jasperreports.view.JRDesignViewer;
-
-
- public class JRDesignViewSimple extends JRDesignViewer {
-
- public JRDesignViewSimple(String fileName, boolean isXML) throws JRException {
- super(fileName, isXML);
- }
- public JRDesignViewSimple(JRReport report) throws JRException {
- super(report);
- }
- public JRDesignViewSimple(InputStream is,boolean isXML) throws JRException {
- super(is,isXML);
- }
- }
这样java的代码就完成啦,下一步是写html来引用他!html的页面如下:
由于applet的代码帖不上,我作为附件形式上传。
这样只要打开页面引用就可以啦!其中对applet的安全会有要求,要在java的安装目录上加上其相应的代码,以上的例子和大家一起讨论!谢谢发言。
分享到:
相关推荐
JasperReport报表设计总结
jasperreport报表开发小结,使用ireport设计报表模板,javabean作为数据源,整合springboot实现在线预览和导出各种格式的报表
使用Spring2.5+Struts2+ibatis+jasperreport3.1.4 实现Struts2与Jasperreport报表结合
iReport-JasperReport 报表开发指南,PDF格式,里面带有图文,入门性质的教程
JasperReport报表成型框架,可直接导入Myeclipse使用,附带文档有相关解释。
springboot整合JasperReport实现报表功能文章所需的全部资源
ireport-5.6.0 Jasperreport 报表工具 jar包大全Two
JasperReport 中交叉报表指南
同时,借助开源的JasperReports模板设计利器iReports,可以可视化的设计报表模板。基于Web的报表在很多项目中都是需要的。而随着Struts2的流行,就应该研究一下在Struts2下如何利用JasperReports进行报表输出。本...
ireport-5.6.0 Jasperreport 报表工具 jar包大全
iReport-5.6.0 Jasperreport
JasperReport 水晶报表 , 支持子报表 多数据源。
jasperreport+applet客户端打印demo
jasperReport 进行报表开发 可以输出HTML ,JSP,PDF等格式