Не получается считать pdf в сервлете

370
10 июня 2017, 13:49

Есть сервлет:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import ru.dsu.saidov.web.beans.Book;
    import ru.dsu.saidov.web.database.Database;
    public class ShowPdf extends HttpServlet {
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("application/pdf");
            OutputStream out = response.getOutputStream();
            PreparedStatement stmt = null;
            ResultSet rs = null;
            Connection conn = null;
            int index = Integer.valueOf(request.getParameter("id"));
            try {
                conn = Database.getConnection();
                stmt = conn.prepareStatement("SELECT content FROM Book WHERE id = ?");
                stmt.setInt(1, index);
                rs = stmt.executeQuery();
                String s = System.getProperty("user.dir");
                File f = null;
                while (rs.next()) {
                    try {
                        f = new File(s.substring(0, s.length() - 6) + "generated/jsp/upload/" + rs.getString("content"));
    //home/admin/GlassFish_Server/glassfish/domains/domain/generated/jsp/upload/имя файла
                        System.out.println(f.exists());
                        byte[] bytesArray = new byte[(int) f.length()];
                        FileInputStream fis = new FileInputStream(f);
                        fis.read(bytesArray);
                        fis.close();
                        out.write(bytesArray);
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    } finally {
                        out.close();
                    }
                }
            } catch (SQLException ex) {
 Logger.getLogger(ShowPdf.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt != null) {
                        stmt.close();
                    }
                    if (rs != null) {
                        rs.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(ShowPdf.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /**
         * Handles the HTTP <code>GET</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
        /**
         * Handles the HTTP <code>POST</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
        /**
         * Returns a short description of the servlet.
         *
         * @return a String containing servlet description
         */
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
    }

Из БД получаю имя файла, затем определяю путь к нему в ФС. Файл правильно находится, но вот pdf не получается отобразить. Но при этом никаких ошибок не вываливается. Что я не так делаю, подскажите?

READ ALSO
Как пробежаться по вложенным Map?

Как пробежаться по вложенным Map?

Есть map вида Map<BigInteger, Map<BigInteger, Object>> В реальности иерархия гораздо сложнееКак пробежаться по всем маппам и везде, где встречено нужное...

415
Как сделать скриншот dialogfragment

Как сделать скриншот dialogfragment

Публикую в вк результат игрыЕсли публиковать как сообщение , то результат можно редактировать в вк

338
Деконвертация кода из Kotlin в Java

Деконвертация кода из Kotlin в Java

Пользуюсь IntelliJ Idea, решил по фану конвертировать свой код Java-код в Kotlin, дабы поглядеть как выглядят мои алгоритмы на новом языкеНо чуть позже...

182