原創|其它|編輯:郝浩|2012-09-07 11:15:40.000|閱讀 604 次
概述:如何用FASTREPORT實現WEB應用中自定義報表,WEB SERVER部分介紹
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如何用FASTREPORT實現WEB應用中自定義報表(一)
如何用FASTREPORT實現WEB應用中自定義報表(二)
前面我們講到FASTREPORT實現WEB應用中自定義報表,會用到REPORT SERVER、WEB SERVER、ACTIVEX三部分內容,現在就來說一下里面的WEB SERVER部分:
WEB SERVER
方案中WEB SERVER的作用主要是根據ACTIVEX的請求調用REPORT SERVER,并將REPORT SERVER生成的.zip文件發送給ACTIVEX。樣例通過一個report.jsp文件來處理:ACTIVEX通過get請求report.jsp文件,report.jsp文件調用REPORT SERVER處理后,將.zip文件發送給ACTIVEX。
Report.jsp文件:
<%@ page import="…"%>
<%@page contentType=" APPLICATION/OCTET-STREAM" %>
<% try
{
String reqFileName = request.getParameter("rpFileName");
String reqMode = request.getParameter("mode");//d為設計報表,r為打印報表
String rpFileName = xxxx.getRpFileName(reqFileName); //根據請求的報表名獲得實際的報表文件名,如請求訂單報表,而訂單報表實際對應的報表文件為order.frf。
String l_cmd="reportserver.exe "+reqMode+" "+ reqFileName;
Process l_ps=java.lang.Runtime.getRuntime().exec(l_cmd,null);
byte[] l_b=new byte[100];
while(l_ps.getInputStream().read(l_b,0,100)!=-1){ }//發送文件
String zipFileName = xxxx.getZipFileName(reqFileName); //獲得壓縮文件名
response.setHeader("Content-Disposition","attachment; filename=\"" +
zipFileName + "\"");
java.io.FileInputStream fileInputStream =
new java.io.FileInputStream(zipFileName);
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
}
catch(Exception e)
{
……
}
%>
String l_cmd="reportserver.exe "+reqMode+" "+ reqFileName; 組成調用REPORT SERVER的命令串。while(l_ps.getInputStream().read(l_b,0,100)!=-1){ ; } 等待REPORT SERVER執行完成,否則,程序在啟動REPORT SERVER后即執行下一行語句。發送文件的方式有多種,比如也可以由ACTIVEX通過ftp方式取得。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載