This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
Well, in Struts 1 you could stream a file to the client in an action, just like a download servlet (and return a null instead of an ActionForward). Or in Struts 2 use the "stream" result type. Both are documented on the web, although I pretty much just explained them both.