If you have a small number of files a user can downlad, putting the files in the web context and having an action forward to them is not a bad option. If you're concerned about a user guessing the file location and downloading them without going through your action, you can always put them in the WEB-INF directory. That way even if a user does guess the location, they still can't download the file directly.
If you have a larger collection of files, or have files that are dynamically generated, you will need to use the java.io package to read the file and then output it to the HttpServletResponse object's Output Stream. There is a Struts Action that you can subclass that will help you do this. Look for DownloadAction in the
struts extras javadoc.