What are your requirements? You just want them to make a request to a servlet and the servlet sends them the file?
There was a similar discussion here, but the solution I quite liked was to use the RequestDiospatcher. You may need to set the filename and content type first.
Otherwise you can read from a FileInputStream and write to the OutputStream, but you would still need the filename and content type to be set.
Essentially you set the content type and 'filename' on the response. The lines for these should be obvious. You use a FileInputStream of some other type of stream to suck in a file, then pump it down the OutputStream. When you run out of data, stop.
Actually there is a bug in the bos.write(bytesRead) line, that's not right at all. Icky code.