<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>ServletRequest</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="ServletRequest";
        }
    }
    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,"i16":6,"i17":6,"i18":6,"i19":6,"i20":38,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],32:["t6","Deprecated 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="../../jakarta/servlet/ServletRegistration.Dynamic.html" title="interface in jakarta.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../jakarta/servlet/ServletRequestAttributeEvent.html" title="class in jakarta.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?jakarta/servlet/ServletRequest.html" target="_top">Frames</a></li>
<li><a href="ServletRequest.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">jakarta.servlet</div>
<h2 title="Interface ServletRequest" class="title">Interface ServletRequest</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../jakarta/servlet/http/HttpServletRequestWrapper.html" title="class in jakarta.servlet.http">HttpServletRequestWrapper</a>, <a href="../../jakarta/servlet/ServletRequestWrapper.html" title="class in jakarta.servlet">ServletRequestWrapper</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ServletRequest</span></pre>
<div class="block">Defines an object to provide client request information to a servlet. The servlet container creates a
 <code>ServletRequest</code> object and passes it as an argument to the servlet's <code>service</code> method.

 <p>
 A <code>ServletRequest</code> object provides data including parameter name and values, attributes, and an input
 stream. Interfaces that extend <code>ServletRequest</code> can provide additional protocol-specific data (for
 example, HTTP data is provided by <a href="../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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><a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet">AsyncContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getAsyncContext--">getAsyncContext</a></span>()</code>
<div class="block">Gets the AsyncContext that was created or reinitialized by the most recent invocation of <a href="../../jakarta/servlet/ServletRequest.html#startAsync--"><code>startAsync()</code></a> or
 <a href="../../jakarta/servlet/ServletRequest.html#startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>startAsync(ServletRequest,ServletResponse)</code></a> on this request.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getAttribute-java.lang.String-">getAttribute</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the value of the named attribute as an <code>Object</code>, or <code>null</code> if no attribute of the given
 name exists.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.util.Enumeration&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getAttributeNames--">getAttributeNames</a></span>()</code>
<div class="block">Returns an <code>Enumeration</code> containing the names of the attributes available to this request.</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="../../jakarta/servlet/ServletRequest.html#getCharacterEncoding--">getCharacterEncoding</a></span>()</code>
<div class="block">Returns the name of the character encoding used in the body of this request.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getContentLength--">getContentLength</a></span>()</code>
<div class="block">Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not
 known or is greater than Integer.MAX_VALUE.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getContentLengthLong--">getContentLengthLong</a></span>()</code>
<div class="block">Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not
 known.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getContentType--">getContentType</a></span>()</code>
<div class="block">Returns the MIME type of the body of the request, or <code>null</code> if the type is not known.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../jakarta/servlet/DispatcherType.html" title="enum in jakarta.servlet">DispatcherType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getDispatcherType--">getDispatcherType</a></span>()</code>
<div class="block">Gets the dispatcher type of this request.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../jakarta/servlet/ServletInputStream.html" title="class in jakarta.servlet">ServletInputStream</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getInputStream--">getInputStream</a></span>()</code>
<div class="block">Retrieves the body of the request as binary data using a <a href="../../jakarta/servlet/ServletInputStream.html" title="class in jakarta.servlet"><code>ServletInputStream</code></a>.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getLocalAddr--">getLocalAddr</a></span>()</code>
<div class="block">Returns the Internet Protocol (IP) address of the interface on which the request was received.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>java.util.Locale</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getLocale--">getLocale</a></span>()</code>
<div class="block">Returns the preferred <code>Locale</code> that the client will accept content in, based on the Accept-Language
 header.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.util.Enumeration&lt;java.util.Locale&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getLocales--">getLocales</a></span>()</code>
<div class="block">Returns an <code>Enumeration</code> of <code>Locale</code> objects indicating, in decreasing order starting with the
 preferred locale, the locales that are acceptable to the client based on the Accept-Language header.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getLocalName--">getLocalName</a></span>()</code>
<div class="block">Returns the host name of the Internet Protocol (IP) interface on which the request was received.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getLocalPort--">getLocalPort</a></span>()</code>
<div class="block">Returns the Internet Protocol (IP) port number of the interface on which the request was received.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getParameter-java.lang.String-">getParameter</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the value of a request parameter as a <code>String</code>, or <code>null</code> if the parameter does not
 exist.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,java.lang.String[]&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getParameterMap--">getParameterMap</a></span>()</code>
<div class="block">Returns a java.util.Map of the parameters of this request.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>java.util.Enumeration&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getParameterNames--">getParameterNames</a></span>()</code>
<div class="block">Returns an <code>Enumeration</code> of <code>String</code> objects containing the names of the parameters contained
 in this request.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getParameterValues-java.lang.String-">getParameterValues</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns an array of <code>String</code> objects containing all of the values the given request parameter has, or
 <code>null</code> if the parameter does not exist.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getProtocol--">getProtocol</a></span>()</code>
<div class="block">Returns the name and version of the protocol the request uses in the form <i>protocol/majorVersion.minorVersion</i>,
 for example, HTTP/1.1.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>java.io.BufferedReader</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getReader--">getReader</a></span>()</code>
<div class="block">Retrieves the body of the request as character data using a <code>BufferedReader</code>.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getRealPath-java.lang.String-">getRealPath</a></span>(java.lang.String&nbsp;path)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">As of Version 2.1 of the Java Servlet API, use <a href="../../jakarta/servlet/ServletContext.html#getRealPath-java.lang.String-"><code>ServletContext.getRealPath(java.lang.String)</code></a> instead.</span></div>
</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getRemoteAddr--">getRemoteAddr</a></span>()</code>
<div class="block">Returns the Internet Protocol (IP) address of the client or last proxy that sent the request.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getRemoteHost--">getRemoteHost</a></span>()</code>
<div class="block">Returns the fully qualified name of the client or the last proxy that sent the request.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getRemotePort--">getRemotePort</a></span>()</code>
<div class="block">Returns the Internet Protocol (IP) source port of the client or last proxy that sent the request.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet">RequestDispatcher</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getRequestDispatcher-java.lang.String-">getRequestDispatcher</a></span>(java.lang.String&nbsp;path)</code>
<div class="block">Returns a <a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet"><code>RequestDispatcher</code></a> object that acts as a wrapper for the resource located at the given path.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getScheme--">getScheme</a></span>()</code>
<div class="block">Returns the name of the scheme used to make this request, for example, <code>http</code>, <code>https</code>, or
 <code>ftp</code>.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getServerName--">getServerName</a></span>()</code>
<div class="block">Returns the host name of the server to which the request was sent.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getServerPort--">getServerPort</a></span>()</code>
<div class="block">Returns the port number to which the request was sent.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="../../jakarta/servlet/ServletContext.html" title="interface in jakarta.servlet">ServletContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#getServletContext--">getServletContext</a></span>()</code>
<div class="block">Gets the servlet context to which this ServletRequest was last dispatched.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#isAsyncStarted--">isAsyncStarted</a></span>()</code>
<div class="block">Checks if this request has been put into asynchronous mode.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#isAsyncSupported--">isAsyncSupported</a></span>()</code>
<div class="block">Checks if this request supports asynchronous operation.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#isSecure--">isSecure</a></span>()</code>
<div class="block">Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#removeAttribute-java.lang.String-">removeAttribute</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Removes an attribute from this request.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#setAttribute-java.lang.String-java.lang.Object-">setAttribute</a></span>(java.lang.String&nbsp;name,
            java.lang.Object&nbsp;o)</code>
<div class="block">Stores an attribute in this request.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#setCharacterEncoding-java.lang.String-">setCharacterEncoding</a></span>(java.lang.String&nbsp;env)</code>
<div class="block">Overrides the name of the character encoding used in the body of this request.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet">AsyncContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#startAsync--">startAsync</a></span>()</code>
<div class="block">Puts this request into asynchronous mode, and initializes its <a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet"><code>AsyncContext</code></a> with the original (unwrapped)
 ServletRequest and ServletResponse objects.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code><a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet">AsyncContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/servlet/ServletRequest.html#startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">startAsync</a></span>(<a href="../../jakarta/servlet/ServletRequest.html" title="interface in jakarta.servlet">ServletRequest</a>&nbsp;servletRequest,
          <a href="../../jakarta/servlet/ServletResponse.html" title="interface in jakarta.servlet">ServletResponse</a>&nbsp;servletResponse)</code>
<div class="block">Puts this request into asynchronous mode, and initializes its <a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet"><code>AsyncContext</code></a> with the given request and
 response objects.</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="getAttribute-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttribute</h4>
<pre>java.lang.Object&nbsp;getAttribute(java.lang.String&nbsp;name)</pre>
<div class="block">Returns the value of the named attribute as an <code>Object</code>, or <code>null</code> if no attribute of the given
 name exists.

 <p>
 Attributes can be set two ways. The servlet container may set attributes to make available custom information about a
 request. For example, for requests made using HTTPS, the attribute
 <code>jakarta.servlet.request.X509Certificate</code> can be used to retrieve information on the certificate of the
 client. Attributes can also be set programmatically using <a href="../../jakarta/servlet/ServletRequest.html#setAttribute-java.lang.String-java.lang.Object-"><code>setAttribute(java.lang.String, java.lang.Object)</code></a>. This allows
 information to be embedded into a request before a <a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet"><code>RequestDispatcher</code></a> call.

 <p>
 Attribute names should follow the same conventions as package names. This specification reserves names matching
 <code>java.*</code>, <code>javax.*</code>, and <code>sun.*</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - a <code>String</code> specifying the name of the attribute</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Object</code> containing the value of the attribute, or <code>null</code> if the attribute does not
 exist</dd>
</dl>
</li>
</ul>
<a name="getAttributeNames--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttributeNames</h4>
<pre>java.util.Enumeration&lt;java.lang.String&gt;&nbsp;getAttributeNames()</pre>
<div class="block">Returns an <code>Enumeration</code> containing the names of the attributes available to this request. This method
 returns an empty <code>Enumeration</code> if the request has no attributes available to it.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Enumeration</code> of strings containing the names of the request's attributes</dd>
</dl>
</li>
</ul>
<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 used in the body of this request. This method returns <code>null</code> if
 no request encoding character encoding has been specified. The following methods for specifying the request character
 encoding are consulted, in decreasing order of priority: per request, per web app (using
 <a href="../../jakarta/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).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the name of the character encoding, or <code>null</code> if the request does
 not specify a character encoding</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;env)
                   throws java.io.UnsupportedEncodingException</pre>
<div class="block">Overrides the name of the character encoding used in the body of this request. This method must be called prior to
 reading request parameters or reading input using getReader(). Otherwise, it has no effect.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>env</code> - <code>String</code> containing the name of the character encoding.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.UnsupportedEncodingException</code> - if this ServletRequest is still in a state where a character encoding may be
 set, but the specified encoding is invalid</dd>
</dl>
</li>
</ul>
<a name="getContentLength--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContentLength</h4>
<pre>int&nbsp;getContentLength()</pre>
<div class="block">Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not
 known or is greater than Integer.MAX_VALUE. For HTTP servlets, same as the value of the CGI variable CONTENT_LENGTH.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an integer containing the length of the request body or -1 if the length is not known or is greater than
 Integer.MAX_VALUE.</dd>
</dl>
</li>
</ul>
<a name="getContentLengthLong--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContentLengthLong</h4>
<pre>long&nbsp;getContentLengthLong()</pre>
<div class="block">Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not
 known. For HTTP servlets, same as the value of the CGI variable CONTENT_LENGTH.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a long containing the length of the request body or -1L if the length is not known</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.1</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 MIME type of the body of the request, or <code>null</code> if the type is not known. For HTTP servlets,
 same as the value of the CGI variable CONTENT_TYPE.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the name of the MIME type of the request, or null if the type is not known</dd>
</dl>
</li>
</ul>
<a name="getInputStream--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInputStream</h4>
<pre><a href="../../jakarta/servlet/ServletInputStream.html" title="class in jakarta.servlet">ServletInputStream</a>&nbsp;getInputStream()
                           throws java.io.IOException</pre>
<div class="block">Retrieves the body of the request as binary data using a <a href="../../jakarta/servlet/ServletInputStream.html" title="class in jakarta.servlet"><code>ServletInputStream</code></a>. Either this method or
 <a href="../../jakarta/servlet/ServletRequest.html#getReader--"><code>getReader()</code></a> may be called to read the body, not both.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <a href="../../jakarta/servlet/ServletInputStream.html" title="class in jakarta.servlet"><code>ServletInputStream</code></a> object containing the body of the request</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the <a href="../../jakarta/servlet/ServletRequest.html#getReader--"><code>getReader()</code></a> method has already been called for this request</dd>
<dd><code>java.io.IOException</code> - if an input or output exception occurred</dd>
</dl>
</li>
</ul>
<a name="getParameter-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameter</h4>
<pre>java.lang.String&nbsp;getParameter(java.lang.String&nbsp;name)</pre>
<div class="block">Returns the value of a request parameter as a <code>String</code>, or <code>null</code> if the parameter does not
 exist. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in
 the query string or posted form data.

 <p>
 You should only use this method when you are sure the parameter has only one value. If the parameter might have more
 than one value, use <a href="../../jakarta/servlet/ServletRequest.html#getParameterValues-java.lang.String-"><code>getParameterValues(java.lang.String)</code></a>.

 <p>
 If you use this method with a multivalued parameter, the value returned is equal to the first value in the array
 returned by <code>getParameterValues</code>.

 <p>
 If the parameter data was sent in the request body, such as occurs with an HTTP POST request, then reading the body
 directly via <a href="../../jakarta/servlet/ServletRequest.html#getInputStream--"><code>getInputStream()</code></a> or <a href="../../jakarta/servlet/ServletRequest.html#getReader--"><code>getReader()</code></a> can interfere with the execution of this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - a <code>String</code> specifying the name of the parameter</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> representing the single value of the parameter</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/servlet/ServletRequest.html#getParameterValues-java.lang.String-"><code>getParameterValues(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="getParameterNames--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterNames</h4>
<pre>java.util.Enumeration&lt;java.lang.String&gt;&nbsp;getParameterNames()</pre>
<div class="block">Returns an <code>Enumeration</code> of <code>String</code> objects containing the names of the parameters contained
 in this request. If the request has no parameters, the method returns an empty <code>Enumeration</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Enumeration</code> of <code>String</code> objects, each <code>String</code> containing the name of a
 request parameter; or an empty <code>Enumeration</code> if the request has no parameters</dd>
</dl>
</li>
</ul>
<a name="getParameterValues-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterValues</h4>
<pre>java.lang.String[]&nbsp;getParameterValues(java.lang.String&nbsp;name)</pre>
<div class="block">Returns an array of <code>String</code> objects containing all of the values the given request parameter has, or
 <code>null</code> if the parameter does not exist.

 <p>
 If the parameter has a single value, the array has a length of 1.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - a <code>String</code> containing the name of the parameter whose value is requested</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an array of <code>String</code> objects containing the parameter's values</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/servlet/ServletRequest.html#getParameter-java.lang.String-"><code>getParameter(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="getParameterMap--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterMap</h4>
<pre>java.util.Map&lt;java.lang.String,java.lang.String[]&gt;&nbsp;getParameterMap()</pre>
<div class="block">Returns a java.util.Map of the parameters of this request.
 
 <p>
 Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the
 query string or posted form data.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an immutable java.util.Map containing parameter names as keys and parameter values as map values. The keys in
 the parameter map are of type String. The values in the parameter map are of type String array.</dd>
</dl>
</li>
</ul>
<a name="getProtocol--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProtocol</h4>
<pre>java.lang.String&nbsp;getProtocol()</pre>
<div class="block">Returns the name and version of the protocol the request uses in the form <i>protocol/majorVersion.minorVersion</i>,
 for example, HTTP/1.1. For HTTP servlets, the value returned is the same as the value of the CGI variable
 <code>SERVER_PROTOCOL</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the protocol name and version number</dd>
</dl>
</li>
</ul>
<a name="getScheme--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getScheme</h4>
<pre>java.lang.String&nbsp;getScheme()</pre>
<div class="block">Returns the name of the scheme used to make this request, for example, <code>http</code>, <code>https</code>, or
 <code>ftp</code>. Different schemes have different rules for constructing URLs, as noted in RFC 1738.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the name of the scheme used to make this request</dd>
</dl>
</li>
</ul>
<a name="getServerName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServerName</h4>
<pre>java.lang.String&nbsp;getServerName()</pre>
<div class="block">Returns the host name of the server to which the request was sent. It is the value of the part before ":" in the
 <code>Host</code> header value, if any, or the resolved server name, or the server IP address.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the name of the server</dd>
</dl>
</li>
</ul>
<a name="getServerPort--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServerPort</h4>
<pre>int&nbsp;getServerPort()</pre>
<div class="block">Returns the port number to which the request was sent. It is the value of the part after ":" in the <code>Host</code>
 header value, if any, or the server port where the client connection was accepted on.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an integer specifying the port number</dd>
</dl>
</li>
</ul>
<a name="getReader--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReader</h4>
<pre>java.io.BufferedReader&nbsp;getReader()
                          throws java.io.IOException</pre>
<div class="block">Retrieves the body of the request as character data using a <code>BufferedReader</code>. The reader translates the
 character data according to the character encoding used on the body. Either this method or <a href="../../jakarta/servlet/ServletRequest.html#getInputStream--"><code>getInputStream()</code></a>
 may be called to read the body, not both.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>BufferedReader</code> containing the body of the request</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.UnsupportedEncodingException</code> - if the character set encoding used is not supported and the text cannot be
 decoded</dd>
<dd><code>java.lang.IllegalStateException</code> - if <a href="../../jakarta/servlet/ServletRequest.html#getInputStream--"><code>getInputStream()</code></a> method has been called on this request</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="../../jakarta/servlet/ServletRequest.html#getInputStream--"><code>getInputStream()</code></a></dd>
</dl>
</li>
</ul>
<a name="getRemoteAddr--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteAddr</h4>
<pre>java.lang.String&nbsp;getRemoteAddr()</pre>
<div class="block">Returns the Internet Protocol (IP) address of the client or last proxy that sent the request. For HTTP servlets, same
 as the value of the CGI variable <code>REMOTE_ADDR</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the IP address of the client that sent the request</dd>
</dl>
</li>
</ul>
<a name="getRemoteHost--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteHost</h4>
<pre>java.lang.String&nbsp;getRemoteHost()</pre>
<div class="block">Returns the fully qualified name of the client or the last proxy that sent the request. If the engine cannot or
 chooses not to resolve the hostname (to improve performance), this method returns the dotted-string form of the IP
 address. For HTTP servlets, same as the value of the CGI variable <code>REMOTE_HOST</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the fully qualified name of the client</dd>
</dl>
</li>
</ul>
<a name="setAttribute-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAttribute</h4>
<pre>void&nbsp;setAttribute(java.lang.String&nbsp;name,
                  java.lang.Object&nbsp;o)</pre>
<div class="block">Stores an attribute in this request. Attributes are reset between requests. This method is most often used in
 conjunction with <a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet"><code>RequestDispatcher</code></a>.

 <p>
 Attribute names should follow the same conventions as package names. <br>
 If the object passed in is null, the effect is the same as calling <a href="../../jakarta/servlet/ServletRequest.html#removeAttribute-java.lang.String-"><code>removeAttribute(java.lang.String)</code></a>. <br>
 It is warned that when the request is dispatched from the servlet resides in a different web application by
 <code>RequestDispatcher</code>, the object set by this method may not be correctly retrieved in the caller servlet.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - a <code>String</code> specifying the name of the attribute</dd>
<dd><code>o</code> - the <code>Object</code> to be stored</dd>
</dl>
</li>
</ul>
<a name="removeAttribute-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAttribute</h4>
<pre>void&nbsp;removeAttribute(java.lang.String&nbsp;name)</pre>
<div class="block">Removes an attribute from this request. This method is not generally needed as attributes only persist as long as the
 request is being handled.

 <p>
 Attribute names should follow the same conventions as package names. Names beginning with <code>java.*</code>,
 <code>javax.*</code>, and <code>com.sun.*</code>, are reserved for use by Sun Microsystems.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - a <code>String</code> specifying the name of the attribute to remove</dd>
</dl>
</li>
</ul>
<a name="getLocale--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocale</h4>
<pre>java.util.Locale&nbsp;getLocale()</pre>
<div class="block">Returns the preferred <code>Locale</code> that the client will accept content in, based on the Accept-Language
 header. If the client request doesn't provide an Accept-Language header, this method returns the default locale for
 the server.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the preferred <code>Locale</code> for the client</dd>
</dl>
</li>
</ul>
<a name="getLocales--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocales</h4>
<pre>java.util.Enumeration&lt;java.util.Locale&gt;&nbsp;getLocales()</pre>
<div class="block">Returns an <code>Enumeration</code> of <code>Locale</code> objects indicating, in decreasing order starting with the
 preferred locale, the locales that are acceptable to the client based on the Accept-Language header. If the client
 request doesn't provide an Accept-Language header, this method returns an <code>Enumeration</code> containing one
 <code>Locale</code>, the default locale for the server.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Enumeration</code> of preferred <code>Locale</code> objects for the client</dd>
</dl>
</li>
</ul>
<a name="isSecure--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSecure</h4>
<pre>boolean&nbsp;isSecure()</pre>
<div class="block">Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a boolean indicating if the request was made using a secure channel</dd>
</dl>
</li>
</ul>
<a name="getRequestDispatcher-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRequestDispatcher</h4>
<pre><a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet">RequestDispatcher</a>&nbsp;getRequestDispatcher(java.lang.String&nbsp;path)</pre>
<div class="block">Returns a <a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet"><code>RequestDispatcher</code></a> object that acts as a wrapper for the resource located at the given path. A
 <code>RequestDispatcher</code> object can be used to forward a request to the resource or to include the resource in
 a response. The resource can be dynamic or static.

 <p>
 The pathname specified may be relative, although it cannot extend outside the current servlet context. If the path
 begins with a "/" it is interpreted as relative to the current context root. This method returns <code>null</code> if
 the servlet container cannot return a <code>RequestDispatcher</code>.

 <p>
 Using a RequestDispatcher, requests may be dispatched to any part of the web application bypassing both implicit (no
 direct access to WEB-INF or META-INF) and explicit (defined by the web application) security constraints. Unsanitized
 user provided data must not be used to construct the path passed to the RequestDispatcher as it is very likely to
 create a security vulnerability in the application.

 <p>
 The difference between this method and <a href="../../jakarta/servlet/ServletContext.html#getRequestDispatcher-java.lang.String-"><code>ServletContext.getRequestDispatcher(java.lang.String)</code></a> is that this method can take a
 relative path.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - a <code>String</code> specifying the pathname to the resource. If it is relative, it must be relative
 against the current servlet.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>RequestDispatcher</code> object that acts as a wrapper for the resource at the specified path, or
 <code>null</code> if the servlet container cannot return a <code>RequestDispatcher</code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/servlet/RequestDispatcher.html" title="interface in jakarta.servlet"><code>RequestDispatcher</code></a>, 
<a href="../../jakarta/servlet/ServletContext.html#getRequestDispatcher-java.lang.String-"><code>ServletContext.getRequestDispatcher(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="getRealPath-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRealPath</h4>
<pre>@Deprecated
java.lang.String&nbsp;getRealPath(java.lang.String&nbsp;path)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of Version 2.1 of the Java Servlet API, use <a href="../../jakarta/servlet/ServletContext.html#getRealPath-java.lang.String-"><code>ServletContext.getRealPath(java.lang.String)</code></a> instead.</span></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - the path for which the real path is to be returned.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <i>real</i> path, or <tt>null</tt> if the translation cannot be performed.</dd>
</dl>
</li>
</ul>
<a name="getRemotePort--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemotePort</h4>
<pre>int&nbsp;getRemotePort()</pre>
<div class="block">Returns the Internet Protocol (IP) source port of the client or last proxy that sent the request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an integer specifying the port number</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.4</dd>
</dl>
</li>
</ul>
<a name="getLocalName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalName</h4>
<pre>java.lang.String&nbsp;getLocalName()</pre>
<div class="block">Returns the host name of the Internet Protocol (IP) interface on which the request was received.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the host name of the IP on which the request was received.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.4</dd>
</dl>
</li>
</ul>
<a name="getLocalAddr--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalAddr</h4>
<pre>java.lang.String&nbsp;getLocalAddr()</pre>
<div class="block">Returns the Internet Protocol (IP) address of the interface on which the request was received.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> containing the IP address on which the request was received.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.4</dd>
</dl>
</li>
</ul>
<a name="getLocalPort--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalPort</h4>
<pre>int&nbsp;getLocalPort()</pre>
<div class="block">Returns the Internet Protocol (IP) port number of the interface on which the request was received.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an integer specifying the port number</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 2.4</dd>
</dl>
</li>
</ul>
<a name="getServletContext--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServletContext</h4>
<pre><a href="../../jakarta/servlet/ServletContext.html" title="interface in jakarta.servlet">ServletContext</a>&nbsp;getServletContext()</pre>
<div class="block">Gets the servlet context to which this ServletRequest was last dispatched.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the servlet context to which this ServletRequest was last dispatched</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
</dl>
</li>
</ul>
<a name="startAsync--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>startAsync</h4>
<pre><a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet">AsyncContext</a>&nbsp;startAsync()
                 throws java.lang.IllegalStateException</pre>
<div class="block">Puts this request into asynchronous mode, and initializes its <a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet"><code>AsyncContext</code></a> with the original (unwrapped)
 ServletRequest and ServletResponse objects.

 <p>
 Calling this method will cause committal of the associated response to be delayed until <a href="../../jakarta/servlet/AsyncContext.html#complete--"><code>AsyncContext.complete()</code></a>
 is called on the returned <a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet"><code>AsyncContext</code></a>, or the asynchronous operation has timed out.

 <p>
 Calling <a href="../../jakarta/servlet/AsyncContext.html#hasOriginalRequestAndResponse--"><code>AsyncContext.hasOriginalRequestAndResponse()</code></a> on the returned AsyncContext will return
 <code>true</code>. Any filters invoked in the <i>outbound</i> direction after this request was put into asynchronous
 mode may use this as an indication that any request and/or response wrappers that they added during their
 <i>inbound</i> invocation need not stay around for the duration of the asynchronous operation, and therefore any of
 their associated resources may be released.

 <p>
 This method clears the list of <a href="../../jakarta/servlet/AsyncListener.html" title="interface in jakarta.servlet"><code>AsyncListener</code></a> instances (if any) that were registered with the AsyncContext
 returned by the previous call to one of the startAsync methods, after calling each AsyncListener at its
 <a href="../../jakarta/servlet/AsyncListener.html#onStartAsync-jakarta.servlet.AsyncEvent-"><code>onStartAsync</code></a> method.

 <p>
 Subsequent invocations of this method, or its overloaded variant, will return the same AsyncContext instance,
 reinitialized as appropriate.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the (re)initialized AsyncContext</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if this request is within the scope of a filter or servlet that does not support
 asynchronous operations (that is, <a href="../../jakarta/servlet/ServletRequest.html#isAsyncSupported--"><code>isAsyncSupported()</code></a> returns false), or if this method is called again without
 any asynchronous dispatch (resulting from one of the <a href="../../jakarta/servlet/AsyncContext.html#dispatch--"><code>AsyncContext.dispatch()</code></a> methods), is called outside the
 scope of any such dispatch, or is called again within the scope of the same dispatch, or if the response has already
 been closed</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/servlet/AsyncContext.html#dispatch--"><code>AsyncContext.dispatch()</code></a></dd>
</dl>
</li>
</ul>
<a name="startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>startAsync</h4>
<pre><a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet">AsyncContext</a>&nbsp;startAsync(<a href="../../jakarta/servlet/ServletRequest.html" title="interface in jakarta.servlet">ServletRequest</a>&nbsp;servletRequest,
                        <a href="../../jakarta/servlet/ServletResponse.html" title="interface in jakarta.servlet">ServletResponse</a>&nbsp;servletResponse)
                 throws java.lang.IllegalStateException</pre>
<div class="block">Puts this request into asynchronous mode, and initializes its <a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet"><code>AsyncContext</code></a> with the given request and
 response objects.

 <p>
 The ServletRequest and ServletResponse arguments must be the same instances, or instances of
 <a href="../../jakarta/servlet/ServletRequestWrapper.html" title="class in jakarta.servlet"><code>ServletRequestWrapper</code></a> and <a href="../../jakarta/servlet/ServletResponseWrapper.html" title="class in jakarta.servlet"><code>ServletResponseWrapper</code></a> that wrap them, that were passed to the
 <a href="../../jakarta/servlet/Servlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>service</code></a> method of the Servlet or the <a href="../../jakarta/servlet/Filter.html#doFilter-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-jakarta.servlet.FilterChain-"><code>doFilter</code></a> method of the Filter,
 respectively, in whose scope this method is being called.

 <p>
 Calling this method will cause committal of the associated response to be delayed until <a href="../../jakarta/servlet/AsyncContext.html#complete--"><code>AsyncContext.complete()</code></a>
 is called on the returned <a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet"><code>AsyncContext</code></a>, or the asynchronous operation has timed out.

 <p>
 Calling <a href="../../jakarta/servlet/AsyncContext.html#hasOriginalRequestAndResponse--"><code>AsyncContext.hasOriginalRequestAndResponse()</code></a> on the returned AsyncContext will return
 <code>false</code>, unless the passed in ServletRequest and ServletResponse arguments are the original ones or do not
 carry any application-provided wrappers. Any filters invoked in the <i>outbound</i> direction after this request was
 put into asynchronous mode may use this as an indication that some of the request and/or response wrappers that they
 added during their <i>inbound</i> invocation may need to stay in place for the duration of the asynchronous
 operation, and their associated resources may not be released. A ServletRequestWrapper applied during the
 <i>inbound</i> invocation of a filter may be released by the <i>outbound</i> invocation of the filter only if the
 given <code>servletRequest</code>, which is used to initialize the AsyncContext and will be returned by a call to
 <a href="../../jakarta/servlet/AsyncContext.html#getRequest--"><code>AsyncContext.getRequest()</code></a>, does not contain said ServletRequestWrapper. The same holds true for
 ServletResponseWrapper instances.

 <p>
 This method clears the list of <a href="../../jakarta/servlet/AsyncListener.html" title="interface in jakarta.servlet"><code>AsyncListener</code></a> instances (if any) that were registered with the AsyncContext
 returned by the previous call to one of the startAsync methods, after calling each AsyncListener at its
 <a href="../../jakarta/servlet/AsyncListener.html#onStartAsync-jakarta.servlet.AsyncEvent-"><code>onStartAsync</code></a> method.

 <p>
 Subsequent invocations of this method, or its zero-argument variant, will return the same AsyncContext instance,
 reinitialized as appropriate. If a call to this method is followed by a call to its zero-argument variant, the
 specified (and possibly wrapped) request and response objects will remain <i>locked in</i> on the returned
 AsyncContext.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>servletRequest</code> - the ServletRequest used to initialize the AsyncContext</dd>
<dd><code>servletResponse</code> - the ServletResponse used to initialize the AsyncContext</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the (re)initialized AsyncContext</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if this request is within the scope of a filter or servlet that does not support
 asynchronous operations (that is, <a href="../../jakarta/servlet/ServletRequest.html#isAsyncSupported--"><code>isAsyncSupported()</code></a> returns false), or if this method is called again without
 any asynchronous dispatch (resulting from one of the <a href="../../jakarta/servlet/AsyncContext.html#dispatch--"><code>AsyncContext.dispatch()</code></a> methods), is called outside the
 scope of any such dispatch, or is called again within the scope of the same dispatch, or if the response has already
 been closed</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
</dl>
</li>
</ul>
<a name="isAsyncStarted--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAsyncStarted</h4>
<pre>boolean&nbsp;isAsyncStarted()</pre>
<div class="block">Checks if this request has been put into asynchronous mode.

 <p>
 A ServletRequest is put into asynchronous mode by calling <a href="../../jakarta/servlet/ServletRequest.html#startAsync--"><code>startAsync()</code></a> or
 <a href="../../jakarta/servlet/ServletRequest.html#startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>startAsync(ServletRequest,ServletResponse)</code></a> on it.
 
 <p>
 This method returns <tt>false</tt> if this request was put into asynchronous mode, but has since been dispatched
 using one of the <a href="../../jakarta/servlet/AsyncContext.html#dispatch--"><code>AsyncContext.dispatch()</code></a> methods or released from asynchronous mode via a call to
 <a href="../../jakarta/servlet/AsyncContext.html#complete--"><code>AsyncContext.complete()</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this request has been put into asynchronous mode, false otherwise</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
</dl>
</li>
</ul>
<a name="isAsyncSupported--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAsyncSupported</h4>
<pre>boolean&nbsp;isAsyncSupported()</pre>
<div class="block">Checks if this request supports asynchronous operation.

 <p>
 Asynchronous operation is disabled for this request if this request is within the scope of a filter or servlet that
 has not been annotated or flagged in the deployment descriptor as being able to support asynchronous handling.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this request supports asynchronous operation, false otherwise</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
</dl>
</li>
</ul>
<a name="getAsyncContext--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAsyncContext</h4>
<pre><a href="../../jakarta/servlet/AsyncContext.html" title="interface in jakarta.servlet">AsyncContext</a>&nbsp;getAsyncContext()</pre>
<div class="block">Gets the AsyncContext that was created or reinitialized by the most recent invocation of <a href="../../jakarta/servlet/ServletRequest.html#startAsync--"><code>startAsync()</code></a> or
 <a href="../../jakarta/servlet/ServletRequest.html#startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>startAsync(ServletRequest,ServletResponse)</code></a> on this request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the AsyncContext that was created or reinitialized by the most recent invocation of <a href="../../jakarta/servlet/ServletRequest.html#startAsync--"><code>startAsync()</code></a> or
 <a href="../../jakarta/servlet/ServletRequest.html#startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>startAsync(ServletRequest,ServletResponse)</code></a> on this request</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if this request has not been put into asynchronous mode, i.e., if neither
 <a href="../../jakarta/servlet/ServletRequest.html#startAsync--"><code>startAsync()</code></a> nor <a href="../../jakarta/servlet/ServletRequest.html#startAsync-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>startAsync(ServletRequest,ServletResponse)</code></a> has been called</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
</dl>
</li>
</ul>
<a name="getDispatcherType--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getDispatcherType</h4>
<pre><a href="../../jakarta/servlet/DispatcherType.html" title="enum in jakarta.servlet">DispatcherType</a>&nbsp;getDispatcherType()</pre>
<div class="block">Gets the dispatcher type of this request.

 <p>
 The dispatcher type of a request is used by the container to select the filters that need to be applied to the
 request: Only filters with matching dispatcher type and url patterns will be applied.
 
 <p>
 Allowing a filter that has been configured for multiple dispatcher types to query a request for its dispatcher type
 allows the filter to process the request differently depending on its dispatcher type.

 <p>
 The initial dispatcher type of a request is defined as <code>DispatcherType.REQUEST</code>. The dispatcher type of a
 request dispatched via <a href="../../jakarta/servlet/RequestDispatcher.html#forward-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>RequestDispatcher.forward(ServletRequest, ServletResponse)</code></a> or
 <a href="../../jakarta/servlet/RequestDispatcher.html#include-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>RequestDispatcher.include(ServletRequest, ServletResponse)</code></a> is given as <code>DispatcherType.FORWARD</code> or
 <code>DispatcherType.INCLUDE</code>, respectively, while the dispatcher type of an asynchronous request dispatched
 via one of the <a href="../../jakarta/servlet/AsyncContext.html#dispatch--"><code>AsyncContext.dispatch()</code></a> methods is given as <code>DispatcherType.ASYNC</code>. Finally, the
 dispatcher type of a request dispatched to an error page by the container's error handling mechanism is given as
 <code>DispatcherType.ERROR</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the dispatcher type of this request</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 3.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/servlet/DispatcherType.html" title="enum in jakarta.servlet"><code>DispatcherType</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="../../jakarta/servlet/ServletRegistration.Dynamic.html" title="interface in jakarta.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../jakarta/servlet/ServletRequestAttributeEvent.html" title="class in jakarta.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?jakarta/servlet/ServletRequest.html" target="_top">Frames</a></li>
<li><a href="ServletRequest.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>
