我把.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);
}
[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文件
并以流的方式写回客户端
那么客户端浏览器自然会提示用户保存了
直接用帆软报表做的话会更加简单一些