转自: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. Nodejs课堂笔记-第二课 package.json的作用

    本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 上节课,我们打造了一下IDE工具-web storm的显示界面.至少现在回到 ...

  2. Python socket TCPServer Demo

    #coding:utf-8 from SocketServer import TCPServer,BaseRequestHandler import traceback class MyBaseReq ...

  3. linux 中sort命令 按照指定列排序

    sort怎样按指定的列排序0000 27189 41925425065f 15 419254250663 7 419254250675 5 419254250691 76 419254250693 2 ...

  4. python基础19 -------面向对象终结篇(介绍python对象中各种内置命令)

    一.isinstance()和issubclass()命令 1.isinstance(对象,类型) 用来判定该对象是不是此类型或者说是该对象是不是此类的对象,返回结果为True和False,如图所示. ...

  5. Datanode启动问题 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering>

    -- ::, INFO org.apache.hadoop.hdfs.server.datanode.DataNode: supergroup = supergroup -- ::, INFO org ...

  6. hadoop 学习笔记:mapreduce框架详解(转)

    原文:http://www.cnblogs.com/sharpxiajun/p/3151395.html(有删减) Mapreduce运行机制 下面我贴出几张图,这些图都是我在百度图片里找到的比较好的 ...

  7. castle windsor学习-------Container Events 容器的事件

    所有的事件是实现IKernelEvents 接口,已容器的Kernel属性暴露出来 1. AddedAsChildKernel 当前的容器添加子容器或其他容器时触发 2. RemovedAsChild ...

  8. mysql 数据库使用

    1. 常用命令 2. 创建表 create table test ( test_id int, test_price decimal ); 或者 create table test2 as selec ...

  9. spring学习(2)

    理解反向控制(IOC) 依赖注入(di):比IOC更好地名字.获得依赖对象的方式反转了. IOC应用 IOC或者di,还可以达到解耦的目的. spring开发提倡接口编程,配合di技术,可以更好地达到 ...

  10. HTML5 学习记录——2

    20150826 1.声明文档类型 <!DOCTYPE>  声明HTML是用什么版本写的. 常用声明; 2.HYML头部元素   <head> <title> 定义 ...