/* * @(#)ServletResponse.java 1.25 97/11/21 * * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. * * CopyrightVersion 1.0 */ package javax.servlet; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; /** * Interface for sending MIME data from the servlet's service method * to the client. Network service developers implement this interface; * its methods are then used by servlets when the service method is * run, to return data to clients. The ServletResponse object is passed * as an argument to the service method. * *

To write MIME bodies which consist of binary data, use the * output stream returned by getOutputStream. To * write MIME bodies consisting of text data, use the writer returned * by getWriter. If you need to mix binary and * text data, for example because you're creating a multipart response, * use the output stream to write the multipart headers, and use that * to build your own text bodies. * *

If you don't explicitly set the character set in your MIME media * type, with setContentType, one will be * selected and the content type will be modified accordingly. If you * will be using a writer, and want to call the * setContentType method, you must do so before calling * the getWriter method. If you will be using the output * stream, and want to call setContentType, you must do so * before using the output stream to write the MIME body. * *

For more information about MIME, see the Internet RFCs such as * * RFC 2045, the first in a series which defines MIME. Note that * protocols such SMTP and HTTP define application-specific profiles of * MIME, and that standards in this area are evolving. * * @version 1.25, 11/21/97 */ public interface ServletResponse { /** * Sets the content length for this response. * * @param len the content length */ public void setContentLength(int len); /** * Sets the content type for this response. This type may later * be implicitly modified by addition of properties such as the MIME * charset=<value> if the service finds it necessary, * and the appropriate media type property has not been set. * *

This response property may only be assigned one time. If a * writer is to be used to write a text response, this method must * be called before the method getWriter. If an * output stream will be used to write a response, this method must * be called before the output stream is used to write response * data. * * @param type the content's MIME type * @see getOutputStream * @see getWriter */ public void setContentType(String type); /** * Returns an output stream for writing binary response data. * * @see getWriter * @exception IllegalStateException if getWriter has been * called on this same request. * @exception IOException if an I/O exception has occurred */ public ServletOutputStream getOutputStream() throws IOException; /** * Returns a print writer for writing formatted text responses. The * MIME type of the response will be modified, if necessary, to reflect * the character encoding used, through the charset=... * property. This means that the content type must be set before * calling this method. * * @see getOutputStream * @see setContentType * * @exception UnsupportedEncodingException if no such encoding can * be provided * @exception IllegalStateException if getOutputStream has been * called on this same request. * @exception IOException on other errors. */ public PrintWriter getWriter () throws IOException; /** * Returns the character set encoding used for this MIME body. * The character encoding is either the one specified in the * assigned content type, or one which the client understands. * If no content type has yet been assigned, it is implicitly * set to text/plain */ public String getCharacterEncoding (); }