<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>JspPage</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>

<link rel="shortcut icon" href="/img/jakarta-favicon.ico">
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="JspPage";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/servlet/jsp/JspFactory.html" title="class in jakarta.servlet.jsp"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/servlet/jsp/JspTagException.html" title="class in jakarta.servlet.jsp"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/servlet/jsp/JspPage.html" target="_top">Frames</a></li>
<li><a href="JspPage.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.servlet.jsp</div>
<h2 title="Interface JspPage" class="title">Interface JspPage</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../jakarta/servlet/Servlet.html" title="interface in jakarta.servlet">Servlet</a></dd>
</dl>
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../../jakarta/servlet/jsp/HttpJspPage.html" title="interface in jakarta.servlet.jsp">HttpJspPage</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">JspPage</span>
extends <a href="../../../jakarta/servlet/Servlet.html" title="interface in jakarta.servlet">Servlet</a></pre>
<div class="block">The JspPage interface describes the generic interaction that a JSP Page Implementation class must satisfy; pages that
 use the HTTP protocol are described by the HttpJspPage interface.

 <p>
 <B>Two plus One Methods</B>
 <p>
 The interface defines a protocol with 3 methods; only two of them: jspInit() and jspDestroy() are part of this
 interface as the signature of the third method: _jspService() depends on the specific protocol used and cannot be
 expressed in a generic way in Java.
 <p>
 A class implementing this interface is responsible for invoking the above methods at the appropriate time based on
 the corresponding Servlet-based method invocations.
 <p>
 The jspInit() and jspDestroy() methods can be defined by a JSP author, but the _jspService() method is defined
 automatically by the JSP processor based on the contents of the JSP page.

 <p>
 <B>_jspService()</B>
 <p>
 The _jspService()method corresponds to the body of the JSP page. This method is defined automatically by the JSP
 container and should never be defined by the JSP page author.
 <p>
 If a superclass is specified using the extends attribute, that superclass may choose to perform some actions in its
 service() method before or after calling the _jspService() method. See using the extends attribute in the JSP_Engine
 chapter of the JSP specification.
 <p>
 The specific signature depends on the protocol supported by the JSP page.

 <pre>
 public void _jspService(<em>ServletRequestSubtype</em> request,
                             <em>ServletResponseSubtype</em> response)
        throws ServletException, IOException;
 </pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/jsp/JspPage.html#jspDestroy--">jspDestroy</a></span>()</code>
<div class="block">The jspDestroy() method is invoked when the JSP page is about to be destroyed.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/jsp/JspPage.html#jspInit--">jspInit</a></span>()</code>
<div class="block">The jspInit() method is invoked when the JSP page is initialized.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.jakarta.servlet.Servlet">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;jakarta.servlet.<a href="../../../jakarta/servlet/Servlet.html" title="interface in jakarta.servlet">Servlet</a></h3>
<code><a href="../../../jakarta/servlet/Servlet.html#destroy--">destroy</a>, <a href="../../../jakarta/servlet/Servlet.html#getServletConfig--">getServletConfig</a>, <a href="../../../jakarta/servlet/Servlet.html#getServletInfo--">getServletInfo</a>, <a href="../../../jakarta/servlet/Servlet.html#init-jakarta.servlet.ServletConfig-">init</a>, <a href="../../../jakarta/servlet/Servlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">service</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="jspInit--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jspInit</h4>
<pre>void&nbsp;jspInit()</pre>
<div class="block">The jspInit() method is invoked when the JSP page is initialized. It is the responsibility of the JSP
 implementation (and of the class mentioned by the extends attribute, if present) that at this point invocations
 to the getServletConfig() method will return the desired value.

 A JSP page can override this method by including a definition for it in a declaration element.

 A JSP page should redefine the init() method from Servlet.</div>
</li>
</ul>
<a name="jspDestroy--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>jspDestroy</h4>
<pre>void&nbsp;jspDestroy()</pre>
<div class="block">The jspDestroy() method is invoked when the JSP page is about to be destroyed.
 
 A JSP page can override this method by including a definition for it in a declaration element.

 A JSP page should redefine the destroy() method from Servlet.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/servlet/jsp/JspFactory.html" title="class in jakarta.servlet.jsp"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/servlet/jsp/JspTagException.html" title="class in jakarta.servlet.jsp"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/servlet/jsp/JspPage.html" target="_top">Frames</a></li>
<li><a href="JspPage.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
