现在的位置: 首页 > 数据库 > 正文

Ireport 连接数据库 javabean 使用参数的简单例子

2018年09月02日 数据库 ⁄ 共 5929字 ⁄ 字号 评论关闭

1.连接数据库首先测试连接得数据库后 在如下图中写上自己要调用的sql,这里是没有参数的可能图片上传不得- -,做好模板后,就是到jsp中的代码了,这里就直接复制出来了。方便自己以后快速找到

<%@ page contentType="text/html;charset=utf-8"%><%@ page import="net.sf.jasperreports.engine.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%><%@ page import="java.sql.*"%>This is my JSP page.

<%//报表编译之后生成的.jasper文件的存放位置 File reportFile = new File(this.getServletContext().getRealPath("report1.jasper"));Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost/bg2?useUnicode=true&characterEncoding=utf-8";String user = "root";String
password = "123456";Map parameters = new HashMap();Connection conn = DriverManager.getConnection(url, user, password);byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);//设置编码格式response.setContentType("application/pdf");response.setContentLength(bytes.length);//ServletOutputStream
outStream = response.getOutputStream();outStream.write(bytes, 0, bytes.length);outStream.flush();outStream.close();out.clear();out = pageContext.pushBody();%>下面是生成HTML的代码 ,制作模板和上面的类似

<%@ page contentType="text/html;charset=utf-8"%><%@ page import="net.sf.jasperreports.engine.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%><%@ page import="java.sql.*"%>This is my JSP page.

<%String ctxpath = request.getContextPath();

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost/bg2?useUnicode=true&characterEncoding=utf-8";String user = "root";

String password = "123456";

Connection conn = DriverManager.getConnection(url, user, password);

//ireport生成的.jasper文件的存放位置,这里为了方便放置在根目录下面

 File reportFile = new File(this.getServletContext().getRealPath("/report1.jasper"));Map parameters = new HashMap();

//map负责放入参数 在报表中显示的 ,这里没用用到

try {

//执行报表程序

 JasperRunManager.runReportToHtmlFile(reportFile.getPath(),parameters, conn);

//自动生成跳转,,这里目前生成的文件需要和ireport末班名称一样 暂时不知道如何修改

response.sendRedirect(ctxpath + "/report1.html");} catch (Exception e) {System.out.println(e.getMessage());} finally {try {conn.close();} catch (Exception ex) {System.out.println(ex.getMessage());}}%>

2:javabean 的连接使用 首先创建ProductBean类package ireport;public class ProductBean{ private String productName; public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; }}编译之后,在创建模板的时候需要在Ireport的ireport
Datasource 那里选着 javabeans set datasource ,然后再工具->选项- > classpath 添加你编译后的ProductBean类的路径,例如我的是 Z_IreportDemo\WebRoot\WEB-INF\classes。然后再Ireport query 面板中选着javabean datasource,然后再框框中输入你的类名 ,例如我的是:ireport.ProductBean ,然后点击read attributes 按钮 会出现类的对应的属性变量,点击预览,把编译好的模板文件放到项目中。下面是一些实现代码<%@
page contentType="text/html;charset=utf-8"%><%@ page import="net.sf.jasperreports.engine.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%><%@ page import="java.sql.*"%><%@ page import="ireport.ProductBean"%><%@ page import="net.sf.jasperreports.engine.data.*"%><%@
page import="net.sf.jasperreports.engine.util.*"%><%@ page import="java.net.*"%><%@ page import="net.sf.jasperreports.engine.export.*"%>This is my JSP page.

<% try { //生成测试数据 ArrayList data = new ArrayList(); for(int i = 1; i <= 100; i++) { ProductBean bean = new ProductBean(); bean.setProductName("Product " + i); data.add(bean); } // JRDataSource dataSource = new JRBeanCollectionDataSource(data); //获取报表模板文件
String root_path = this.getServletContext().getRealPath("/report10.jasper"); // root_path = root_path.replace('/', '/'); String reportFilePath = root_path;// + "WEB-INF/classes/lld/test/ireport/report_2.jasper"; System.out.println("jasper file is " + reportFilePath);
//生成JasperPrint JasperReport report = (JasperReport)JRLoader.loadObject(reportFilePath); JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, dataSource); //设定输出格式 OutputStream ouputStream = response.getOutputStream(); response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("PDF报表", "UTF-8") + ".pdf"); // 使用JRPdfExproter导出器导出pdf JRPdfExporter exporter = new JRPdfExporter(); // 设置JasperPrintList exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); exporter.exportReport(); System.out.println("ok......"); out = pageContext.pushBody(); ouputStream.close(); } catch (Exception e) { e.printStackTrace(); } %>

3:使用参数,使用参数的方法,主要是在sql中可能需要用到一些条件,然后由开发者,在外部动态的传入参数然后改变查询出来的结果例如我使用下面这句:select * from user where username in ($P{username}) ,这里的$P{username}中的username需要在ireport中自己创建的,如果对ireport左边的那些组件还不是很了解的建议去网上找找详细的介绍教程看看。当模板编译好后,可以用下面的代码实现

<%@ page contentType="text/html;charset=utf-8"%><%@ page import="net.sf.jasperreports.engine.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%><%@ page import="java.sql.*"%><%@ page import="ireport.ProductBean"%><%@ page import="net.sf.jasperreports.engine.data.*"%><%@
page import="net.sf.jasperreports.engine.util.*"%><%@ page import="java.net.*"%><%@ page import="net.sf.jasperreports.engine.export.*"%>

This is my JSP page.
<%String username = "aaaaaaa";File reportFile = new File(this.getServletContext().getRealPath("test.jasper"));//Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost/bg2?useUnicode=true&characterEncoding=utf-8";String user = "root";String
password = "123456";Connection conn = DriverManager.getConnection(url, user, password);Map parameters = new HashMap();parameters.put("username", username);////JRDataSource dataSource = new JRBeanCollectionDataSource(data);//获取报表模板文件String root_path = this.getServletContext().getRealPath("/test.jasper");//
root_path = root_path.replace('/', '/');String reportFilePath = root_path;// + "WEB-INF/classes/lld/test/ireport/report_2.jasper";System.out.println("jasper file is " + reportFilePath);// JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),parameters,conn);byte[]
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);//设置编码格式response.setContentType("application/pdf");response.setContentLength(bytes.length);//ServletOutputStream outStream = response.getOutputStream();outStream.write(bytes, 0,
bytes.length);outStream.flush();outStream.close();out.clear();out = pageContext.pushBody();conn.close();%>

简单的例子 每天进步一点点

抱歉!评论已关闭.