Java 为什么JasperViewer只在本地主机上工作?
我只是想知道为什么JasperViewer只在本地主机上工作。当我将项目部署到服务器时,客户端无法再查看报告Java 为什么JasperViewer只在本地主机上工作?,java,jasper-reports,Java,Jasper Reports,我只是想知道为什么JasperViewer只在本地主机上工作。当我将项目部署到服务器时,客户端无法再查看报告 String reportDir = getServletContext().getRealPath("WEB-INF/classes/com/proj/reports"); String fileName = reportDir + "\\" + request.getParameter("reportName") + ".jasper"; File o
String reportDir = getServletContext().getRealPath("WEB-INF/classes/com/proj/reports");
String fileName = reportDir + "\\" + request.getParameter("reportName") + ".jasper";
File outReportDir = new File("C:/REPORTS_FOLDER");
outReportDir.mkdir();
long millis = System.currentTimeMillis();
String outFileName = outReportDir + "\\" + request.getParameter("reportName") + "_" + millis + ".pdf";
HashMap parameters = new HashMap();
parameters.put("P_BOOKING_MONTH", request.getParameter("selMonth"));
parameters.put("P_BOOKING_YR", request.getParameter("selYear"));
try {
Connection conn = ConnectionUtil.getConnection();
JasperPrint print = JasperFillManager.fillReport(fileName, parameters, conn);
JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.exportReport();
JasperViewer.viewReport(print, false); }...
您已经在源代码中硬编码了输出目录 始终可能存在诸如服务器不是Windows环境或服务器中不存在文件夹“C:/REPORTS\u folder”之类的问题
最好将其作为可配置属性 您已经在源代码中硬编码了输出目录 始终可能存在诸如服务器不是Windows环境或服务器中不存在文件夹“C:/REPORTS\u folder”之类的问题 最好将其作为可配置属性 是一个组件,它是在执行命令的计算机上启动的(通常用于已安装的应用程序),因此,如果您在服务器上执行命令,它将在服务器上打开(或抛出一个,如果没有配置为具有屏幕),我们不能在服务器应用程序中使用此命令 您可以使用在客户端计算机上启动命令,但我强烈建议不要使用此命令(它在浏览器中的支持是,因此您无法确定它是否适用于所有客户端) 通常情况下,所做的是将导出为pdf(html或其他选择的格式)的发送到客户端浏览器,客户端可以使用喜爱的程序打开文件并预览它 在已经导出为pdf的示例代码中,将pdf直接传递给客户端。因此删除
JasperViewer.viewReport(print, false);
是在执行命令的计算机上启动的组件(通常在已安装的应用程序中使用),因此,如果在服务器上执行命令,它将在服务器上打开(或抛出一个,如果未配置为具有屏幕),我们不能在服务器应用程序中使用此命令
您可以使用在客户端计算机上启动命令,但我强烈建议不要使用此命令(它在浏览器中的支持是,因此您无法确定它是否适用于所有客户端)
通常情况下,所做的是将导出为pdf(html或其他选择的格式)的发送到客户端浏览器,客户端可以使用喜爱的程序打开文件并预览它
在已经导出为pdf的示例代码中,将pdf直接传递给客户端。因此删除
JasperViewer.viewReport(print, false);
请添加客户端在连接到服务器时遇到的错误。请参阅@PetterFriberg谢谢您的回复。但我没有成功。我刚刚接触java,不知道如何为此制作一些小程序。顺便说一下,非常感谢@RalphSantiago为什么需要小程序?只需将pdf传递给客户端,在web应用程序中不使用JasperViewer.viewReport(打印,false);请添加客户端在连接到服务器时遇到的错误。请参阅@PetterFriberg谢谢您的回复。但我没有成功。我刚刚接触java,不知道如何为此制作一些小程序。顺便说一下,非常感谢@RalphSantiago为什么需要小程序?只需将pdf传递给客户端,在web应用程序中不使用JasperViewer.viewReport(打印,false);