<!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">
<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>
