jsp输出报表

来源:互联网 发布:折800被淘宝封了么 编辑:程序博客网 时间:2024/05/16 00:32

<%@ page contentType="application/pdf;charset=UTF-8"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>

  <title>My JSP 'rpt.jsp' starting page</title>
 </head>

 <body>
  <%
   //报表编译之后生成的.jasper文件的存放位置
   File reportFile = new File(this.getServletContext().getRealPath(
     "/report/report2.jasper"));

   Map parameters = new HashMap();
   //"SQLSTR"是报表中定义的参数名称,其类型为String 型
   //设置SQLSTR参数的内容,根据需要赋值sql语句
   parameters.put("p_bk_money", 200d);

   String sDBDriver = null;
   String sConnection = null;
   String sUser = null;
   String sPassword = null;
   Properties p = new Properties();

   // db.properties放在cn.com.showd.struts包中
   InputStream is = getClass().getResourceAsStream("/jdbc.properties");

   p.load(is);

   sDBDriver = p.getProperty("jtds.driverClassNamePvms");
   sConnection = p.getProperty("jtds.url.dsPvms");
   sUser = p.getProperty("jtds.uid");
   sPassword = p.getProperty("jtds.pwd");

   Properties pr = new Properties();
   pr.put("user", sUser);
   pr.put("password", sPassword);
   pr.put("characterEncoding", "UTF-8");
   pr.put("useUnicode", "true");
   Class.forName(sDBDriver).newInstance();
   Connection connection = DriverManager
     .getConnection(sConnection, pr);
 
   byte[] bytes = JasperRunManager.runReportToPdf(
     reportFile.getPath(), parameters, connection);

   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();

  %>

 </body>
</html>

原创粉丝点击