我正在使用;
我试图在网络服务器中显示报告;
<%@ page import="java.io.*"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h2>Hello World!</h2>
<%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "root", "root");
} catch (Exception ex) {
ex.printStackTrace();
}
File reportFile = new File(application.getRealPath("report.jasper"));
Map parameters = new HashMap();
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outStream = response.getOutputStream();
outStream.write(bytes, 0, bytes.length);
outStream.flush();
outStream.close();
%>
</body>
</html>
它在页面上给我一个附加错误(jsp和同一文件夹中的报告文件)
任何想法和建议都高度评价
我跟随this tutorial按照
谢谢,
Supun
答案 0 :(得分:1)
您应该考虑正确部署应用程序,请参阅@Ghayel的答案
您的问题是application.getRealPath("report.jasper")
返回null
,因此无法找到report.jasper ..
因为你坚持使用代码:
替换
File reportFile = new File(application.getRealPath("report.jasper"));
与
File reportFile = new File("C:\\Program Files\\Apache Software Foundation\\Tomcat 8.0\\webapps\\reports\\report.jasper");
确保 .jrxml .jasper 的编译版本在那里...... nullpointer
将消失。
答案 1 :(得分:0)
请始终在$ TOMCAT_HOME / webapps / your-project-directory-root中创建项目目录,然后将所有jar文件插入到项目根目录中作为WEB-INF / lib
在你的project-directory-root中,你可以添加html,css,js,jsp等,并将java文件添加到/ WEB-INF / classes文件夹
在你的情况下:
干杯!!