JSP顯示水晶報表推薦做法

來源:互聯網
上載者:User
1. 緩衝報表源

在會話變數中緩衝報表源使得報表源可被有效地使用多次。在未緩衝報表源時,多次建立新報表源的過程將變得非常昂貴。而且,緩衝報表源還允許重新整理包含或不包含已儲存資料的報表。

以下樣本顯示了如何在會話變數中緩衝報表源:

String report = "/reports/sample.rpt";

ReportClientDocument reportClientDoc = new ReportClientDocument();

reportClientDoc.open(report, 0);

Object reportSource = reportClientDoc.getReportSource();

session.setAttribute("reportSource", reportSource);

 

 

注意:    如果要使用緩衝的報表源,在不再使用報表源之前,請不要調用查看器或報表源的丟棄方法。

強烈建議您緩衝報表源,以便在查看報表時確保資料的一致性。如果使用未緩衝的報表源,則會在查看器或報表控制項中執行任何操作時建立新的報表源。因此,使用未緩衝的報表源將會導致查看器顯示包含已儲存資料的一些頁面,並同時顯示包含即時資料的另一些頁面。

 

2. 只有查看器的頁面

如果 JSP 頁面只包含查看器而沒有任何其他內容,則可以執行一些操作來簡化報表查看實施。

設定 setOwnPage

取決於查看內容,查看器能夠產生完整的 HTML 頁面,並能設定相應的頁面屬性。將 setOwnPage 設定為 true 使查看器能夠完整地處理周圍的 HTML 內容,從而帶來若干好處。允許查看器處理周圍的 HTML 內容可以減少需要向 JSP 頁面中添加的代碼量,並使查看器能夠自動確定某些設定:

     

  • 它允許查看器根據用於查看頁面的裝置來選擇使用哪些頁面開始和結束標記。

    例如,對於 網頁瀏覽器,查看器會寫出 <html> 開始標記,而對於行動裝置,則會寫出 <wml> 開始標記。

    注意:    Java Reporting Component 不支援產生用於在行動裝置上顯示的報表。

  • 它能夠正確地為版面設定內容類型和字元集資訊。這確保了包含國際字元的頁面能正確顯示。
  • 它能夠自動在查看器中啟用匯出和列印按鈕支援。

如果 setOwnPage 為 false,則需要手動設定周圍的 HTML 標籤以及 content-type 和 charset 指令。此外,當 setOwnPage 為 false 時,列印和匯出功能將被禁用。

使用 processHttpRequest 方法

當 setOwnPage 設定為 true 時,您必須使用 processHttpRequest 方法(而不是 getHtmlContent 方法)來顯示報表。之所以必須使用 processHttpRequest 方法,原因是使用 getHtmlContent 與將 setOwnPage 設定為 false 時的效果相同,從而沒有了將 setOwnPage 設定為 true 時的任何優點。

3. 使用 setOwnForm 方法

如果 JSP 頁面不包含任何需要回傳的控制項,則應將 setOwnForm 方法設定為 true。這樣做使查看器能夠自動處理檢視狀態資訊。檢視狀態用於在用戶端緩衝有關報表目前狀態的資訊。如果頁面上有其他控制項,您必須確保 setOwnForm 設定為 false,並手動處理檢視狀態資訊。

以下樣本顯示了如何手動設定檢視狀態資訊:

viewer.setOwnForm(false);

viewer.setViewState((String) session.getAttribute("viewState"));

viewer.processHttpRequest(request, response, getServletContext(), pageContext.getOut());

session.setAttribute("viewState", viewer.getViewState());

 注意:    setOwnForm 必須設定為 true 才能使參數提示發揮作用。

4. 指定正確的字元集

要將字元從 JSP 檔案發送到 網頁瀏覽器,您必須使用正確的編碼。始終為所有 JSP 頁面指定正確的內容類型和字元集。

如果 JSP 頁面將內容返回到標準 HTML 瀏覽器,請確保定義了正確的字元集:

<%@ page contentType="text/html; charset=utf-8" %>

 contentType 和 charset 指令讓瀏覽器知道所返回 HTML 頁面的編碼方式。UTF-8 是查看器必需的字元集。

5. CrystalImageCleaner 範例程式碼

為了確保定期刪除查看器使用的臨時檔案,需要使用 CrystalImageCleaner 對象。通過將正確配置的 CrystalImageCleaner 對象添加到使用查看器的 JSP 頁面,可協助提高 Web 應用程式的效能。

注意:    為了確保 CrystalImageCleaner 對象可用,JSP 頁面中必須有以下程式碼。

<%@ page import="com.crystaldecisions.report.web.viewer.CrystalImageCleaner" %>

樣本 1

本樣本方法建立一個 CrystalImageCleaner 對象,該對象每分鐘掃描影像檔一次,但只刪除那些至少已存在 2 分鐘的檔案。由於這些設定的最佳值高度取決於查看器的使用和應用程式的設計特徵,因此,必須正確調整這些設定,以便確保您的應用程式獲得最佳效能。

<%!

public void jspInit(){

    CrystalImageCleaner.start(getServletContext(), 60000, 12000);

}

%>

樣本 2

本樣本方法在從服務中刪除 JSP 頁面後即停止 CrystalImageCleaner 對象。

<%!

public void jspDestroy(){

CrystalImageCleaner.stop(getServletContext());

}

%>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.