|
Oracle9i Business Components for Java InterMedia API Reference Oracle9i JDeveloper (9.0.4) B10394-01 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--oracle.ord.im.OrdHttpResponseHandler | +--oracle.ord.im.OrdHttpJspResponseHandler
The OrdHttpJspResponseHandler class facilitates the retrieval of multimedia data from an Oracle9i database and its delivery to a browser or other HTTP client from a JavaServer Page (JSP).
All multimedia data stored in the database using the interMedia types, including text documents stored using the ORDDOC type, is stored using a binary LOB data type. Multimedia data that is stored internally in the database is stored using a BLOB. Multimedia data that is stored in an operating system file outside the database is stored using a BFILE. Therefore, all multimedia data is delivered to the browser through the servlet binary output stream using the ServletOutputStream class.
All the send methods in the OrdHttpJspResponseHandler class mirror the initial processing of the jsp:forward tag by calling the JspWriter.clear method to clear the page's output buffer prior to obtaining the binary output stream. However, JSP engines are not required to support a call to the ServletResponse.getOutputStream method from within a JSP. A JSP engine that does not support this usage typically throws an IllegalStateException from the getOutputStream method. However, the exact behavior is implementation specific.
If your JSP engine does not support access to the binary output stream from within a JSP, then you must use a servlet to deliver multimedia data. For example:
An if ( true ) { ... return; } construct may be used to avoid a "statement not reachable" error that may result from the presence of additional code, generated by the JSP engine, at the end of a compiled page. This construct, which mirrors exactly the code produced by some JSP engines to handle the <jsp:forward ... > directive, is illustrated in the example that follows.
The send methods in this class all call the JspWriter.clear method to clear the page's output buffer prior to delivering the image. Therefore, the page must use the buffered output model, which is the default.
The following example illustrates how to use the OrdHttpJspResponseHandler class to retrieve an image from a database and deliver it to a browser:
<%@ page language="java" %> <%@ page import="OrdSamplePhotoAlbumBean" %> <%@ page import="oracle.ord.im.OrdHttpJspResponseHandler" %> <jsp:useBean id="photos" scope="page" class="OrdSamplePhotoAlbumBean"/> <jsp:useBean id="handler" scope="page" class="oracle.ord.im.OrdHttpJspResponseHandler"/> <% // // Select the entry from the table using the id request parameter, // then fetch the row. // photos.selectRowById( request.getParameter( "id" ) ); if ( !photos.fetch() ) { response.setStatus( response.SC_NOT_FOUND ); return; } // // Set the page context for the retrieve request, then retrieve // the image from the database and deliver it to the browser. The // getImage() method returns an object of type oracle.ord.im.OrdImage. // if ( true ) { handler.setPageContext( pageContext ); handler.sendImage( photos.getImage() ); return; } %>
In the preceding example, the return statement ensures that the trailing new-line characters following the final end tag (%>) are not transmitted to the browser following the image.
The if ( true ) { ... return; } construct is used to avoid the "statement not reachable" error that would otherwise be produced by this example due to the additional statements, generated by the JSP engine, at the end of the compiled page.
Field Summary |
Fields inherited from class oracle.ord.im.OrdHttpResponseHandler |
DEFAULT_BUFFER_SIZE |
Constructor Summary | |
OrdHttpJspResponseHandler() Creates an OrdHttpJspResponseHandler object to handle the response to a multimedia retrieval request. | |
OrdHttpJspResponseHandler(javax.servlet.jsp.PageContext pageContext) Creates an OrdHttpJspResponseHandler object to handle the response to a multimedia retrieval request and specifies the PageContext object for the response handler. |
Method Summary | |
void |
sendAudio(OrdAudio audio) Retrieves an audio clip from an OrdAudio object and delivers it to browser. |
void |
sendDoc(OrdDoc doc) Retrieves media data from an OrdDoc object and delivers it to the browser. |
void |
sendImage(OrdImage image) Retrieves an image from an OrdImage object and delivers it to the browser. |
void |
sendResponse() Builds an HTTP response header, then retrieves the contents of the media data from the database and delivers it to the browser. |
void |
sendResponse(java.lang.String contentType, int length, oracle.sql.BFILE bfile, java.sql.Timestamp lastModified) Builds an 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 an 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 an HTTP response header, then retrieves the contents from the InputStream and delivers it to the browser. |
void |
sendVideo(OrdVideo video) Retrieves a video clip from an OrdVideo object and delivers it to browser. |
void |
setPageContext(javax.servlet.jsp.PageContext pageContext) Specifies the PageContext object for this response handler. |
Methods inherited from class oracle.ord.im.OrdHttpResponseHandler |
sendResponseBody, sendResponseBody, sendResponseBody, setBufferSize, setEncodeHtml, setEncoderCharSet, setHeader, setHeader, setHeader, setMedia, setMedia, setMedia, setMedia, setServletRequest, setServletResponse |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public OrdHttpJspResponseHandler()
setPageContext()
.public OrdHttpJspResponseHandler(javax.servlet.jsp.PageContext pageContext)
pageContext
- an object of type PageContext
.Method Detail |
public void setPageContext(javax.servlet.jsp.PageContext pageContext)
pageContext
- an object of type PageContext
.public void sendImage(OrdImage image) throws javax.servlet.ServletException, java.sql.SQLException, java.io.IOException
sendImage
in class OrdHttpResponseHandler
image
- an object of type oracle.ord.im.OrdImage
.java.lang.IllegalStateException
- if PageContext 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 to read the image data.java.io.IOException
- if an error occurs reading the image data.public void sendAudio(OrdAudio audio) throws javax.servlet.ServletException, java.sql.SQLException, java.io.IOException
sendAudio
in class OrdHttpResponseHandler
audio
- an object of type oracle.ord.im.OrdAudio
.java.lang.IllegalStateException
- if PageContext 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 to read the audio data.java.io.IOException
- if an error occurs reading the audio data.public void sendVideo(OrdVideo video) throws javax.servlet.ServletException, java.sql.SQLException, java.io.IOException
sendVideo
in class OrdHttpResponseHandler
video
- an object of type oracle.ord.im.OrdVideo
.java.lang.IllegalStateException
- if PageContext 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 to read the video data.java.io.IOException
- if an error occurs reading the video data.public void sendDoc(OrdDoc doc) throws javax.servlet.ServletException, java.sql.SQLException, java.io.IOException
sendDoc
in class OrdHttpResponseHandler
doc
- an object of type oracle.ord.im.OrdDoc
.java.lang.IllegalStateException
- if PageContext 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 to read the media data.java.io.IOException
- if an error occurs reading the media data.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
sendResponse
in class OrdHttpResponseHandler
contentType
- a String
that specifies the content's MIME type.length
- an int
that specifies the length of the data.blob
- an object of type oracle.sql.BLOB
.lastModified
- a java.sql.Timestamp
that specifies the date/time when the data was last modified, or null
if no last modified date/time is available.java.lang.IllegalStateException
- if PageContext has not been specified.javax.servlet.ServletException
- if an error occurs accessing the binary output stream.java.sql.SQLException
- if an error occurs obtaining an InputStream to read the multimedia data.java.io.IOException
- if an error occurs reading the multimedia data.java.lang.IllegalArgumentException
- if the length is negative.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
sendResponse
in class OrdHttpResponseHandler
contentType
- a String
that specifies the content's MIME type.length
- an integer that specifies the length of the data.bfile
- an object of type oracle.sql.BFILE
.lastModified
- a java.sql.Timestamp
that specifies the date/time when the data was last modified, or null
if no last modified date/time is available.java.lang.IllegalStateException
- if PageContext has not been specified.javax.servlet.ServletException
- if an error occurs accessing the binary output stream.java.sql.SQLException
- if an error occurs obtaining an InputStream to read the multimedia data.java.io.IOException
- if an error occurs reading the multimedia data.java.lang.IllegalArgumentException
- if the length is negative.public void sendResponse(java.lang.String contentType, int length, java.io.InputStream in, java.sql.Timestamp lastModified) throws javax.servlet.ServletException, java.io.IOException
sendResponse
in class OrdHttpResponseHandler
contentType
- a String
that specifies the content's MIME type.length
- an integer that specifies the length of the data.in
- an InputStream
from which the multimedia data is retrieved.lastModified
- a java.sql.Timestamp
that specifies the date/time when the data was last modified, or null
if no last modified date/time is available.java.lang.IllegalStateException
- if PageContext has not been specified.javax.servlet.ServletException
- if an error occurs accessing the binary output stream.java.io.IOException
- if an error occurs reading the multimedia data.java.lang.IllegalArgumentException
- if the length is negative.public void sendResponse() throws javax.servlet.ServletException, java.sql.SQLException, java.io.IOException
sendResponse
in class OrdHttpResponseHandler
java.lang.IllegalStateException
- if PageContext 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 to read the media data.java.io.IOException
- if an error occurs reading the media data.
|
Oracle9i Business Components for Java InterMedia API Reference Oracle9i JDeveloper (9.0.4) B10394-01 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |