我正在开发一个简单的Web应用程序,其中客户端应该能够通过单击HTML页面中的超链接来下载pdf文件。我正在使用MVC模式.Below是我的Servlet代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("application/pdf");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/abc.pdf");
int read = 0;
byte [] bytes = new byte[1024];
OutputStream os = response.getOutputStream();
while((read = is.read(bytes)) != -1)
{
os.write(bytes, 0, read);
}
os.flush();
os.close();
}
我正在使用Apache Tomcat 6.0
以下是我得到的错误:
SEVERE: Servlet.service() for servlet download threw exception
java.lang.NullPointerException
at BookDownloaderServlet.doGet(BookDownloaderServlet.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
abc.pdf已正确放置在应用程序上下文下。仍然无法找到这种例外的原因。 善意的帮助。 提前谢谢
答案 0 :(得分:1)
这一行最有可能是你的问题:
InputStream is = ctx.getResourceAsStream("/abc.pdf");
is
已分配给null
。它在这里引发了一个例外:
is.read(bytes)
看起来CLASSPATH的根目录中不存在abc.pdf
文件。
答案 1 :(得分:0)
尝试将InputStream is = ctx.getResourceAsStream("/abc.pdf");
更改为InputStream is = ctx.getResourceAsStream("abc.pdf");
删除/