首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

快逸報表 API 呼叫實作:JSP 中整合報表運算引擎

     編輯:關於SqlServer

快逸報表雖支援標籤式部署,但理解其 API 呼叫流程有助於深度整合與疑難排解。本文示範在 JSP 中透過 API 完成報表模板載入、參數注入、資料源連接、HTML/Excel 輸出。

核心流程

  1. 讀取模板:ReportUtils.read(InputStream) 反序列化 ReportDefine 物件。
  2. 建立上下文:DriverManager.getConnection 取得 JDBC 連線,封裝為 DriverContext。
  3. 參數與巨集處理:解析 HTTP 參數填入報表參數與巨集。
  4. 執行運算:ReportProcessor.process(ReportDefine, DriverContext) 產生 ReportInstance。
  5. 渲染輸出:HtmlView.render() 或 ExcelView.render() 輸出至 HttpServletResponse。

關鍵程式碼片段

<%@ page import="com.runqian.report4.model.*" %>
<%@ page import="com.runqian.report4.util.*" %>
<%@ page import="com.runqian.report4.view.Html.*" %>
<%@ page import="java.sql.*" %>
<%
  String report = request.getParameter("report");
  if (!report.endsWith(".raq")) report += ".raq";

  // 1. 載入模板
  InputStream is = application.getResourceAsStream("/reportFiles/" + report);
  ReportDefine rd = (ReportDefine) ReportUtils.read(is);

  // 2. 建立資料庫連線
  Driver drv = (Driver) Class.forName("com.newatlanta.jturbo.driver.Driver").newInstance();
  DriverManager.registerDriver(drv);
  Connection conn = DriverManager.getConnection(
      "jdbc:JTurbo://127.0.0.1/web4/charset=GBK", "sa", "pwd");

  // 3. 建立處理器並運算
  DriverContext dc = new DriverContext(conn);
  ReportProcessor rp = new ReportProcessor();
  ReportInstance ri = rp.process(rd, dc);

  // 4. HTML 輸出
  HtmlView hv = new HtmlView();
  hv.render(ri, response.getOutputStream());
%>

注意事項

  • 連線、串流務必在 finally 區塊關閉,避免洩漏。
  • 參數名稱區分大小寫,需與模板定義一致。
  • 大量並發建議使用連線池 (DBCP/HikariCP) 替代直連。
  • Excel 輸出改用 ExcelView,並設定 response.setContentType("application/vnd.ms-excel")。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved