JavaWebStart应用程序中的JasperReports
我编写了一个简单的应用程序来从服务器上获取订单。我决定能够运行一些报告并在JasperViewer中显示它们,然后从那里决定是否要以其他格式打印或导出/保存。当我在NetBeans中运行该项目时,它工作得很好,但是一旦我编译它并将其发布到我的服务器上,报告就会运行,但我无法在JasperViewer中打开该报告。事实上,查看器根本不会启动 这是我的密码:JavaWebStart应用程序中的JasperReports,java,jasper-reports,Java,Jasper Reports,我编写了一个简单的应用程序来从服务器上获取订单。我决定能够运行一些报告并在JasperViewer中显示它们,然后从那里决定是否要以其他格式打印或导出/保存。当我在NetBeans中运行该项目时,它工作得很好,但是一旦我编译它并将其发布到我的服务器上,报告就会运行,但我无法在JasperViewer中打开该报告。事实上,查看器根本不会启动 这是我的密码: try { Connection con = DriverManager.getConnection( "jd
try {
Connection con = DriverManager.getConnection(
"jdbc:mysql://MYDATABASE",
"MY_UN",
"MY_PW");
java.sql.Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT `Product_ID` AS PRODUCT_ID, `Name` AS PRODUCT_DESCRIPTION, `Qty` AS QTY, `Price` AS PRICE_EACH_LINE, `Line_Total` AS LINE_TOTAL_LINE FROM `orderlines`;");
JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(rs);
final Map<String, Object> parameter = new HashMap<String, Object>();
parameter.put("DEALER_NAME", "TY JACOBS");
parameter.put("DEALER_STREET", "MY_ADDRESS");
parameter.put("DEALER_CITY_STATE_ZIP", "MY_CITY_STATE_ZIP");
parameter.put("DEALER_PHONE", "MY_PHONE_NUMBER");
ClassLoader classloader = getClass().getClassLoader();
InputStream url = null;
url = classloader.getResourceAsStream("OK/report3.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(url);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, resultSetDataSource);
JasperViewer.viewReport(jasperPrint, false);
} catch (SQLException|JRException ex) {
Logger.getLogger(DbReportDSFill.class.getName()).log(Level.SEVERE, null, ex);
}
试试看{
Connection con=DriverManager.getConnection(
“jdbc:mysql://MYDATABASE",
“我的联合国”,
“我的”;
java.sql.Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(“选择`Product_ID`作为Product_ID,`Name`作为Product_DESCRIPTION,`Qty`作为Qty,`Price`作为Price_每条线,`LINE_Total`作为orderlines`中的LINE_Total_线”);
JResultSetDataSource resultSetDataSource=新的JResultSetDataSource(rs);
最终映射参数=new HashMap();
参数put(“经销商名称”、“TY JACOBS”);
参数put(“经销商街”、“我的地址”);
参数put(“经销商城市州”、“我的城市州”);
参数.put(“经销商电话”、“我的电话号码”);
ClassLoader ClassLoader=getClass().getClassLoader();
InputStream url=null;
url=classloader.getResourceAsStream(“OK/report3.jrxml”);
JasperReport-JasperReport=JasperCompileManager.compileReport(url);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,参数,结果数据源);
JasperViewer.viewReport(jasperPrint,false);
}catch(SQLException | jrex异常){
Logger.getLogger(DbReportDSFill.class.getName()).log(Level.SEVERE,null,ex);
}
还有一件事,我可以在本地运行它,没有问题。似乎一旦我将它发布到服务器上,我就无法在JasperViewer中获取报告 我想,我们也有类似的情况。使用
JasperViewer.viewReport(jasperPrint,false)代码>它显示在部署它的同一服务器上。因此,当您在本地执行时,它可以正常工作,因为它是在本地部署的。您可以验证尝试从其他系统点击您的本地url时,您将看到jasperviewer将在您的系统中打开,而不是从调用它的位置打开
以下是我们所做的:
转换为字节数组并将其传递到前端进行显示
byte[] byteArray = JasperExportManager.exportReportToPdf(jasperPrint);
然后httpServletResponse.getOutputStream().write(byteArray)代码>
希望这有帮助