<!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="../../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="../../javax/servlet/http/HttpServletResponseWrapper.html" title="class in javax.servlet.http">HttpServletResponseWrapper</a>, <a href="../../javax/servlet/ServletResponseWrapper.html" title="class in javax.servlet">ServletResponseWrapper</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>
