在servlet中使用jasperreport展示报表

之前说过如何将jasperreport集成到spring mvc当中,但有些场景中我们也会通过servlet+jsp+jasperreport的方式来展示报表内容,本文就这种方式简单介绍一下如何在servlet中使用jasperreport来展示报表,包括实现步骤,具体实现内容,参数传递方式等。


1、使用mysql数据库,创建报表测试数据库testreport,并创建相关业务表,这里根据各自测试内容自行创建,不再赘述;


2、在eclipse中创建Dynamic Web Project,命名为testReport,并添加依赖包:

jasperreports-6.1.0.jar
iTextAsian.jar
itext-2.1.7.jar


3、创建并编辑web.xml内容:

<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>servlet.JasperServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>
</web-app>
其中servlet-class的路径必须与实际servlet类对应。


4、创建获取jdbc连接的工具类util.DBUtils.java:

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class DBUtils {
    private static final String URL="jdbc:mysql://192.168.0.200:3306/testreport";
    private static final String USERNAME ="root";
    private static final String PASSWORD ="root";
   
    static{
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
   
    public static Connection getConnection(){
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

5、将ireport编译生成好的jasper文件放在指定位置,这里是“F:\\Yan\\ireport\\test.jasper”(这里为了便于测试随意选择了一个路径,建议放在工程相对路径下的resources路径下);

6、准备工作完成,现在创建servlset,并在doGet方法中编辑报表读取代码:

package servlet;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;

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.JasperRunManager;
import util.DBUtils;


public class JasperServlet extends HttpServlet{

    private static final long serialVersionUID = 5044554587015859089L;
   
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletOutputStream out = resp.getOutputStream();
        resp.setCharacterEncoding("utf-8");
        //报表文件路径
        String htmlAddr="F:\\Yan\\ireport\\test.jasper";
        Connection conn = DBUtils.getConnection();
        //加入参数
        Map<String,Object> params= new HashMap<String,Object>();
        params.put("userid", "test-001");
        try {
            params.put("operateDate", new SimpleDateFormat("yyyy-MM-dd").parse("2017-05-23"));
        } catch (ParseException e1) {
            e1.printStackTrace();
        }
        //报表文件读取
        try {
            String file = JasperRunManager.runReportToHtmlFile(htmlAddr, params,conn);
            BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File(file)));
            byte[] buf = new byte[8192];
            while(in.read(buf)!=-1){
                out.write(buf);
            }
            out.flush();
            in.close();
            out.close();
        } catch (JRException e) {
            e.printStackTrace();
        }
    }
}

本文主要介绍以html形式展示报表内容,如果需要通过pdf形式进行展示,则仅需使用JasperRunManager的runReportToPdf或者runReportToPdfStream方法即可。

OK,到此为止已经可以可以展示报表内容了,将testreport加入到tomcat中,部署并启动tomcat,然后直接在地址栏输入访问http://localhost:8080/testReport/testServlet,就可以显示对应报表了,是不是很简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 JSP 页面使用 JasperReport,可以按照以下步骤: 1. 在你的项目导入 JasperReport 的相关库文件。 2. 创建一个 JasperReport 报表模板文件,可以使用 JasperReport 的设计工具 iReport 进行创建。 3. 在 JSP 页面编写代码,创建一个 JasperReport 报表,并填充数据。 4. 将 JasperReport 报表输出到指定的输出流。 下面是一个简单的示例代码,演示如何在 JSP 页面使用 JasperReport: ```java <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%@ page import="net.sf.jasperreports.engine.*" %> <%@ page import="net.sf.jasperreports.engine.export.*" %> <%@ page contentType="application/pdf" %> <% // 创建一个 JasperReport 报表 JasperReport jasperReport = JasperCompileManager.compileReport("report_template.jrxml"); // 填充数据 Map<String, Object> params = new HashMap<String, Object>(); params.put("parameter1", "value1"); params.put("parameter2", "value2"); JRDataSource dataSource = new JREmptyDataSource(); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource); // 输出 JasperReport 报表到指定的输出流 OutputStream out = response.getOutputStream(); JasperExportManager.exportReportToPdfStream(jasperPrint, out); %> ``` 在这个示例代码,我们首先创建了一个 JasperReport 报表,并填充了一些数据。然后,我们将 JasperReport 报表输出到一个 PDF 文件。在这个例子,我们将 PDF 文件直接输出到了 JSP 页面的输出流,因此最后生成的 PDF 文件将直接在浏览器显示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值