Скачать doGet () сервлета выдает исключение NullPointerException - PullRequest
2 голосов
/ 14 января 2012

Я занимаюсь разработкой простого веб-приложения, в котором клиент должен иметь возможность загружать файл PDF, щелкая гиперссылку со страницы HTML. Я использую шаблон MVC. Ниже приведен мой код для сервлета:

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 правильно помещен в контекст приложения . До сих пор не могу найти причину этого исключения. любезно помогите. заранее спасибо

Ответы [ 2 ]

1 голос
/ 14 января 2012

Скорее всего, это ваша проблема:

InputStream is = ctx.getResourceAsStream("/abc.pdf");

is назначено на null.Здесь выдается исключение:

is.read(bytes)

Похоже, abc.pdf файл не существует в корне вашей CLASSPATH.

0 голосов
/ 14 января 2012

попробуйте изменить InputStream is = ctx.getResourceAsStream("/abc.pdf"); на InputStream is = ctx.getResourceAsStream("abc.pdf");

удалить /

...