jasperreport如何通过JSP调用生成文件

我把.jrxml和.jasper文件放到myeclipse项目中,导入相关的包了,但通过jsp按扭去调用生成报表文件方法,怎么找不到路径?
我用main方法去测试是可以生成。这是怎么回事?
其代码如下:
index.jsp页面:

servlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    response.setContentType("text/html;charrset=GBK");
    ResultSet resultSet = null;
     Connection con = JDBC.getConnection();    
      PreparedStatement statement;
    try {
        statement = con.prepareStatement(     
            "select * from fruitSell "      
         );
         resultSet = statement.executeQuery();  
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }      

      JRResultSetDataSource result =     
         new JRResultSetDataSource( resultSet );    
      JasperReport jasperReport;
    try {
        jasperReport = JasperCompileManager.compileReport(getServletContext().getRealPath("reports/fruitSell.jrxml"));

      JasperPrint jasperPrint =     
         JasperFillManager.fillReport(     
            jasperReport, new HashMap(), result     
         );    

      JasperExportManager.exportReportToPdfFile(    
         jasperPrint, "reports/fruitSell1.pdf"  
      ); 
    } catch (JRException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    getServletContext().getRequestDispatcher("/doIndex.jsp").forward(request, response);
}

4个回答

[quote]
现在是生成不了。到
JasperExportManager.exportReportToPdfFile(

jasperPrint, "reports/fruitSell1.pdf"

);
这一步又说打不到路径了
[/quote]

lz改成用exportReportToPdfStream方法把结果导出为一个outputstream,再用servlet中的out对象 写回客户端去

[code="java"]jasperReport = JasperCompileManager.compileReport(getServletContext().getRealPath("reports/fruitSell.jrxml"));[/code]

这个getRealPath的参数要以/开头

/代表web应用的根目录

你的Servlet是在服务端运行的

要弹出窗口提示保存也是在服务器上弹出啊

建议你在服务端Servlet生成pdf文件

并以流的方式写回客户端

那么客户端浏览器自然会提示用户保存了

直接用帆软报表做的话会更加简单一些

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题