本在经过一些时间,终于搞定了在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与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...
JasperReport是一款强大的Java报表工具,它允许开发者创建复杂、多格式的报表,并能与各种数据源集成。本文主要总结了JasperReport报表设计的关键点,包括报表格式定制、数据填充以及显示或打印。 首先,报表格式的...
JasperReport的核心是基于模板的设计理念,用户可以通过iReport或Jaspersoft Studio等可视化设计工具创建报表模板。 1. **报表设计** - **模板语言**: JasperReport使用JRXML格式的XML文件作为报表模板,定义了...
在报表的填充过程中,这些Java类会与JRXML模板结合,生成最终的报表。 在实际操作中,我们可能需要以下步骤来实现子报表: 1. **设计子报表**:使用报表设计工具创建子报表的JRXML文件,定义其布局和数据绑定。 2....
首先在 ireport 中设计报表模板,生成 XML 格式的文件,编译后生成 jasper 后缀的二进制文件。将编译好的.jasper 文件拷贝到 WEB 工程下,通过代码填充数据源生成最终的报表。 五、ireport 使用说明 Jaspersoft ...
JasperReport提供了丰富的报表设计功能,包括自定义样式、模板、以及动态数据填充。 iReport作为JasperReport的前端设计工具,允许用户通过图形化界面来设计报表。它支持导入各种数据源,如数据库、XML文件或Java...
1. **报表模板设计**:使用JasperReport提供的设计工具创建报表模板(.jrxml文件)。模板定义了报表的布局、字段、样式等元素。 2. **编译报表模板**:将.jrxml文件编译成.JRDP文件,这是JasperReport可执行的二...
1. 设计报表:使用JasperReport的报表设计工具(如iReport或Jaspersoft Studio)创建报表模板。 2. 配置Struts2:在struts.xml中定义Action,指定处理报表请求的方法。 3. 实现Action:在Action中,加载数据源,执行...
这可能包括设置JDBC驱动、连接数据库、创建报表模板、在代码中调用报表引擎等步骤。 **应用场景:** 这些工具常用于企业级应用中,用于生成业务报告、数据分析、财务报表等,帮助决策者获取和理解关键业务数据。...
JasperReport是一个功能强大的开源报表引擎,允许开发人员通过iReports这样的设计工具以可视化的形式创建复杂的报表模板。Struts2,作为一个流行的Java Web框架,提供了一个灵活的MVC架构,使得在Web应用程序中集成...
它们是报告数据绑定的基础,通过字段将数据源中的信息与报表元素关联起来。 2. **表达式(Expressions)**:在jasperreport中,表达式用于计算或处理数据。它们可以是简单的Java代码片段,也可以是复杂的逻辑操作。...
总的来说,SpringBoot与JasperReport的整合使得报表生成变得简单,它提供了灵活的设计工具和丰富的数据绑定能力,可以帮助开发者快速地实现复杂报表的展示需求。通过学习和掌握这一技术,你可以提升企业应用的报表...
这些工具提供图形化界面,便于创建和编辑报表模板,同时支持预览和调试,以确保动态数据处理的正确性。 6. **源码和工具的运用**: 标签中提到了“源码”和“工具”,这意味着在实际项目中,可能需要编写Java代码...
在IT行业中,报表生成是企业级应用不可...开发者可以设计丰富的报表模板,利用Servlet处理用户请求,结合数据库数据动态生成报表,最终提供预览和打印服务。理解并掌握这一技术,对于开发企业级Web应用有着重要的价值。