在(一)中的配置保持不變,前一篇是用crviewer標(biāo)簽來實(shí)現(xiàn)jsp顯示水晶報(bào)表的
這篇文章教你如何自己寫代碼來享受水晶報(bào)表的
report_source.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%//Crystal Java Reporting Component (JRC) imports.%>
<%-- jrcerom.jar--%>
<%@page import="com.crystaldecisions.reports.sdk.*" %>
<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.sdk.occa.report.lib.*" %>

<%
//水晶報(bào)表的位置
final String REPORT_NAME = "view_report.rpt";
%>

<%


try ...{
//打開報(bào)表
ReportClientDocument reportClientDoc = new ReportClientDocument();
reportClientDoc.open(REPORT_NAME, 0);

//把報(bào)表源放進(jìn)session,傳遞到報(bào)表顯示頁面
session.setAttribute("reportSource", reportClientDoc.getReportSource());
//轉(zhuǎn)到報(bào)表顯示頁面
response.sendRedirect("CrystalReportViewer.jsp");
}

catch(ReportSDKException ex) ...{
out.println(ex);
}

catch(Exception ex) ...{
out.println(ex);
}
%>
上面的可以封裝到j(luò)avabean里面
reportClientDoc.getDatabaseController().logon(USERNAME, PASSWORD);
設(shè)置數(shù)據(jù)庫(kù)的登陸用戶,如果瀏覽這個(gè)報(bào)表的用戶需要設(shè)置不同的權(quán)限的話,那就需要設(shè)置上面這個(gè)了
CrystalReportViewer.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%//Crystal Report Viewer imports.%>
<%-- webreporting.jar--%>
<%@page import="com.crystaldecisions.report.web.viewer.*"%>
<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.reports.sdk.*" %>

<%
//建立一個(gè)viewer對(duì)象實(shí)例,并設(shè)置
CrystalReportViewer viewer = new CrystalReportViewer();
viewer.setOwnPage(true);
viewer.setOwnForm(true);
viewer.setPrintMode(CrPrintMode.ACTIVEX);

//從session中取報(bào)表源
Object reportSource = session.getAttribute("reportSource");
viewer.setReportSource(reportSource);

//顯示水晶報(bào)表
viewer.processHttpRequest(request, response,this. getServletConfig().getServletContext(), null);

%>
第二種方法直接用一個(gè)頁面
CrystalReportViewer.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%//Crystal Java Reporting Component (JRC) imports.%>
<%-- jrcerom.jar--%>
<%@page import="com.crystaldecisions.reports.sdk.*" %>
<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.sdk.occa.report.lib.*" %>
<%-- webreporting.jar--%>
<%@page import="com.crystaldecisions.report.web.viewer.*"%>

<%
//水晶報(bào)表的位置
final String REPORT_NAME = "view_report.rpt";
%>

<%

try ......{
//打開報(bào)表
ReportClientDocument reportClientDoc = new ReportClientDocument();
reportClientDoc.open(REPORT_NAME, 0);

//把報(bào)表源放進(jìn)session,傳遞到報(bào)表顯示頁面
//session.setAttribute("reportSource", reportClientDoc.getReportSource());

//建立一個(gè)viewer對(duì)象實(shí)例,并設(shè)置
CrystalReportViewer viewer = new CrystalReportViewer();
viewer.setOwnPage(true);
viewer.setOwnForm(true);
viewer.setPrintMode(CrPrintMode.ACTIVEX);

//從session中取報(bào)表源
//Object reportSource = session.getAttribute("reportSource");
//viewer.setReportSource(reportSource);
viewer.setReportSource(reportClientDoc.getReportSource());

//顯示水晶報(bào)表
viewer.processHttpRequest(request, response,this. getServletConfig().getServletContext(), null);

//轉(zhuǎn)到報(bào)表顯示頁面
//response.sendRedirect("CrystalReportViewer.jsp");
}

catch(ReportSDKException ex) ......{
out.println(ex);
}

catch(Exception ex) ......{
out.println(ex);
}
%>
個(gè)人感覺第一種方法好,報(bào)表源跟顯示分開,安全,重用方便
posted on 2008-03-28 16:47
煒 閱讀(580)
評(píng)論(1) 編輯 收藏 所屬分類:
java基礎(chǔ)