<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>ServletResponse</title>
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ServletResponse";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../javax/servlet/ServletRequestWrapper.html" title="class in javax.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../javax/servlet/ServletResponseWrapper.html" title="class in javax.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/servlet/ServletResponse.html" target="_top">Frames</a></li>
<li><a href="ServletResponse.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.servlet</div>
<h2 title="Interface ServletResponse" class="title">Interface ServletResponse</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../org/apache/openejb/server/httpd/HttpResponse.html" title="interface in org.apache.openejb.server.httpd">HttpResponse</a>, <a href="../../javax/servlet/http/HttpServletResponse.html" title="interface in javax.servlet.http">HttpServletResponse</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../org/apache/openejb/server/httpd/HttpResponseImpl.html" title="class in org.apache.openejb.server.httpd">HttpResponseImpl</a>, <a href="../../javax/servlet/http/HttpServletResponseWrapper.html" title="class in javax.servlet.http">HttpServletResponseWrapper</a>, <a href="../../org/apache/openejb/server/httpd/ServletResponseAdapter.html" title="class in org.apache.openejb.server.httpd">ServletResponseAdapter</a>, <a href="../../javax/servlet/ServletResponseWrapper.html" title="class in javax.servlet">ServletResponseWrapper</a>, <a href="../../org/apache/jasper/runtime/ServletResponseWrapperInclude.html" title="class in org.apache.jasper.runtime">ServletResponseWrapperInclude</a>, <a href="../../org/apache/openejb/rest/ThreadLocalHttpServletResponse.html" title="class in org.apache.openejb.rest">ThreadLocalHttpServletResponse</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ServletResponse</span></pre>
<div class="block">Defines an object to assist a servlet in sending a response to the client.
 The servlet container creates a <code>ServletResponse</code> object and
 passes it as an argument to the servlet's <code>service</code> method.

 <p>To send binary data in a MIME body response, use
 the <a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet"><code>ServletOutputStream</code></a> returned by <a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a>.
 To send character data, use the <code>PrintWriter</code> object 
 returned by <a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a>. To mix binary and text data,
 for example, to create a multipart response, use a
 <code>ServletOutputStream</code> and manage the character sections
 manually.

 <p>The charset for the MIME body response can be specified explicitly
 using any of the following techniques: per request, per web-app (using
 <a href="../../javax/servlet/ServletContext.html#setRequestCharacterEncoding-java.lang.String-"><code>ServletContext.setRequestCharacterEncoding(java.lang.String)</code></a>, deployment descriptor),
 and per container (for all web applications deployed in that container, 
 using vendor specific configuration).
 If multiple of the preceding techniques have been employed, the priority is
 the order listed.
 For per request, the charset for the response can be specified explicitly
 using the <a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-"><code>setCharacterEncoding(java.lang.String)</code></a> and <a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a> methods,
 or implicitly using the <a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-"><code>setLocale(java.util.Locale)</code></a> method.
 Explicit specifications take precedence over implicit specifications.
 If no charset is explicitly specified, ISO-8859-1 will be used.
 The <code>setCharacterEncoding</code>,
 <code>setContentType</code>, or <code>setLocale</code> method must
 be called before <code>getWriter</code> and before committing
 the response for the character encoding to be used.
 
 <p>See the Internet RFCs such as 
 <a href="http://www.ietf.org/rfc/rfc2045.txt">
 RFC 2045</a> for more information on MIME. Protocols such as SMTP
 and HTTP define profiles of MIME, and those standards
 are still evolving.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet"><code>ServletOutputStream</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#flushBuffer--">flushBuffer</a></span>()</code>
<div class="block">Forces any content in the buffer to be written to the client.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#getBufferSize--">getBufferSize</a></span>()</code>
<div class="block">Returns the actual buffer size used for the response.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#getCharacterEncoding--">getCharacterEncoding</a></span>()</code>
<div class="block">Returns the name of the character encoding (MIME charset)
 used for the body sent in this response.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#getContentType--">getContentType</a></span>()</code>
<div class="block">Returns the content type used for the MIME body
 sent in this response.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.util.Locale</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#getLocale--">getLocale</a></span>()</code>
<div class="block">Returns the locale specified for this response
 using the <a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-"><code>setLocale(java.util.Locale)</code></a> method.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet">ServletOutputStream</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#getOutputStream--">getOutputStream</a></span>()</code>
<div class="block">Returns a <a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet"><code>ServletOutputStream</code></a> suitable for writing binary 
 data in the response.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.io.PrintWriter</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#getWriter--">getWriter</a></span>()</code>
<div class="block">Returns a <code>PrintWriter</code> object that
 can send character text to the client.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#isCommitted--">isCommitted</a></span>()</code>
<div class="block">Returns a boolean indicating if the response has been
 committed.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#reset--">reset</a></span>()</code>
<div class="block">Clears any data that exists in the buffer as well as the status code,
 headers.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#resetBuffer--">resetBuffer</a></span>()</code>
<div class="block">Clears the content of the underlying buffer in the response without
 clearing headers or status code.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#setBufferSize-int-">setBufferSize</a></span>(int&nbsp;size)</code>
<div class="block">Sets the preferred buffer size for the body of the response.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-">setCharacterEncoding</a></span>(java.lang.String&nbsp;charset)</code>
<div class="block">Sets the character encoding (MIME charset) of the response
 being sent to the client, for example, to UTF-8.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#setContentLength-int-">setContentLength</a></span>(int&nbsp;len)</code>
<div class="block">Sets the length of the content body in the response
 In HTTP servlets, this method sets the HTTP Content-Length header.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#setContentLengthLong-long-">setContentLengthLong</a></span>(long&nbsp;len)</code>
<div class="block">Sets the length of the content body in the response
 In HTTP servlets, this method sets the HTTP Content-Length header.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-">setContentType</a></span>(java.lang.String&nbsp;type)</code>
<div class="block">Sets the content type of the response being sent to
 the client, if the response has not been committed yet.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-">setLocale</a></span>(java.util.Locale&nbsp;loc)</code>
<div class="block">Sets the locale of the response, if the response has not been
 committed yet.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getCharacterEncoding--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCharacterEncoding</h4>
<pre>java.lang.String&nbsp;getCharacterEncoding()</pre>
<div class="block">Returns the name of the character encoding (MIME charset)
 used for the body sent in this response.
 The following methods for specifying the response character encoding are
 consulted, in decreasing order of priority: per request, perweb-app
 (using <a href="../../javax/servlet/ServletContext.html#setResponseCharacterEncoding-java.lang.String-"><code>ServletContext.setResponseCharacterEncoding(java.lang.String)</code></a>, deployment
 descriptor), and per container (for all web applications deployed in
 that container, using vendor specific configuration).
 The first one of these methods that yields a result is returned.
 Per-request, the charset for the response can be specified explicitly
 using the <code>setCharacterEncoding</code> and <code>setContentType</code>
 methods, or implicitly using the setLocale(java.util.Locale) method.
 Explicit specifications take precedence over implicit specifications.
 Calls made to these methods after <code>getWriter</code> has been
 called or after the response has been committed have no
 effect on the character encoding. If no character encoding
 has been specified, <code>ISO-8859-1</code> is returned.
 <p>See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
 for more information about character encoding and MIME.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> specifying the name of
 the character encoding, for example, <code>UTF-8</code></dd>
</dl>
</li>
</ul>
<a name="getContentType--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContentType</h4>
<pre>java.lang.String&nbsp;getContentType()</pre>
<div class="block">Returns the content type used for the MIME body
 sent in this response. The content type proper must
 have been specified using <a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a>
 before the response is committed. If no content type
 has been specified, this method returns null.
 If a content type has been specified, and a
 character encoding has been explicitly or implicitly
 specified as described in <a href="../../javax/servlet/ServletResponse.html#getCharacterEncoding--"><code>getCharacterEncoding()</code></a>
 or <a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a> has been called,
 the charset parameter is included in the string returned.
 If no character encoding has been specified, the
 charset parameter is omitted.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> specifying the content type,
 for example, <code>text/html; charset=UTF-8</code>, or null</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.4</dd>
</dl>
</li>
</ul>
<a name="getOutputStream--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOutputStream</h4>
<pre><a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet">ServletOutputStream</a>&nbsp;getOutputStream()
                             throws java.io.IOException</pre>
<div class="block">Returns a <a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet"><code>ServletOutputStream</code></a> suitable for writing binary 
 data in the response. The servlet container does not encode the
 binary data.  

 <p> Calling flush() on the ServletOutputStream commits the response.

 Either this method or <a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a> may 
 be called to write the body, not both, except when <a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a>
 has been called.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <a href="../../javax/servlet/ServletOutputStream.html" title="class in javax.servlet"><code>ServletOutputStream</code></a> for writing binary data</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the <code>getWriter</code> method
 has been called on this response</dd>
<dd><code>java.io.IOException</code> - if an input or output exception occurred</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="getWriter--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWriter</h4>
<pre>java.io.PrintWriter&nbsp;getWriter()
                       throws java.io.IOException</pre>
<div class="block">Returns a <code>PrintWriter</code> object that
 can send character text to the client.
 The <code>PrintWriter</code> uses the character
 encoding returned by <a href="../../javax/servlet/ServletResponse.html#getCharacterEncoding--"><code>getCharacterEncoding()</code></a>.
 If the response's character encoding has not been
 specified as described in <code>getCharacterEncoding</code>
 (i.e., the method just returns the default value 
 <code>ISO-8859-1</code>), <code>getWriter</code>
 updates it to <code>ISO-8859-1</code>.
 <p>Calling flush() on the <code>PrintWriter</code>
 commits the response.
 <p>Either this method or <a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a> may be called
 to write the body, not both, except when <a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a>
 has been called.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>PrintWriter</code> object that 
 can return character data to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.UnsupportedEncodingException</code> - if the character encoding returned
 by <code>getCharacterEncoding</code> cannot be used</dd>
<dd><code>java.lang.IllegalStateException</code> - if the <code>getOutputStream</code>
 method has already been called for this response object</dd>
<dd><code>java.io.IOException</code> - if an input or output exception occurred</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-"><code>setCharacterEncoding(java.lang.String)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="setCharacterEncoding-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCharacterEncoding</h4>
<pre>void&nbsp;setCharacterEncoding(java.lang.String&nbsp;charset)</pre>
<div class="block">Sets the character encoding (MIME charset) of the response
 being sent to the client, for example, to UTF-8.
 If the response character encoding has already been set by the
 <a href="../../javax/servlet/ServletContext.html#setResponseCharacterEncoding-java.lang.String-"><code>ServletContext.setResponseCharacterEncoding(java.lang.String)</code></a>,
 deployment descriptor, or using the setContentType() or setLocale()
 methods, the value set in this method overrides any of those values.
 Calling <a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a> with the <code>String</code>
 of <code>text/html</code> and calling
 this method with the <code>String</code> of <code>UTF-8</code>
 is equivalent with calling
 <code>setContentType</code> with the <code>String</code> of
 <code>text/html; charset=UTF-8</code>.
 <p>This method can be called repeatedly to change the character
 encoding.
 This method has no effect if it is called after
 <code>getWriter</code> has been
 called or after the response has been committed.
 <p>Containers must communicate the character encoding used for
 the servlet response's writer to the client if the protocol
 provides a way for doing so. In the case of HTTP, the character
 encoding is communicated as part of the <code>Content-Type</code>
 header for text media types. Note that the character encoding
 cannot be communicated via HTTP headers if the servlet does not
 specify a content type; however, it is still used to encode text
 written via the servlet response's writer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>charset</code> - a String specifying only the character set
 defined by IANA Character Sets
 (http://www.iana.org/assignments/character-sets)</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.4</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-"><code>setLocale(java.util.Locale)</code></a></dd>
</dl>
</li>
</ul>
<a name="setContentLength-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setContentLength</h4>
<pre>void&nbsp;setContentLength(int&nbsp;len)</pre>
<div class="block">Sets the length of the content body in the response
 In HTTP servlets, this method sets the HTTP Content-Length header.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>len</code> - an integer specifying the length of the 
 content being returned to the client; sets the Content-Length header</dd>
</dl>
</li>
</ul>
<a name="setContentLengthLong-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setContentLengthLong</h4>
<pre>void&nbsp;setContentLengthLong(long&nbsp;len)</pre>
<div class="block">Sets the length of the content body in the response
 In HTTP servlets, this method sets the HTTP Content-Length header.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>len</code> - a long specifying the length of the 
 content being returned to the client; sets the Content-Length header</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.1</dd>
</dl>
</li>
</ul>
<a name="setContentType-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setContentType</h4>
<pre>void&nbsp;setContentType(java.lang.String&nbsp;type)</pre>
<div class="block">Sets the content type of the response being sent to
 the client, if the response has not been committed yet.
 The given content type may include a character encoding
 specification, for example, <code>text/html;charset=UTF-8</code>.
 The response's character encoding is only set from the given
 content type if this method is called before <code>getWriter</code>
 is called.
 <p>This method may be called repeatedly to change content type and
 character encoding.
 This method has no effect if called after the response
 has been committed. It does not set the response's character
 encoding if it is called after <code>getWriter</code>
 has been called or after the response has been committed.
 <p>Containers must communicate the content type and the character
 encoding used for the servlet response's writer to the client if
 the protocol provides a way for doing so. In the case of HTTP,
 the <code>Content-Type</code> header is used.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - a <code>String</code> specifying the MIME 
 type of the content</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-"><code>setLocale(java.util.Locale)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-"><code>setCharacterEncoding(java.lang.String)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a></dd>
</dl>
</li>
</ul>
<a name="setBufferSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBufferSize</h4>
<pre>void&nbsp;setBufferSize(int&nbsp;size)</pre>
<div class="block">Sets the preferred buffer size for the body of the response.  
 The servlet container will use a buffer at least as large as 
 the size requested.  The actual buffer size used can be found
 using <code>getBufferSize</code>.

 <p>A larger buffer allows more content to be written before anything is
 actually sent, thus providing the servlet with more time to set
 appropriate status codes and headers.  A smaller buffer decreases 
 server memory load and allows the client to start receiving data more
 quickly.

 <p>This method must be called before any response body content is
 written; if content has been written or the response object has
 been committed, this method throws an 
 <code>IllegalStateException</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>size</code> - the preferred buffer size</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if this method is called after
 content has been written</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#getBufferSize--"><code>getBufferSize()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#flushBuffer--"><code>flushBuffer()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#isCommitted--"><code>isCommitted()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="getBufferSize--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBufferSize</h4>
<pre>int&nbsp;getBufferSize()</pre>
<div class="block">Returns the actual buffer size used for the response.  If no buffering
 is used, this method returns 0.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the actual buffer size used</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setBufferSize-int-"><code>setBufferSize(int)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#flushBuffer--"><code>flushBuffer()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#isCommitted--"><code>isCommitted()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="flushBuffer--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>flushBuffer</h4>
<pre>void&nbsp;flushBuffer()
          throws java.io.IOException</pre>
<div class="block">Forces any content in the buffer to be written to the client.  A call
 to this method automatically commits the response, meaning the status 
 code and headers will be written.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if the act of flushing the buffer cannot be
 completed.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setBufferSize-int-"><code>setBufferSize(int)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#getBufferSize--"><code>getBufferSize()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#isCommitted--"><code>isCommitted()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="resetBuffer--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resetBuffer</h4>
<pre>void&nbsp;resetBuffer()</pre>
<div class="block">Clears the content of the underlying buffer in the response without
 clearing headers or status code. If the 
 response has been committed, this method throws an 
 <code>IllegalStateException</code>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setBufferSize-int-"><code>setBufferSize(int)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#getBufferSize--"><code>getBufferSize()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#isCommitted--"><code>isCommitted()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="isCommitted--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCommitted</h4>
<pre>boolean&nbsp;isCommitted()</pre>
<div class="block">Returns a boolean indicating if the response has been
 committed.  A committed response has already had its status 
 code and headers written.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a boolean indicating if the response has been
 committed</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setBufferSize-int-"><code>setBufferSize(int)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#getBufferSize--"><code>getBufferSize()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#flushBuffer--"><code>flushBuffer()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a></dd>
</dl>
</li>
</ul>
<a name="reset--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reset</h4>
<pre>void&nbsp;reset()</pre>
<div class="block">Clears any data that exists in the buffer as well as the status code,
 headers.  The state of calling <a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a> or
 <a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a> is also cleared.  It is legal, for instance,
 to call <a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a>, <a href="../../javax/servlet/ServletResponse.html#reset--"><code>reset()</code></a> and then
 <a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a>.  If <a href="../../javax/servlet/ServletResponse.html#getWriter--"><code>getWriter()</code></a> or
 <a href="../../javax/servlet/ServletResponse.html#getOutputStream--"><code>getOutputStream()</code></a> have been called before this method,
 then the corrresponding returned Writer or OutputStream will be
 staled and the behavior of using the stale object is undefined.
 If the response has been committed, this method throws an 
 <code>IllegalStateException</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the response has already been
 committed</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setBufferSize-int-"><code>setBufferSize(int)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#getBufferSize--"><code>getBufferSize()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#flushBuffer--"><code>flushBuffer()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#isCommitted--"><code>isCommitted()</code></a></dd>
</dl>
</li>
</ul>
<a name="setLocale-java.util.Locale-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLocale</h4>
<pre>void&nbsp;setLocale(java.util.Locale&nbsp;loc)</pre>
<div class="block">Sets the locale of the response, if the response has not been
 committed yet. It also sets the response's character encoding
 appropriately for the locale, if the character encoding has not
 been explicitly set using <a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a> or
 <a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-"><code>setCharacterEncoding(java.lang.String)</code></a>, <code>getWriter</code> hasn't
 been called yet, and the response hasn't been committed yet.
 If the deployment descriptor contains a 
 <code>locale-encoding-mapping-list</code> element, and that
 element provides a mapping for the given locale, that mapping
 is used. Otherwise, the mapping from locale to character
 encoding is container dependent.
 <p>This method may be called repeatedly to change locale and
 character encoding. The method has no effect if called after the
 response has been committed. It does not set the response's
 character encoding if it is called after <a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a>
 has been called with a charset specification, after
 <a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-"><code>setCharacterEncoding(java.lang.String)</code></a> has been called, after
 <code>getWriter</code> has been called, or after the response
 has been committed.
 <p>Containers must communicate the locale and the character encoding
 used for the servlet response's writer to the client if the protocol
 provides a way for doing so. In the case of HTTP, the locale is
 communicated via the <code>Content-Language</code> header,
 the character encoding as part of the <code>Content-Type</code>
 header for text media types. Note that the character encoding
 cannot be communicated via HTTP headers if the servlet does not
 specify a content type; however, it is still used to encode text
 written via the servlet response's writer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loc</code> - the locale of the response</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#getLocale--"><code>getLocale()</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>setContentType(java.lang.String)</code></a>, 
<a href="../../javax/servlet/ServletResponse.html#setCharacterEncoding-java.lang.String-"><code>setCharacterEncoding(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="getLocale--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getLocale</h4>
<pre>java.util.Locale&nbsp;getLocale()</pre>
<div class="block">Returns the locale specified for this response
 using the <a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-"><code>setLocale(java.util.Locale)</code></a> method. Calls made to
 <code>setLocale</code> after the response is committed
 have no effect. If no locale has been specified,
 the container's default locale is returned.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Locale for this response.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/servlet/ServletResponse.html#setLocale-java.util.Locale-"><code>setLocale(java.util.Locale)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../javax/servlet/ServletRequestWrapper.html" title="class in javax.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../javax/servlet/ServletResponseWrapper.html" title="class in javax.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/servlet/ServletResponse.html" target="_top">Frames</a></li>
<li><a href="ServletResponse.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
