我在jsp中调用已经画好的报表,总是显示空白,别人连接我的url也显示空白,而且打开网页的速度挺慢!
jsp:
<%@ page import="net.sf.jasperreports.engine.export.*"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%@ page pageEncoding="UTF-8"%>
<%@ page import="net.sf.jasperreports.engine.util.*"%>
<%@ page import="net.sf.jasperreports.engine.JasperReport"%><html>
<body><%
try{
File reportFile = new File(
application.getRealPath("/report_conf/test.jasper"));
Map parameters = new HashMap();
//parameters.put("city", "Boston"); Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
.newInstance();
String url = "jdbc:microsoft:sqlserver://192.168.8.211:1433;DatabaseName=kyz_bs";
String user = "sa";
String password = "sa";
Connection conn = DriverManager.getConnection(url, user, password);

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),
parameters, conn); response.setContentType("application/pdf"); response.setContentLength(bytes.length); ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
catch(Exception e){
e.printStackTrace();
} %>i am here
</body>
</html>
test.jrxml:
<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
 name="test"
 columnCount="1"
 printOrder="Vertical"
 orientation="Portrait"
 pageWidth="595"
 pageHeight="842"
 columnWidth="535"
 columnSpacing="0"
 leftMargin="30"
 rightMargin="30"
 topMargin="20"
 bottomMargin="20"
 whenNoDataType="NoPages"
 isTitleNewPage="false"
 isSummaryNewPage="false">
<property name="ireport.scriptlethandling" value="2" />
<property name="ireport.encoding" value="UTF-8" />
<import value="java.util.*" />
<import value="net.sf.jasperreports.engine.*" />
<import value="net.sf.jasperreports.engine.data.*" />
<background>
<band height="0"  isSplitAllowed="true" >
</band>
</background>
<title>
<band height="50"  isSplitAllowed="true" >
</band>
</title>
<pageHeader>
<band height="50"  isSplitAllowed="true" >
</band>
</pageHeader>
<columnHeader>
<band height="30"  isSplitAllowed="true" >
</band>
</columnHeader>
<detail>
<band height="100"  isSplitAllowed="true" >
<staticText>
<reportElement
x="184"
y="16"
width="166"
height="57"
key="staticText-1"/>
<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
<textElement>
<font fontName="Arial" pdfFontName="STSong-Light" size="18" pdfEncoding ="UniGB-UCS2-H"/>
</textElement>
<text><![CDATA[dddddddddddddddddd]]></text>
</staticText>
</band>
</detail>
<columnFooter>
<band height="30"  isSplitAllowed="true" >
</band>
</columnFooter>
<pageFooter>
<band height="50"  isSplitAllowed="true" >
</band>
</pageFooter>
<lastPageFooter>
<band height="50"  isSplitAllowed="true" >
</band>
</lastPageFooter>
<summary>
<band height="50"  isSplitAllowed="true" >
</band>
</summary>
</jasperReport>

解决方案 »

  1.   

    xp系统,简体中文,调用的就两个,一个jsp,一个xml
      

  2.   

    jsp:
    <%@ page import="net.sf.jasperreports.engine.export.*"%>
    <%@ page import="net.sf.jasperreports.engine.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page pageEncoding="UTF-8"%>
    <%@ page import="net.sf.jasperreports.engine.util.*"%>
    <%@ page import="net.sf.jasperreports.engine.JasperReport"%><html>
    <body><%
    try{
    File reportFile = new File(
    application.getRealPath("/report_conf/test.jasper"));
    Map parameters = new HashMap();
    //parameters.put("city", "Boston"); Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
    .newInstance();
    String url = "jdbc:microsoft:sqlserver://192.168.8.211:1433;DatabaseName=kyz_bs";
    String user = "sa";
    String password = "sa";
    Connection conn = DriverManager.getConnection(url, user, password);

    byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),
    parameters, conn); response.setContentType("application/pdf"); response.setContentLength(bytes.length); ServletOutputStream ouputStream = response.getOutputStream();
    ouputStream.write(bytes, 0, bytes.length);
    ouputStream.flush();
    ouputStream.close();
    }
    catch(Exception e){
    e.printStackTrace();
    } %>i am here
    </body>
    </html>
      

  3.   

    test.jrxml:
    <?xml version="1.0" encoding="UTF-8"  ?>
    <!-- Created with iReport - A designer for JasperReports -->
    <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
    <jasperReport
     name="test"
     columnCount="1"
     printOrder="Vertical"
     orientation="Portrait"
     pageWidth="595"
     pageHeight="842"
     columnWidth="535"
     columnSpacing="0"
     leftMargin="30"
     rightMargin="30"
     topMargin="20"
     bottomMargin="20"
     whenNoDataType="NoPages"
     isTitleNewPage="false"
     isSummaryNewPage="false">
    <property name="ireport.scriptlethandling" value="2" />
    <property name="ireport.encoding" value="UTF-8" />
    <import value="java.util.*" />
    <import value="net.sf.jasperreports.engine.*" />
    <import value="net.sf.jasperreports.engine.data.*" />
    <background>
    <band height="0"  isSplitAllowed="true" >
    </band>
    </background>
    <title>
    <band height="50"  isSplitAllowed="true" >
    </band>
    </title>
    <pageHeader>
    <band height="50"  isSplitAllowed="true" >
    </band>
    </pageHeader>
    <columnHeader>
    <band height="30"  isSplitAllowed="true" >
    </band>
    </columnHeader>
    <detail>
    <band height="100"  isSplitAllowed="true" >
    <staticText>
    <reportElement
    x="184"
    y="16"
    width="166"
    height="57"
    key="staticText-1"/>
    <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
    <textElement>
    <font fontName="Arial" pdfFontName="STSong-Light" size="18" pdfEncoding ="UniGB-UCS2-H"/>
    </textElement>
    <text><![CDATA[dddddddddddddddddd]]></text>
    </staticText>
    </band>
    </detail>
    <columnFooter>
    <band height="30"  isSplitAllowed="true" >
    </band>
    </columnFooter>
    <pageFooter>
    <band height="50"  isSplitAllowed="true" >
    </band>
    </pageFooter>
    <lastPageFooter>
    <band height="50"  isSplitAllowed="true" >
    </band>
    </lastPageFooter>
    <summary>
    <band height="50"  isSplitAllowed="true" >
    </band>
    </summary>
    </jasperReport>
      

  4.   

    首先,你生成的是一个pdf文件
    又是用ouputStream,也就是说要客户端的IE打开pdf的阅读器?
    那就有客户端是否有pdf的阅读器
    还有是否有权限打开弹出窗口之类的安全问题吧?