While you certainly don't have to use DownloadAction when writing an Action that downloads a file, using it would certainly make the process easier. You just have to override one method and Struts does the rest. Below is an example of an action that downloads the file "c:\temp\myPdfFile.pdf".
Believe it or not, that's it. The abstract DownloadAction class handles all the rest.
Jaydeep: You can always download the Struts source code and take a look at the source for the DownloadAction class. I suspect that it is only 20 or so lines of code.
Also, if your files are saved on the web server's file system in a directory that is accessible from the outside world, you can just put a plain old link in your web page. Of course this would not work if you had to retrieve the file from a database or you wanted to wrap access to the file with some logic.