<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>PageContext</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="PageContext";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":10,"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":10,"i15":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete 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/jsp/JspWriter.html" title="class in javax.servlet.jsp"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/servlet/jsp/SkipPageException.html" title="class in javax.servlet.jsp"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/servlet/jsp/PageContext.html" target="_top">Frames</a></li>
<li><a href="PageContext.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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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.jsp</div>
<h2 title="Class PageContext" class="title">Class PageContext</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../javax/servlet/jsp/JspContext.html" title="class in javax.servlet.jsp">javax.servlet.jsp.JspContext</a></li>
<li>
<ul class="inheritance">
<li>javax.servlet.jsp.PageContext</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../org/apache/jasper/runtime/JspContextWrapper.html" title="class in org.apache.jasper.runtime">JspContextWrapper</a>, <a href="../../../org/apache/jasper/runtime/PageContextImpl.html" title="class in org.apache.jasper.runtime">PageContextImpl</a>, <a href="../../../org/apache/taglibs/standard/lang/jstl/test/PageContextImpl.html" title="class in org.apache.taglibs.standard.lang.jstl.test">PageContextImpl</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">PageContext</span>
extends <a href="../../../javax/servlet/jsp/JspContext.html" title="class in javax.servlet.jsp">JspContext</a></pre>
<div class="block"><p>
 PageContext extends JspContext to provide useful context information for when JSP technology is used in a Servlet
 environment.
 <p>
 A PageContext instance provides access to all the namespaces associated with a JSP page, provides access to several
 page attributes, as well as a layer above the implementation details. Implicit objects are added to the pageContext
 automatically.

 <p>
 The <code> PageContext </code> class is an abstract class, designed to be extended to provide implementation
 dependent implementations thereof, by conformant JSP engine runtime environments. A PageContext instance is obtained
 by a JSP implementation class by calling the JspFactory.getPageContext() method, and is released by calling
 JspFactory.releasePageContext().

 <p>
 An example of how PageContext, JspFactory, and other classes can be used within a JSP Page Implementation object is
 given elsewhere.

 <p>
 The PageContext provides a number of facilities to the page/component author and page implementor, including:
 <ul>
 <li>a single API to manage the various scoped namespaces
 <li>a number of convenience API's to access various public objects
 <li>a mechanism to obtain the JspWriter for output
 <li>a mechanism to manage session usage by the page
 <li>a mechanism to expose page directive attributes to the scripting environment
 <li>mechanisms to forward or include the current request to other active components in the application
 <li>a mechanism to handle errorpage exception processing
 </ul>

 <p>
 <B>Methods Intended for Container Generated Code</B>
 <p>
 Some methods are intended to be used by the code generated by the container, not by code written by JSP page authors,
 or JSP tag library authors.
 <p>
 The methods supporting <B>lifecycle</B> are <code>initialize()</code> and <code>release()</code>

 <p>
 The following methods enable the <B>management of nested</B> JspWriter streams to implement Tag Extensions:
 <code>pushBody()</code>

 <p>
 <B>Methods Intended for JSP authors</B>
 <p>
 The following methods provide <B>convenient access</B> to implicit objects: <code>getException()</code>,
 <code>getPage()</code> <code>getRequest()</code>, <code>getResponse()</code>, <code>getSession()</code>,
 <code>getServletConfig()</code> and <code>getServletContext()</code>.

 <p>
 The following methods provide support for <B>forwarding, inclusion and error handling</B>: <code>forward()</code>,
 <code>include()</code>, and <code>handlePageException()</code>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#APPLICATION">APPLICATION</a></span></code>
<div class="block">Name used to store ServletContext in PageContext name table.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#APPLICATION_SCOPE">APPLICATION_SCOPE</a></span></code>
<div class="block">Application scope: named reference remains available in the ServletContext until it is reclaimed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#CONFIG">CONFIG</a></span></code>
<div class="block">Name used to store ServletConfig in PageContext name table.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#EXCEPTION">EXCEPTION</a></span></code>
<div class="block">Name used to store uncaught exception in ServletRequest attribute list and PageContext name table.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#OUT">OUT</a></span></code>
<div class="block">Name used to store current JspWriter in PageContext name table.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#PAGE">PAGE</a></span></code>
<div class="block">Name used to store the Servlet in this PageContext's nametables.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#PAGE_SCOPE">PAGE_SCOPE</a></span></code>
<div class="block">Page scope: (this is the default) the named reference remains available in this PageContext until the return from
 the current Servlet.service() invocation.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#PAGECONTEXT">PAGECONTEXT</a></span></code>
<div class="block">Name used to store this PageContext in it's own name table.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#REQUEST">REQUEST</a></span></code>
<div class="block">Name used to store ServletRequest in PageContext name table.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#REQUEST_SCOPE">REQUEST_SCOPE</a></span></code>
<div class="block">Request scope: the named reference remains available from the ServletRequest associated with the Servlet until
 the current request is completed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#RESPONSE">RESPONSE</a></span></code>
<div class="block">Name used to store ServletResponse in PageContext name table.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#SESSION">SESSION</a></span></code>
<div class="block">Name used to store HttpSession in PageContext name table.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#SESSION_SCOPE">SESSION_SCOPE</a></span></code>
<div class="block">Session scope (only valid if this page participates in a session): the named reference remains available from the
 HttpSession (if any) associated with the Servlet until the HttpSession is invalidated.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#PageContext--">PageContext</a></span>()</code>
<div class="block">Sole constructor.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete 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>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#forward-java.lang.String-">forward</a></span>(java.lang.String&nbsp;relativeUrlPath)</code>
<div class="block">
 This method is used to re-direct, or "forward" the current ServletRequest and ServletResponse to another active
 component in the application.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../javax/servlet/jsp/ErrorData.html" title="class in javax.servlet.jsp">ErrorData</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getErrorData--">getErrorData</a></span>()</code>
<div class="block">Provides convenient access to error information.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract java.lang.Exception</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getException--">getException</a></span>()</code>
<div class="block">The current value of the exception object (an Exception).</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getPage--">getPage</a></span>()</code>
<div class="block">The current value of the page object (In a Servlet environment, this is an instance of javax.servlet.Servlet).</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../javax/servlet/ServletRequest.html" title="interface in javax.servlet">ServletRequest</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getRequest--">getRequest</a></span>()</code>
<div class="block">The current value of the request object (a ServletRequest).</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../javax/servlet/ServletResponse.html" title="interface in javax.servlet">ServletResponse</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getResponse--">getResponse</a></span>()</code>
<div class="block">The current value of the response object (a ServletResponse).</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../javax/servlet/ServletConfig.html" title="interface in javax.servlet">ServletConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getServletConfig--">getServletConfig</a></span>()</code>
<div class="block">The ServletConfig instance.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../javax/servlet/ServletContext.html" title="interface in javax.servlet">ServletContext</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getServletContext--">getServletContext</a></span>()</code>
<div class="block">The ServletContext instance.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../javax/servlet/http/HttpSession.html" title="interface in javax.servlet.http">HttpSession</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#getSession--">getSession</a></span>()</code>
<div class="block">The current value of the session object (an HttpSession).</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#handlePageException-java.lang.Exception-">handlePageException</a></span>(java.lang.Exception&nbsp;e)</code>
<div class="block">
 This method is intended to process an unhandled 'page' level exception by forwarding the exception to the
 specified error page for this JSP.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#handlePageException-java.lang.Throwable-">handlePageException</a></span>(java.lang.Throwable&nbsp;t)</code>
<div class="block">
 This method is intended to process an unhandled 'page' level exception by forwarding the exception to the
 specified error page for this JSP.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#include-java.lang.String-">include</a></span>(java.lang.String&nbsp;relativeUrlPath)</code>
<div class="block">
 Causes the resource specified to be processed as part of the current ServletRequest and ServletResponse being
 processed by the calling Thread.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#include-java.lang.String-boolean-">include</a></span>(java.lang.String&nbsp;relativeUrlPath,
       boolean&nbsp;flush)</code>
<div class="block">
 Causes the resource specified to be processed as part of the current ServletRequest and ServletResponse being
 processed by the calling Thread.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#initialize-javax.servlet.Servlet-javax.servlet.ServletRequest-javax.servlet.ServletResponse-java.lang.String-boolean-int-boolean-">initialize</a></span>(<a href="../../../javax/servlet/Servlet.html" title="interface in javax.servlet">Servlet</a>&nbsp;servlet,
          <a href="../../../javax/servlet/ServletRequest.html" title="interface in javax.servlet">ServletRequest</a>&nbsp;request,
          <a href="../../../javax/servlet/ServletResponse.html" title="interface in javax.servlet">ServletResponse</a>&nbsp;response,
          java.lang.String&nbsp;errorPageURL,
          boolean&nbsp;needsSession,
          int&nbsp;bufferSize,
          boolean&nbsp;autoFlush)</code>
<div class="block">
 The initialize method is called to initialize an uninitialized PageContext so that it may be used by a JSP
 Implementation class to service an incoming request and response within it's _jspService() method.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../javax/servlet/jsp/tagext/BodyContent.html" title="class in javax.servlet.jsp.tagext">BodyContent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#pushBody--">pushBody</a></span>()</code>
<div class="block">Return a new BodyContent object, save the current "out" JspWriter, and update the value of the "out" attribute in
 the page scope attribute namespace of the PageContext.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/servlet/jsp/PageContext.html#release--">release</a></span>()</code>
<div class="block">
 This method shall "reset" the internal state of a PageContext, releasing all internal references, and preparing
 the PageContext for potential reuse by a later invocation of initialize().</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.servlet.jsp.JspContext">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;javax.servlet.jsp.<a href="../../../javax/servlet/jsp/JspContext.html" title="class in javax.servlet.jsp">JspContext</a></h3>
<code><a href="../../../javax/servlet/jsp/JspContext.html#findAttribute-java.lang.String-">findAttribute</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getAttribute-java.lang.String-">getAttribute</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getAttribute-java.lang.String-int-">getAttribute</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getAttributeNamesInScope-int-">getAttributeNamesInScope</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getAttributesScope-java.lang.String-">getAttributesScope</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getELContext--">getELContext</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getExpressionEvaluator--">getExpressionEvaluator</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getOut--">getOut</a>, <a href="../../../javax/servlet/jsp/JspContext.html#getVariableResolver--">getVariableResolver</a>, <a href="../../../javax/servlet/jsp/JspContext.html#popBody--">popBody</a>, <a href="../../../javax/servlet/jsp/JspContext.html#pushBody-java.io.Writer-">pushBody</a>, <a href="../../../javax/servlet/jsp/JspContext.html#removeAttribute-java.lang.String-">removeAttribute</a>, <a href="../../../javax/servlet/jsp/JspContext.html#removeAttribute-java.lang.String-int-">removeAttribute</a>, <a href="../../../javax/servlet/jsp/JspContext.html#setAttribute-java.lang.String-java.lang.Object-">setAttribute</a>, <a href="../../../javax/servlet/jsp/JspContext.html#setAttribute-java.lang.String-java.lang.Object-int-">setAttribute</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="PAGE_SCOPE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PAGE_SCOPE</h4>
<pre>public static final&nbsp;int PAGE_SCOPE</pre>
<div class="block">Page scope: (this is the default) the named reference remains available in this PageContext until the return from
 the current Servlet.service() invocation.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.PAGE_SCOPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="REQUEST_SCOPE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>REQUEST_SCOPE</h4>
<pre>public static final&nbsp;int REQUEST_SCOPE</pre>
<div class="block">Request scope: the named reference remains available from the ServletRequest associated with the Servlet until
 the current request is completed.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.REQUEST_SCOPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SESSION_SCOPE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SESSION_SCOPE</h4>
<pre>public static final&nbsp;int SESSION_SCOPE</pre>
<div class="block">Session scope (only valid if this page participates in a session): the named reference remains available from the
 HttpSession (if any) associated with the Servlet until the HttpSession is invalidated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.SESSION_SCOPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="APPLICATION_SCOPE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>APPLICATION_SCOPE</h4>
<pre>public static final&nbsp;int APPLICATION_SCOPE</pre>
<div class="block">Application scope: named reference remains available in the ServletContext until it is reclaimed.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.APPLICATION_SCOPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="PAGE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PAGE</h4>
<pre>public static final&nbsp;java.lang.String PAGE</pre>
<div class="block">Name used to store the Servlet in this PageContext's nametables.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.PAGE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="PAGECONTEXT">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PAGECONTEXT</h4>
<pre>public static final&nbsp;java.lang.String PAGECONTEXT</pre>
<div class="block">Name used to store this PageContext in it's own name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.PAGECONTEXT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="REQUEST">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>REQUEST</h4>
<pre>public static final&nbsp;java.lang.String REQUEST</pre>
<div class="block">Name used to store ServletRequest in PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.REQUEST">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="RESPONSE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RESPONSE</h4>
<pre>public static final&nbsp;java.lang.String RESPONSE</pre>
<div class="block">Name used to store ServletResponse in PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.RESPONSE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="CONFIG">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CONFIG</h4>
<pre>public static final&nbsp;java.lang.String CONFIG</pre>
<div class="block">Name used to store ServletConfig in PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.CONFIG">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SESSION">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SESSION</h4>
<pre>public static final&nbsp;java.lang.String SESSION</pre>
<div class="block">Name used to store HttpSession in PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.SESSION">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="OUT">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>OUT</h4>
<pre>public static final&nbsp;java.lang.String OUT</pre>
<div class="block">Name used to store current JspWriter in PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.OUT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="APPLICATION">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>APPLICATION</h4>
<pre>public static final&nbsp;java.lang.String APPLICATION</pre>
<div class="block">Name used to store ServletContext in PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.APPLICATION">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="EXCEPTION">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>EXCEPTION</h4>
<pre>public static final&nbsp;java.lang.String EXCEPTION</pre>
<div class="block">Name used to store uncaught exception in ServletRequest attribute list and PageContext name table.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.servlet.jsp.PageContext.EXCEPTION">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="PageContext--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>PageContext</h4>
<pre>public&nbsp;PageContext()</pre>
<div class="block">Sole constructor. (For invocation by subclass constructors, typically implicit.)</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="initialize-javax.servlet.Servlet-javax.servlet.ServletRequest-javax.servlet.ServletResponse-java.lang.String-boolean-int-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre>public abstract&nbsp;void&nbsp;initialize(<a href="../../../javax/servlet/Servlet.html" title="interface in javax.servlet">Servlet</a>&nbsp;servlet,
                                <a href="../../../javax/servlet/ServletRequest.html" title="interface in javax.servlet">ServletRequest</a>&nbsp;request,
                                <a href="../../../javax/servlet/ServletResponse.html" title="interface in javax.servlet">ServletResponse</a>&nbsp;response,
                                java.lang.String&nbsp;errorPageURL,
                                boolean&nbsp;needsSession,
                                int&nbsp;bufferSize,
                                boolean&nbsp;autoFlush)
                         throws java.io.IOException,
                                java.lang.IllegalStateException,
                                java.lang.IllegalArgumentException</pre>
<div class="block"><p>
 The initialize method is called to initialize an uninitialized PageContext so that it may be used by a JSP
 Implementation class to service an incoming request and response within it's _jspService() method.

 <p>
 This method is typically called from JspFactory.getPageContext() in order to initialize state.

 <p>
 This method is required to create an initial JspWriter, and associate the "out" name in page scope with this
 newly created object.

 <p>
 This method should not be used by page or tag library authors.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>servlet</code> - The Servlet that is associated with this PageContext</dd>
<dd><code>request</code> - The currently pending request for this Servlet</dd>
<dd><code>response</code> - The currently pending response for this Servlet</dd>
<dd><code>errorPageURL</code> - The value of the errorpage attribute from the page directive or null</dd>
<dd><code>needsSession</code> - The value of the session attribute from the page directive</dd>
<dd><code>bufferSize</code> - The value of the buffer attribute from the page directive</dd>
<dd><code>autoFlush</code> - The value of the autoflush attribute from the page directive</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - during creation of JspWriter</dd>
<dd><code>java.lang.IllegalStateException</code> - if out not correctly initialized</dd>
<dd><code>java.lang.IllegalArgumentException</code> - If one of the given parameters is invalid</dd>
</dl>
</li>
</ul>
<a name="release--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>release</h4>
<pre>public abstract&nbsp;void&nbsp;release()</pre>
<div class="block"><p>
 This method shall "reset" the internal state of a PageContext, releasing all internal references, and preparing
 the PageContext for potential reuse by a later invocation of initialize(). This method is typically called from
 JspFactory.releasePageContext().

 <p>
 Subclasses shall envelope this method.

 <p>
 This method should not be used by page or tag library authors.</div>
</li>
</ul>
<a name="getSession--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSession</h4>
<pre>public abstract&nbsp;<a href="../../../javax/servlet/http/HttpSession.html" title="interface in javax.servlet.http">HttpSession</a>&nbsp;getSession()</pre>
<div class="block">The current value of the session object (an HttpSession).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the HttpSession for this PageContext or null</dd>
</dl>
</li>
</ul>
<a name="getPage--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPage</h4>
<pre>public abstract&nbsp;java.lang.Object&nbsp;getPage()</pre>
<div class="block">The current value of the page object (In a Servlet environment, this is an instance of javax.servlet.Servlet).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Page implementation class instance associated with this PageContext</dd>
</dl>
</li>
</ul>
<a name="getRequest--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRequest</h4>
<pre>public abstract&nbsp;<a href="../../../javax/servlet/ServletRequest.html" title="interface in javax.servlet">ServletRequest</a>&nbsp;getRequest()</pre>
<div class="block">The current value of the request object (a ServletRequest).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The ServletRequest for this PageContext</dd>
</dl>
</li>
</ul>
<a name="getResponse--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getResponse</h4>
<pre>public abstract&nbsp;<a href="../../../javax/servlet/ServletResponse.html" title="interface in javax.servlet">ServletResponse</a>&nbsp;getResponse()</pre>
<div class="block">The current value of the response object (a ServletResponse).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the ServletResponse for this PageContext</dd>
</dl>
</li>
</ul>
<a name="getException--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getException</h4>
<pre>public abstract&nbsp;java.lang.Exception&nbsp;getException()</pre>
<div class="block">The current value of the exception object (an Exception).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>any exception passed to this as an errorpage</dd>
</dl>
</li>
</ul>
<a name="getServletConfig--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServletConfig</h4>
<pre>public abstract&nbsp;<a href="../../../javax/servlet/ServletConfig.html" title="interface in javax.servlet">ServletConfig</a>&nbsp;getServletConfig()</pre>
<div class="block">The ServletConfig instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the ServletConfig for this PageContext</dd>
</dl>
</li>
</ul>
<a name="getServletContext--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServletContext</h4>
<pre>public abstract&nbsp;<a href="../../../javax/servlet/ServletContext.html" title="interface in javax.servlet">ServletContext</a>&nbsp;getServletContext()</pre>
<div class="block">The ServletContext instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the ServletContext for this PageContext</dd>
</dl>
</li>
</ul>
<a name="forward-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>forward</h4>
<pre>public abstract&nbsp;void&nbsp;forward(java.lang.String&nbsp;relativeUrlPath)
                      throws <a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a>,
                             java.io.IOException</pre>
<div class="block"><p>
 This method is used to re-direct, or "forward" the current ServletRequest and ServletResponse to another active
 component in the application.
 </p>
 <p>
 If the <I> relativeUrlPath </I> begins with a "/" then the URL specified is calculated relative to the DOCROOT of
 the <code> ServletContext </code> for this JSP. If the path does not begin with a "/" then the URL specified is
 calculated relative to the URL of the request that was mapped to the calling JSP.
 </p>
 <p>
 It is only valid to call this method from a <code> Thread </code> executing within a
 <code> _jspService(...) </code> method of a JSP.
 </p>
 <p>
 Once this method has been called successfully, it is illegal for the calling <code> Thread </code> to attempt to
 modify the <code>
 ServletResponse </code> object. Any such attempt to do so, shall result in undefined behavior. Typically, callers
 immediately return from <code> _jspService(...) </code> after calling this method.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relativeUrlPath</code> - specifies the relative URL path to the target resource as described above</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if <code> ServletResponse </code> is not in a state where a forward can be
                               performed</dd>
<dd><code><a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a></code> - if the page that was forwarded to throws a ServletException</dd>
<dd><code>java.io.IOException</code> - if an I/O error occurred while forwarding</dd>
</dl>
</li>
</ul>
<a name="include-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>include</h4>
<pre>public abstract&nbsp;void&nbsp;include(java.lang.String&nbsp;relativeUrlPath)
                      throws <a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a>,
                             java.io.IOException</pre>
<div class="block"><p>
 Causes the resource specified to be processed as part of the current ServletRequest and ServletResponse being
 processed by the calling Thread. The output of the target resources processing of the request is written directly
 to the ServletResponse output stream.
 </p>
 <p>
 The current JspWriter "out" for this JSP is flushed as a side-effect of this call, prior to processing the
 include.
 </p>
 <p>
 If the <I> relativeUrlPath </I> begins with a "/" then the URL specified is calculated relative to the DOCROOT of
 the <code>ServletContext</code> for this JSP. If the path does not begin with a "/" then the URL specified is
 calculated relative to the URL of the request that was mapped to the calling JSP.
 </p>
 <p>
 It is only valid to call this method from a <code> Thread </code> executing within a
 <code> _jspService(...) </code> method of a JSP.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relativeUrlPath</code> - specifies the relative URL path to the target resource to be included</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a></code> - if the page that was forwarded to throws a ServletException</dd>
<dd><code>java.io.IOException</code> - if an I/O error occurred while forwarding</dd>
</dl>
</li>
</ul>
<a name="include-java.lang.String-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>include</h4>
<pre>public abstract&nbsp;void&nbsp;include(java.lang.String&nbsp;relativeUrlPath,
                             boolean&nbsp;flush)
                      throws <a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a>,
                             java.io.IOException</pre>
<div class="block"><p>
 Causes the resource specified to be processed as part of the current ServletRequest and ServletResponse being
 processed by the calling Thread. The output of the target resources processing of the request is written directly
 to the current JspWriter returned by a call to getOut().
 </p>
 <p>
 If flush is true, The current JspWriter "out" for this JSP is flushed as a side-effect of this call, prior to
 processing the include. Otherwise, the JspWriter "out" is not flushed.
 </p>
 <p>
 If the <i>relativeUrlPath</i> begins with a "/" then the URL specified is calculated relative to the DOCROOT of
 the <code>ServletContext</code> for this JSP. If the path does not begin with a "/" then the URL specified is
 calculated relative to the URL of the request that was mapped to the calling JSP.
 </p>
 <p>
 It is only valid to call this method from a <code> Thread </code> executing within a
 <code> _jspService(...) </code> method of a JSP.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relativeUrlPath</code> - specifies the relative URL path to the target resource to be included</dd>
<dd><code>flush</code> - True if the JspWriter is to be flushed before the include, or false if not.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a></code> - if the page that was forwarded to throws a ServletException</dd>
<dd><code>java.io.IOException</code> - if an I/O error occurred while forwarding</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>JSP 2.0</dd>
</dl>
</li>
</ul>
<a name="handlePageException-java.lang.Exception-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handlePageException</h4>
<pre>public abstract&nbsp;void&nbsp;handlePageException(java.lang.Exception&nbsp;e)
                                  throws <a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a>,
                                         java.io.IOException</pre>
<div class="block"><p>
 This method is intended to process an unhandled 'page' level exception by forwarding the exception to the
 specified error page for this JSP. If forwarding is not possible (for example because the response has already
 been committed), an implementation dependent mechanism should be used to invoke the error page (e.g. "including"
 the error page instead).

 <p>
 If no error page is defined in the page, the exception should be rethrown so that the standard servlet error
 handling takes over.

 <p>
 A JSP implementation class shall typically clean up any local state prior to invoking this and will return
 immediately thereafter. It is illegal to generate any output to the client, or to modify any ServletResponse
 state after invoking this call.

 <p>
 This method is kept for backwards compatiblity reasons. Newly generated code should use
 PageContext.handlePageException(Throwable).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>e</code> - the exception to be handled</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a></code> - if an error occurs while invoking the error page</dd>
<dd><code>java.io.IOException</code> - if an I/O error occurred while invoking the error page</dd>
<dd><code>java.lang.NullPointerException</code> - if the exception is null</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/servlet/jsp/PageContext.html#handlePageException-java.lang.Throwable-"><code>handlePageException(Throwable)</code></a></dd>
</dl>
</li>
</ul>
<a name="handlePageException-java.lang.Throwable-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handlePageException</h4>
<pre>public abstract&nbsp;void&nbsp;handlePageException(java.lang.Throwable&nbsp;t)
                                  throws <a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a>,
                                         java.io.IOException</pre>
<div class="block"><p>
 This method is intended to process an unhandled 'page' level exception by forwarding the exception to the
 specified error page for this JSP. If forwarding is not possible (for example because the response has already
 been committed), an implementation dependent mechanism should be used to invoke the error page (e.g. "including"
 the error page instead).

 <p>
 If no error page is defined in the page, the exception should be rethrown so that the standard servlet error
 handling takes over.

 <p>
 This method is intended to process an unhandled "page" level exception by redirecting the exception to either the
 specified error page for this JSP, or if none was specified, to perform some implementation dependent action.

 <p>
 A JSP implementation class shall typically clean up any local state prior to invoking this and will return
 immediately thereafter. It is illegal to generate any output to the client, or to modify any ServletResponse
 state after invoking this call.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>t</code> - the throwable to be handled</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/servlet/ServletException.html" title="class in javax.servlet">ServletException</a></code> - if an error occurs while invoking the error page</dd>
<dd><code>java.io.IOException</code> - if an I/O error occurred while invoking the error page</dd>
<dd><code>java.lang.NullPointerException</code> - if the exception is null</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/servlet/jsp/PageContext.html#handlePageException-java.lang.Exception-"><code>handlePageException(Exception)</code></a></dd>
</dl>
</li>
</ul>
<a name="pushBody--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushBody</h4>
<pre>public&nbsp;<a href="../../../javax/servlet/jsp/tagext/BodyContent.html" title="class in javax.servlet.jsp.tagext">BodyContent</a>&nbsp;pushBody()</pre>
<div class="block">Return a new BodyContent object, save the current "out" JspWriter, and update the value of the "out" attribute in
 the page scope attribute namespace of the PageContext.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new BodyContent</dd>
</dl>
</li>
</ul>
<a name="getErrorData--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getErrorData</h4>
<pre>public&nbsp;<a href="../../../javax/servlet/jsp/ErrorData.html" title="class in javax.servlet.jsp">ErrorData</a>&nbsp;getErrorData()</pre>
<div class="block">Provides convenient access to error information.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an ErrorData instance containing information about the error, as obtained from the request attributes, as
         per the Servlet specification. If this is not an error page (that is, if the isErrorPage attribute of the
         page directive is not set to "true"), the information is meaningless.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>JSP 2.0</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/jsp/JspWriter.html" title="class in javax.servlet.jsp"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/servlet/jsp/SkipPageException.html" title="class in javax.servlet.jsp"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/servlet/jsp/PageContext.html" target="_top">Frames</a></li>
<li><a href="PageContext.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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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>
