Hi I'm trying to download PDF file stored in MySQL database in Blob format or Binary and I'm getting Null exception on do.GET HERE is My Code and Stack Trace`
enter code here
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/downloadFileServlet")
public class DBFileDownloadServlet extends HttpServlet {
    // size of byte buffer to send file
    private static final int BUFFER_SIZE = 4096;    
// database connection settings
private String dbURL = "jdbc:mysql://localhost:3306/test";
private String dbUser = "root";
private String dbPass = "secret";
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // get upload id from URL's parameters
    int uploadId = Integer.parseInt(request.getParameter("id"));
    Connection conn = null; // connection to the database
    try {
        // connects to the database
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","ROOT");
        // queries the database
        String sql = "SELECT * FROM files_upload WHERE upload_id = ?";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setInt(1, uploadId);
        ResultSet result = statement.executeQuery();
        if (result.next()) {
            // gets file name and file blob data
            String fileName = result.getString("file_name");
            Blob blob = result.getBlob("file_data");
            InputStream inputStream = blob.getBinaryStream();
            int fileLength = inputStream.available();
            System.out.println("fileLength = " + fileLength);
            ServletContext context = getServletContext();
            // sets MIME type for the file download
            String mimeType = context.getMimeType(fileName);
            if (mimeType == null) {         
                mimeType = "application/octet-stream";
            }               
            // set content properties and header attributes for the response
            response.setContentType(mimeType);
            response.setContentLength(fileLength);
            String headerKey = "Content-Disposition";
            String headerValue = String.format("attachment; filename=\"%s\"", fileName);
            response.setHeader(headerKey, headerValue);
            // writes the file to the client
            OutputStream outStream = response.getOutputStream();
            byte[] buffer = new byte[BUFFER_SIZE];
            int bytesRead = -1;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outStream.write(buffer, 0, bytesRead);
            }
            inputStream.close();
            outStream.close();              
        } else {
            // no file found
            response.getWriter().print("File not found for the id: " + uploadId);   
        }
    } catch (SQLException ex) {
        ex.printStackTrace();
        response.getWriter().print("SQL Error: " + ex.getMessage());
    } catch (IOException ex) {
        ex.printStackTrace();
        response.getWriter().print("IO Error: " + ex.getMessage());
    } finally {
        if (conn != null) {
            // closes the database connection
            try {
                conn.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }           
    }
}
}
     SEVERE: Servlet.service() for servlet [Download] in context with path           [/Download111] threw exception
     java.lang.NumberFormatException: null
     at java.lang.Integer.parseInt(Unknown Source)
     at java.lang.Integer.parseInt(Unknown Source)
     at Download.doGet(Download.java:42)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
     at    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
     at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
Please Help..
if i change the int parse to string I'm getting http 500 error of httpmaxheadersize i cant retrieve a PDFs stored in MySQL dB
 
     
    