Skip navigation links

Oracle Multimedia Servlets and JSP Java API Reference
11g Release 1 (11.1)

Part No. B28412-01


oracle.ord.im
Class OrdHttpResponseHandler

java.lang.Object
  extended by oracle.ord.im.OrdHttpResponseHandler

Direct Known Subclasses:
OrdHttpJspResponseHandler

public class OrdHttpResponseHandler
extends java.lang.Object

The OrdHttpResponseHandler class facilitates the retrieval of media data from Oracle Database, and its delivery to a browser or other HTTP client from a Java servlet.

An Oracle Multimedia Java object, such as an OrdImage object, is not dependent on the JDBC statement or result set from which it was obtained. However, an Oracle Multimedia Java object is dependent on the JDBC connection it is using and on which the SQL statement was executed, or from which the result set was obtained. Therefore, having obtained an Oracle Multimedia Java object from the database, an application must not release the JDBC connection before delivering the media data to the browser.

This class contains the following field: public static final int DEFAULT_BUFFER_SIZE.

The OrdHttpResponseHandler class uses a default buffer size of 32768 to retrieve LOB data from the database and deliver it to the client. You can override this value with the setBufferSize method.

The following example shows how to use the OrdHttpResponseHandler class to retrieve an image from a database and deliver it to a browser:

  PreparedStatement stmt = conn.prepareStatement(
      "select photo from photo_album where id = ?" );
  stmt.setString( 1, request.getParameter( "photo_id" ) );
  OracleResultSet rset = (OracleResultSet)stmt.executeQuery();
  if ( rset.next() )
  {
      OrdImage media = (OrdImage)rset.getORAData( 1, OrdImage.getORADataFactory() );
      OrdHttpResponseHandler handler =
          new OrdHttpResponseHandler( request, response );
      handler.sendImage(media);
  }
  else
  {
      response.setStatus( response.SC_NOT_FOUND );
  }
  rset.close();
  stmt.close();
A Note on the Use of Charsets Other Than ISO-8859-1 (Latin-1)
If you wish to retrieve from an OrdDoc object a text-based document with a character set (charset) other than ISO-8859-1 (also called Latin-1), and deliver that document to a browser, your application must specify the charset name in the HTTP Content-Type header.

If the charset specification is included in the MIME type attribute in the OrdDoc object, then your application needs to call only the sendDoc method to retrieve the document and deliver it to the browser. For example, an HTML page that is written in Japanese might be stored in the OrdDoc object with a MIME type of text/html; charset=Shift_JIS. In this case, calling sendDoc method will send the appropriate Content-Type header, allowing the browser to display the page correctly.

However, if the MIME type in the OrdDoc object does not include the charset specification, then you must call one of the sendResponse methods and specify the MIME type explicitly. For example, if the MIME type of an HTML page written in Japanese is stored in the OrdDoc object as text/html, and the charset name is specified in a separate column, then the application must append the charset specification to the MIME type before calling a sendResponse method. For example:

  OraclePreparedStatement stmt =
      (OraclePreparedStatement)conn.prepareStatement(
          "select doc, charset from documents where id = ?" );
  stmt.setString( 1, request.getParameter("id") );
  OracleResultSet rset = (OracleResultSet)stmt.executeQuery();
  if ( rset.next() )
  {
      OrdDoc doc = (OrdDoc)rset.getORAData( 1, OrdDoc.getORADataFactory() );
      String charset = rset.getString( 2 );
      String mimeType = doc.getMimeType() + "; charset=" + charset;
      OrdHttpResponseHandler handler =
                      new OrdHttpResponseHandler( request, response );
      handler.sendResponse( mimeType, doc.getContentLength(),
                            doc.getContent(), doc.getUpdateTime() );
  }
  else
  {
      response.setStatus( response.SC_NOT_FOUND );
  }
  rset.close();
  stmt.close();
Prerequisites

In order to run Oracle Multimedia methods for servlets and JSP, you will need to import classes from the oracle.ord.im package into your Java file.

You may also need to import classes from the following Java packages:

 java.sql.
 java.io.
 javax.servlet.
 javax.servlet.http.
 oracle.jdbc.
 oracle.sql.

Field Summary
static int DEFAULT_BUFFER_SIZE
          The OrdHttpResponseHandler class uses a default buffer size of 32768 to retrieve LOB data from the database and deliver it to the client.

 

Constructor Summary
OrdHttpResponseHandler()
          Creates an OrdHttpResponseHandler object to handle the response to a media retrieval request.
OrdHttpResponseHandler(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Creates an OrdHttpResponseHandler object to handle the response to a media retrieval request and specifies the HttpServletRequest and HttpServletResponse objects for the response handler.

 

Method Summary
 void sendAudio(oracle.ord.im.OrdAudio media)
          Retrieves an audio clip from an OrdAudio object and delivers it to the browser.
 void sendDoc(oracle.ord.im.OrdDoc media)
          Retrieves media data from an OrdDoc object and delivers it to the browser.
 void sendImage(oracle.ord.im.OrdImage media)
          Retrieves an image from an OrdImage object and delivers it to the browser.
 void sendResponse()
          Retrieves a media object from one of the Oracle Multimedia objects (OrdImage, OrdAudio, OrdVideo, or OrdDoc) and delivers it to the browser.
 void sendResponse(java.lang.String contentType, int length, oracle.sql.BFILE bfile, java.sql.Timestamp lastModified)
          Builds the HTTP response header, then retrieves the contents of the BFILE from the database and delivers it to the browser.
 void sendResponse(java.lang.String contentType, int length, oracle.sql.BLOB blob, java.sql.Timestamp lastModified)
          Builds the HTTP response header, then retrieves the contents of the BLOB from the database and delivers it to the browser.
 void sendResponse(java.lang.String contentType, int length, java.io.InputStream in, java.sql.Timestamp lastModified)
          Builds the HTTP response header, then retrieves the contents of the InputStream object and delivers it to the browser.
 void sendResponseBody(int length, oracle.sql.BFILE bfile)
          Retrieves the content of a BFILE from the database and delivers it as the response body to the browser.
 void sendResponseBody(int length, oracle.sql.BLOB blob)
          Retrieves the content of a BLOB from the database and delivers it as the response body to the browser.
 void sendResponseBody(int length, java.io.InputStream in)
          Retrieves the content of the InputStream object and delivers it as the response body to the browser.
 void sendVideo(oracle.ord.im.OrdVideo media)
          Retrieves a video clip from an OrdVideo object and delivers it to the browser.
 void setBufferSize(int bufferSize)
          Sets the buffer size for LOB read and HTTP response write operations.
 void setEncodeHtml(boolean doEncode)
          Enables the encoding of special characters (! " % & ' ( ) ; < >) from the response output stream with HTML numeric code.
 void setHeader(java.lang.String name, int value)
          Sets the HTTP response header with the integer (int) value.
 void setHeader(java.lang.String name, long date)
          Sets the HTTP response header with the date value.
 void setHeader(java.lang.String name, java.lang.String value)
          Sets the HTTP response header with the String value.
 void setMedia(oracle.ord.im.OrdAudio media)
          Sets the OrdAudio object as the media object to be delivered.
 void setMedia(oracle.ord.im.OrdDoc media)
          Sets the OrdDoc object as the media object to be delivered.
 void setMedia(oracle.ord.im.OrdImage media)
          Sets the OrdImage object as the media object to be delivered.
 void setMedia(oracle.ord.im.OrdVideo media)
          Sets the OrdVideo object as the media object to be delivered.
 void setServletRequest(javax.servlet.http.HttpServletRequest request)
          Specifies the HttpServletRequest object for this response handler.
 void setServletResponse(javax.servlet.http.HttpServletResponse response)
          Specifies the HttpServletResponse object for this response handler.

 

Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

 

Field Detail

DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE
The OrdHttpResponseHandler class uses a default buffer size of 32768 to retrieve LOB data from the database and deliver it to the client. This value can be overridden using the setBufferSize() method.
See Also:
Constant Field Values

Constructor Detail

OrdHttpResponseHandler

public OrdHttpResponseHandler()
Creates an OrdHttpResponseHandler object to handle the response to a media retrieval request. The application must subsequently specify the HttpServletResponse object by calling the setServletResponse method, and can optionally specify the HttpServletRequest object by calling the setServletRequest method.

OrdHttpResponseHandler

public OrdHttpResponseHandler(javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response)
Creates an OrdHttpResponseHandler object to handle the response to a media retrieval request and specifies the HttpServletRequest and HttpServletResponse objects for the response handler.
Parameters:
request - an object of type HttpServletRequest.
response - an object of type HttpServletResponse.

Method Detail

setServletRequest

public void setServletRequest(javax.servlet.http.HttpServletRequest request)
Specifies the HttpServletRequest object for this response handler. You must call this method if you did not specify the HttpServletRequest object in the constructor and you want to call any of the send methods other than the sendResponseBody methods. You do not need to call this method if you call only the sendResponseBody methods.
Parameters:
request - an object of type HttpServletRequest.

setServletResponse

public void setServletResponse(javax.servlet.http.HttpServletResponse response)
Specifies the HttpServletResponse object for this response handler. You must call this method before calling any of the send methods if you did not specify the HttpServletResponse object in the constructor.
Parameters:
response - an object of type HttpServletResponse.

sendImage

public void sendImage(oracle.ord.im.OrdImage media)
               throws javax.servlet.ServletException,
                      java.sql.SQLException,
                      java.io.IOException
Retrieves an image from an OrdImage object and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
media - an object of type oracle.ord.im.OrdImage.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
OrdHttpResponseException - if the source type is not recognized.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendAudio

public void sendAudio(oracle.ord.im.OrdAudio media)
               throws javax.servlet.ServletException,
                      java.sql.SQLException,
                      java.io.IOException
Retrieves an audio clip from an OrdAudio object and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
media - an object of type oracle.ord.im.OrdAudio.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
OrdHttpResponseException - if the source type is not recognized.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendVideo

public void sendVideo(oracle.ord.im.OrdVideo media)
               throws javax.servlet.ServletException,
                      java.sql.SQLException,
                      java.io.IOException
Retrieves a video clip from an OrdVideo object and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
media - an object of type oracle.ord.im.OrdVideo.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
OrdHttpResponseException - if the source type is not recognized.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendDoc

public void sendDoc(oracle.ord.im.OrdDoc media)
             throws javax.servlet.ServletException,
                    java.sql.SQLException,
                    java.io.IOException
Retrieves media data from an OrdDoc object and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
media - an object of type oracle.ord.im.OrdDoc.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
OrdHttpResponseException - if the source type is not recognized.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendResponse

public void sendResponse(java.lang.String contentType,
                         int length,
                         oracle.sql.BLOB blob,
                         java.sql.Timestamp lastModified)
                  throws javax.servlet.ServletException,
                         java.sql.SQLException,
                         java.io.IOException
Builds the HTTP response header, then retrieves the contents of the BLOB from the database and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
contentType - a String that specifies the MIME type of the content.
length - an integer (int) that specifies the length of the data.
blob - an object of type oracle.sql.BLOB from which the media data is retrieved.
lastModified - a java.sql.Timestamp object that specifies the date and time when the data was last modified, or null if no last modified date and time are available.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
java.lang.IllegalArgumentException - if the length is negative.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendResponse

public void sendResponse(java.lang.String contentType,
                         int length,
                         oracle.sql.BFILE bfile,
                         java.sql.Timestamp lastModified)
                  throws javax.servlet.ServletException,
                         java.sql.SQLException,
                         java.io.IOException
Builds the HTTP response header, then retrieves the contents of the BFILE from the database and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
contentType - a String that specifies the MIME type of the content.
length - an integer (int) that specifies the length of the data.
bfile - an object of type oracle.sql.BFILE from which the media data is retrieved.
lastModified - a java.sql.Timestamp object that specifies the date and time when the data was last modified, or null if no last modified date and time are available.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
java.lang.IllegalArgumentException - if the length is negative.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendResponse

public void sendResponse(java.lang.String contentType,
                         int length,
                         java.io.InputStream in,
                         java.sql.Timestamp lastModified)
                  throws javax.servlet.ServletException,
                         java.io.IOException
Builds the HTTP response header, then retrieves the contents of the InputStream object and delivers it to the browser.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Parameters:
contentType - a String that specifies the MIME type of the content.
length - an integer (int) that specifies the length of the data.
in - an InputStream object from which the media data is retrieved.
lastModified - a java.sql.Timestamp object that specifies the date and time when the data was last modified, or null if no last modified date and time are available.
Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
java.lang.IllegalArgumentException - if the length is negative.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.io.IOException - if an error occurs reading the media data.

sendResponseBody

public void sendResponseBody(int length,
                             oracle.sql.BLOB blob)
                      throws javax.servlet.ServletException,
                             java.sql.SQLException,
                             java.io.IOException
Retrieves the content of a BLOB from the database and delivers it as the response body to the browser. The caller is responsible for building the HTTP header.
Parameters:
length - an integer (int) that specifies the length of the data.
blob - an object of type oracle.sql.BLOB from which the media data is retrieved.
Throws:
java.lang.IllegalStateException - if HttpServletResponse has not been specified.
java.lang.IllegalArgumentException - if the length is negative.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendResponseBody

public void sendResponseBody(int length,
                             oracle.sql.BFILE bfile)
                      throws javax.servlet.ServletException,
                             java.sql.SQLException,
                             java.io.IOException
Retrieves the content of a BFILE from the database and delivers it as the response body to the browser. The caller is responsible for building the HTTP header.
Parameters:
length - an integer (int) that specifies the length of the data.
bfile - an object of type oracle.sql.BFILE from which the media data is retrieved.
Throws:
java.lang.IllegalStateException - if HttpServletResponse has not been specified.
java.lang.IllegalArgumentException - if the length is negative.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

sendResponseBody

public void sendResponseBody(int length,
                             java.io.InputStream in)
                      throws javax.servlet.ServletException,
                             java.io.IOException
Retrieves the content of the InputStream object and delivers it as the response body to the browser. The caller is responsible for building the HTTP header.
Parameters:
length - an integer (int) that specifies the length of the data.
in - an InputStream object from which the media data is retrieved.
Throws:
java.lang.IllegalStateException - if HttpServletResponse has not been specified.
java.lang.IllegalArgumentException - if the length is negative.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.io.IOException - if an error occurs reading the media data.

setBufferSize

public void setBufferSize(int bufferSize)
                   throws java.lang.IllegalArgumentException
Sets the buffer size for LOB read and HTTP response write operations.
Parameters:
bufferSize - an integer (int) that specifies the buffer size.
Throws:
java.lang.IllegalArgumentException - if the buffer size is negative or zero.

setMedia

public void setMedia(oracle.ord.im.OrdImage media)
Sets the OrdImage object as the media object to be delivered. To deliver the data in the response body, this method must be called before calling the sendResponse method.
Parameters:
media - an object of type oracle.ord.im.OrdImage.

setMedia

public void setMedia(oracle.ord.im.OrdAudio media)
Sets the OrdAudio object as the media object to be delivered. To deliver the data in the response body, this method must be called before calling the sendResponse method.
Parameters:
media - an object of type oracle.ord.im.OrdAudio.

setMedia

public void setMedia(oracle.ord.im.OrdVideo media)
Sets the OrdVideo object as the media object to be delivered. To deliver the data in the response body, this method must be called before calling the sendResponse method.
Parameters:
media - an object of type oracle.ord.im.OrdVideo.

setMedia

public void setMedia(oracle.ord.im.OrdDoc media)
Sets the OrdDoc object as the media object to be delivered. To deliver the data in the response body, this method must be called before calling the sendResponse method.
Parameters:
media - an object of type oracle.ord.im.OrdDoc.

setHeader

public void setHeader(java.lang.String name,
                      java.lang.String value)
Sets the HTTP response header with the String value. If the header is already set, the new value overwrites the previous value.
Parameters:
name - the name of the header.
value - the value of the header.

setHeader

public void setHeader(java.lang.String name,
                      long date)
Sets the HTTP response header with the date value. If the header is already set, the new value overwrites the previous value.
Parameters:
name - the name of the header.
date - the date value of the header.

setHeader

public void setHeader(java.lang.String name,
                      int value)
Sets the HTTP response header with the integer (int) value. If the header is already set, the new value overwrites the previous value.
Parameters:
name - the name of the header.
value - the integer (int) value of the header.

sendResponse

public void sendResponse()
                  throws javax.servlet.ServletException,
                         java.sql.SQLException,
                         java.io.IOException
Retrieves a media object from one of the Oracle Multimedia objects (OrdImage, OrdAudio, OrdVideo, or OrdDoc) and delivers it to the browser. The setMedia(oracle.ord.im.OrdImage) method must be called before calling this method. The media object to be delivered is determined by the last setMedia method.

This method supports browser content caching by supporting the If-Modified-Since and Last-Modified headers.

Throws:
java.lang.IllegalStateException - if HttpServletRequest or HttpServletResponse has not been specified.
OrdHttpResponseException - if the source type is not recognized.
javax.servlet.ServletException - if an error occurs accessing the binary output stream.
java.sql.SQLException - if an error occurs obtaining an InputStream object to read the media data.
java.io.IOException - if an error occurs reading the media data.

setEncodeHtml

public void setEncodeHtml(boolean doEncode)
Enables the encoding of special characters (! " % & ' ( ) ; < >) from the response output stream with HTML numeric code. By default, there is no encoding.
Parameters:
doEncode - a boolean value indicating whether or not to encode the response output stream.

Skip navigation links

Oracle Multimedia Servlets and JSP Java API Reference
11g Release 1 (11.1)

Part No. B28412-01


Copyright © 1999, 2007, Oracle. All rights reserved.