La lógica es sencilla.
1.- Recibes la petición del usuario con el ID del archivo que desea descargar.
2.- Desde tu servlet, buscas el archivo que quieres y lo lees
3.- Una vez que leíste el archivo del disco se haces un stream para enviarselo al cliente, aqui un ejemplo:
http://www.mkyong.com/java/how-to-do...site-java-jsp/
4.- Listo, el navegador se encarga del resto. (abre la pantalla de guardar archivo al usuario)
Saludos