org.apache.struts.actions
Class DownloadAction

java.lang.Object
  |
  +--org.apache.struts.action.Action
        |
        +--org.apache.struts.actions.DownloadAction

public abstract class DownloadAction
extends Action

This is an abstract base class that minimizes the amount of special coding that needs to be written to download a file. All that is required to use this class is to extend it and implement the getStreamInfo() method so that it returns the relevant information for the file (or other stream) to be downloaded. Optionally, the getBufferSize() method may be overridden to customize the size of the buffer used to transfer the file.

Since:
Struts 1.2.6

Inner Class Summary
static class DownloadAction.FileStreamInfo
          A concrete implementation of the StreamInfo interface which simplifies the downloading of a file from the disk.
static class DownloadAction.ResourceStreamInfo
          A concrete implementation of the StreamInfo interface which simplifies the downloading of a web application resource.
static interface DownloadAction.StreamInfo
          The information on a file, or other stream, to be downloaded by the DownloadAction.
 
Field Summary
protected static int DEFAULT_BUFFER_SIZE
          If the getBufferSize() method is not overridden, this is the buffer size that will be used to transfer the data to the servlet output stream.
 
Fields inherited from class org.apache.struts.action.Action
defaultLocale, servlet, token
 
Constructor Summary
DownloadAction()
           
 
Method Summary
 int copy(java.io.InputStream input, java.io.OutputStream output)
          Copy bytes from an InputStream to an OutputStream.
 ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it).
protected  int getBufferSize()
          Returns the size of the buffer to be used in transferring the data to the servlet output stream.
protected abstract  DownloadAction.StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Returns the information on the file, or other stream, to be downloaded by this action.
 
Methods inherited from class org.apache.struts.action.Action
addErrors, addMessages, execute, generateToken, getDataSource, getDataSource, getErrors, getLocale, getMessages, getResources, getResources, getServlet, isCancelled, isTokenValid, isTokenValid, resetToken, saveErrors, saveErrors, saveErrors, saveMessages, saveMessages, saveToken, setLocale, setServlet
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

DEFAULT_BUFFER_SIZE

protected static final int DEFAULT_BUFFER_SIZE
If the getBufferSize() method is not overridden, this is the buffer size that will be used to transfer the data to the servlet output stream.
Constructor Detail

DownloadAction

public DownloadAction()
Method Detail

getStreamInfo

protected abstract DownloadAction.StreamInfo getStreamInfo(ActionMapping mapping,
                                                           ActionForm form,
                                                           javax.servlet.http.HttpServletRequest request,
                                                           javax.servlet.http.HttpServletResponse response)
                                                    throws java.lang.Exception
Returns the information on the file, or other stream, to be downloaded by this action. This method must be implemented by an extending class.
Parameters:
mapping - The ActionMapping used to select this instance.
form - The optional ActionForm bean for this request (if any).
request - The HTTP request we are processing.
response - The HTTP response we are creating.
Returns:
The information for the file to be downloaded.
Throws:
java.lang.Exception - if an exception occurs.

getBufferSize

protected int getBufferSize()
Returns the size of the buffer to be used in transferring the data to the servlet output stream. This method may be overridden by an extending class in order to customize the buffer size.
Returns:
The size of the transfer buffer, in bytes.

execute

public ActionForward execute(ActionMapping mapping,
                             ActionForm form,
                             javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)
                      throws java.lang.Exception
Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it). Return an ActionForward instance describing where and how control should be forwarded, or null if the response has already been completed.
Overrides:
execute in class Action
Parameters:
mapping - The ActionMapping used to select this instance.
form - The optional ActionForm bean for this request (if any).
request - The HTTP request we are processing.
response - The HTTP response we are creating.
Throws:
java.lang.Exception - if an exception occurs.

copy

public int copy(java.io.InputStream input,
                java.io.OutputStream output)
         throws java.io.IOException
Copy bytes from an InputStream to an OutputStream.
Parameters:
input - The InputStream to read from.
output - The OutputStream to write to.
Returns:
the number of bytes copied
Throws:
java.io.IOException - In case of an I/O problem


Copyright 2000-2006 - The Apache Software Foundation