Eso puede suceder si no cargó el controlador antes de realizar la primera conexión.
Class.forName("com.mysql.jdbc.Driver");
Para estar seguro, el controlador debe ir en /WEB-INF/lib , no en /WEB-INF . Por cierto, tienes algunos agujeros de inyección de SQL. Mire PreparedStatement . El finally También se puede mejorar, como lo tienes ahora, el con nunca se cerrará cuando rs.close() lanza una excepción.