Прогресс нельзя определить, не зная заранее длину содержимого тела ответа на стороне клиента.Чтобы сообщить клиенту о длине содержимого, необходимо установить заголовок Content-Length
на стороне сервера.
Измените строку
InputStream is = ctx.getResourceAsStream(filepath);
на
URL resource = ctx.getResource(filepath);
URLConnection connection = resource.openConnection();
response.setContentLength(connection.getContentLength()); // <---
InputStream is = connection.getInputStream();
// ...
Не имеет отношения к конкретной проблеме , ваша обработка исключений плохая.Заменить строку
System.out.println(ex.getStackTrace());
на
throw new ServletException(ex);