大家早上好,我的名字是大卫,而且是jasper报道中的新手(urm ..am也是新的堆叠过流)。我下载了一个关于jasper报告的教程,指导我完成创建第一个报告的过程。我已经成功创建了我的.jrxml
文件,将其编译为.jasper
文件并将其填充到.jprint
文件中,所有文件都借助java代码,我还成功预览了报告jasper viewer借助我build.xml
文件中的ant目标。
我现在的问题是如何在网络浏览器上显示报告。
本教程中给出的所有内容都是一个java servlet代码,它将jasper报告导出为pdf格式,然后将在浏览器中显示。这是代码:
package net.ensode.jasperbook;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
public class FirstReportSendToBrowserServlet extends. HttpServlet{
@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest. request, HttpServletResponse response)
throws ServletException, IOException{
ServletOutputStream servletOutputStream = response.getOutputStream();
InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/FirstReport.jasper");
try{
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, new HashMap(), new JREmptyDataSource());
response.setContentType("application/pdf");
servletOutputStream.flush();
servletOutputStream.close();
}
catch(JRException e){
//display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain");
response.getOutputStream().print(stringWriter.toString());
}
}
}
现在我的问题是如何在servlet continer中部署上面的代码。因此它将在我的网络浏览器上以pdf格式显示我的jasper报告。该教程说,可以在他们的网站上找到一个自动化该过程的蚂蚁脚本,但我搜索并没有找到任何...
所以如果你们中的任何人都可以给我关于如何在servlet容器中部署上述代码的说明,或者给我一个链接来指导我如何创建自动化过程的ant脚本,我会非常非常因为我在这个问题上花了将近三天的时间。
答案 0 :(得分:0)
我建议你使用像eclipse这样的IDE。安装此版本,其中包含用于Web开发的所有工具。
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/keplersr1
然后你可以创建一个“动态web项目”并配置一些servlet容器(可能是tomcat - http://tomcat.apache.org/download-70.cgi)。
然后(最后)您可以右键单击您的项目并选择“导出”,然后选择“战争”。将其直接保存到tomcat的webapp目录中。
它将生成一个文件,您可以放入容器中,希望一切都会好的。
当然,这里有一个学习曲线,但使用IDE将节省您的时间。
答案 1 :(得分:0)
您需要做的是在servlet容器中创建一个Web项目。在Tomcat
下,只需使用此结构在webapps
文件夹下创建一个子文件夹即可轻松完成此操作(仅作为示例):
webapps
|
+---projectName
|
+---WEB-INF
|
+---web.xml
|
+---classes
|
+---ServletClass.class
ServletClass.class
是编译的servlet。
web.xml
必须包含wepapp描述,例如:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
<servlet>
<servlet-name>ServletClass</servlet-name>
<servlet-class>ServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletClass</servlet-name>
<url-pattern>/url-to-servlet.pdf</url-pattern>
</servlet-mapping>
</web-app>
然后重新启动引擎。现在,在浏览器中键入此URL应该可以解决问题:
http://server-address:8080/projectName/url-to-servlet.pdf
答案 2 :(得分:0)
我解决了我的问题:
所以这就是全部