zoukankan      html  css  js  c++  java
  • 4.JasperReports学习笔记4-查询数据库生成动态的报表(WEB)

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html

    第一种方式:

    sql语句中定义查询条件,报表中定义接收参数


    第二种方式:

    JRXML文件里面不用写SQL语句,而是将结果集查询出来经过JRResultSetDataSource转换
     


     2 import java.io.IOException;
     3 import java.io.InputStream;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.sql.Statement;
     9 import java.util.HashMap;
    10 
    11 import javax.servlet.ServletException;
    12 import javax.servlet.ServletOutputStream;
    13 import javax.servlet.http.HttpServlet;
    14 import javax.servlet.http.HttpServletRequest;
    15 import javax.servlet.http.HttpServletResponse;
    16 
    17 import net.sf.jasperreports.engine.JRException;
    18 import net.sf.jasperreports.engine.JRResultSetDataSource;
    19 import net.sf.jasperreports.engine.JasperRunManager;
    20 
    21 public class DynamicCreateReportWithServletDateSource extends HttpServlet {
    22 
    23     private static final long serialVersionUID = 1L;
    24 
    25     public void doGet(HttpServletRequest request, HttpServletResponse response)
    26             throws ServletException, IOException {
    27         Connection connection = null;
    28         Statement statument = null;
    29         ResultSet resultSet = null;
    30         String sql = "select tb.name as name,tb.age as age,tbs.marks as marks from jaspertb tb join jaspertbs tbs";
    31         ServletOutputStream servletOutputStream = response.getOutputStream();
    32         InputStream is = getServletConfig().getServletContext().getResourceAsStream("report\JasperReportSQLResult.jasper");
    33         try {
    34             Class.forName("com.mysql.jdbc.Driver");
    35             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jasperreportdb","root""root");
    36             statument = connection.createStatement();
    37             resultSet = statument.executeQuery(sql);
    38             //这里把ResultSet封装到JRResultSetDataSource对象里面了
    39             JasperRunManager.runReportToPdfStream(is,servletOutputStream,new HashMap(), new JRResultSetDataSource(resultSet));
    40             response.setContentType("application/pdf");
    41             servletOutputStream.flush();
    42             servletOutputStream.close();43             connection.close();44         } catch (ClassNotFoundException e) {45             e.printStackTrace();46         } catch (SQLException e) {47             e.printStackTrace();48         } catch (JRException e) {49             e.printStackTrace();50         }51     }52 53     public void doPost(HttpServletRequest request, HttpServletResponse response)54             throws ServletException, IOException {55         this.doGet(request, response);56     }57 58 }



    注意:JRXML文件里面数据库的字段都是用$F{marks},而parameter是用$P{xxxx}表示的
    ,而parameter的值都是传过去的那个HashMap里面设置的

  • 相关阅读:
    ✡ leetcode 169. Majority Element 求出现次数最多的数 --------- java
    ✡ leetcode 168. Excel Sheet Column Title 26进制数字 --------- java
    ✡ leetcode 167. Two Sum II
    ✡ leetcode 166. Fraction to Recurring Decimal 分数转换 --------- java
    javascript XMLHttpRequest对象全面剖析
    百度Echarts使用心得
    纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
    css阴影--box-shadow的用法
    background小结
    20150103笔记
  • 原文地址:https://www.cnblogs.com/sharpest/p/6148570.html
Copyright © 2011-2022 走看看