转自: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里面设置的

4.JasperReports学习笔记4-查询数据库生成动态的报表(WEB)的更多相关文章

  1. 5.JasperReports学习笔记5-其它数据生成动态的报表(WEB)

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 一.空数据(Empty Datasources) 就是说JRXML文件里 ...

  2. mybatis学习笔记(14)-查询缓存之中的一个级缓存

    mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...

  3. Linux学习笔记(七) 查询系统

    1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...

  4. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  5. SQLMAP学习笔记2 Mysql数据库注入

    SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...

  6. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  7. Hibernate学习笔记四 查询

    HQL语法 1.基本语法 String hql = " from com.yyb.domain.Customer ";//完整写法 String hql2 = " fro ...

  8. [ python ] 查询数据库生成Excel并发送邮件

    开发要求: 由于管理后台导出数据非常缓慢,找程序员解决无果后,自己动手写了一个脚本,每天定时将报表发送给业务部门. 1. 通过条件查询MySQL获取数据       2. 将获取的数据写入到Excel ...

  9. MongoDB学习笔记六—查询下

    查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...

随机推荐

  1. dva+antd写的一个react例子--服务器nginx 的配置

    location ^~ /crm { rewrite ^/crm/(.*)(\.js|\.css|\.png|\.jpg|\.jpeg|\.gif|index\.php|robots\.txt)$ / ...

  2. virt-v2v 使用指南

    virt-v2v 使用指南 1.定义. virt-v2v将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上.它可以读取在VMware.Xen运行Hyper-V和其他虚拟机管理程序上的Window ...

  3. Shiro:学习笔记(2)——授权

    Shiro:学习笔记(2)——授权 Shiro的三种授权方式 编程式: Subject subject = SecurityUtils.getSubject(); if(subject.hasRole ...

  4. 队列(Queue)

    队列(Queue) Queue: 先入先出(FIFO)的数据结构. offer,add区别: 一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝. 这时新的 offer 方 ...

  5. MySQL 创建索引(Create Index)的方法和语法结构及例子

    MySQL 创建索引(Create Index)的方法和语法结构及例子 MySQL 创建索引(Create Index)的方法和语法结构及例子   CREATE INDEX Syntax CREATE ...

  6. CustomizaitonSpec Clone_VM

    克隆虚拟机可以加上CustomizationSpec来自动配置好:IP地址.DNS.Domain等信息 1.可以利用PyVmimo中的vim模块在python中完全自定义CustomizationSp ...

  7. Linux Shell总结

    Shell编程总结: 1.linux命令 2.位置变量 $0 $1 $# $? 3.条件测试 [ ] [[ ]] (( )) if case 4.循环for while 5.打印echo cat 6. ...

  8. centos web+mysql服务器的安全

    今天闲来无事,拿来X-Scan-v3.3 来扫描自己的服务器,开放端口有22,80,443,3306:3306端口被扫出来,呵呵,那可不得了: 一,屏蔽扫描器扫出3306端口,因为web和数据库是在同 ...

  9. 2014年的暑假ACM之旅!

    致未来的我: 回到学校了,又开始了繁忙的生活! 虽然每天都不太轻松,但还是蛮有乐趣的,一起讨论某道题或者某种算法时挺开心的.@我.@姜维波.@曹彦宝.@李岩.@张永宏 继续这样下去,直到这个暑假的结束 ...

  10. JAVAScript中DOM与BOM的差异分析

    JAVAScript 有三部分构成,ECMAScript,DOM和BOM,根据浏览器的不同,具体的表现形式也不尽相同.我们今天来谈一谈DOM和BOM这俩者之间的差异. 用百科上的来说: 1. DOM是 ...