<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>HttpServlet</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="HttpServlet";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance 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="../../../jakarta/servlet/http/HttpFilter.html" title="class in jakarta.servlet.http"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/servlet/http/HttpServletMapping.html" title="interface in jakarta.servlet.http"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/servlet/http/HttpServlet.html" target="_top">Frames</a></li>
<li><a href="HttpServlet.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><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>Field&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">jakarta.servlet.http</div>
<h2 title="Class HttpServlet" class="title">Class HttpServlet</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../jakarta/servlet/GenericServlet.html" title="class in jakarta.servlet">jakarta.servlet.GenericServlet</a></li>
<li>
<ul class="inheritance">
<li>jakarta.servlet.http.HttpServlet</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../jakarta/servlet/Servlet.html" title="interface in jakarta.servlet">Servlet</a>, <a href="../../../jakarta/servlet/ServletConfig.html" title="interface in jakarta.servlet">ServletConfig</a>, java.io.Serializable</dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">HttpServlet</span>
extends <a href="../../../jakarta/servlet/GenericServlet.html" title="class in jakarta.servlet">GenericServlet</a></pre>
<div class="block">Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of
 <code>HttpServlet</code> must override at least one method, usually one of these:

 <ul>
 <li><code>doGet</code>, if the servlet supports HTTP GET requests
 <li><code>doPost</code>, for HTTP POST requests
 <li><code>doPut</code>, for HTTP PUT requests
 <li><code>doDelete</code>, for HTTP DELETE requests
 <li><code>init</code> and <code>destroy</code>, to manage resources that are held for the life of the servlet
 <li><code>getServletInfo</code>, which the servlet uses to provide information about itself
 </ul>

 <p>
 There's almost no reason to override the <code>service</code> method. <code>service</code> handles standard HTTP
 requests by dispatching them to the handler methods for each HTTP request type (the <code>do</code><i>XXX</i> methods
 listed above).

 <p>
 Likewise, there's almost no reason to override the <code>doOptions</code> and <code>doTrace</code> methods.
 
 <p>
 Servlets typically run on multithreaded servers, so be aware that a servlet must handle concurrent requests and be
 careful to synchronize access to shared resources. Shared resources include in-memory data such as instance or class
 variables and external objects such as files, database connections, and network connections. See the
 <a href="https://docs.oracle.com/javase/tutorial/essential/concurrency/"> Java Tutorial on Multithreaded
 Programming</a> for more information on handling multiple threads in a Java program.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../serialized-form.html#jakarta.servlet.http.HttpServlet">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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="../../../jakarta/servlet/http/HttpServlet.html#HttpServlet--">HttpServlet</a></span>()</code>
<div class="block">Does nothing, because this is an abstract class.</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="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>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doDelete-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doDelete</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
        <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a DELETE request.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doGet-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doGet</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
     <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a GET request.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doHead-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doHead</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
      <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">
 Receives an HTTP HEAD request from the protected <code>service</code> method and handles the request.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doOptions-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doOptions</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
         <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a OPTIONS request.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doPost-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doPost</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
      <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a POST request.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doPut-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doPut</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
     <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a PUT request.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#doTrace-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">doTrace</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
       <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a TRACE request.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#getLastModified-jakarta.servlet.http.HttpServletRequest-">getLastModified</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req)</code>
<div class="block">Returns the time the <code>HttpServletRequest</code> object was last modified, in milliseconds since midnight January
 1, 1970 GMT.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#service-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">service</a></span>(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
       <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)</code>
<div class="block">Receives standard HTTP requests from the public <code>service</code> method and dispatches them to the
 <code>do</code><i>XXX</i> methods defined in this class.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/servlet/http/HttpServlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">service</a></span>(<a href="../../../jakarta/servlet/ServletRequest.html" title="interface in jakarta.servlet">ServletRequest</a>&nbsp;req,
       <a href="../../../jakarta/servlet/ServletResponse.html" title="interface in jakarta.servlet">ServletResponse</a>&nbsp;res)</code>
<div class="block">Dispatches client requests to the protected <code>service</code> method.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.jakarta.servlet.GenericServlet">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;jakarta.servlet.<a href="../../../jakarta/servlet/GenericServlet.html" title="class in jakarta.servlet">GenericServlet</a></h3>
<code><a href="../../../jakarta/servlet/GenericServlet.html#destroy--">destroy</a>, <a href="../../../jakarta/servlet/GenericServlet.html#getInitParameter-java.lang.String-">getInitParameter</a>, <a href="../../../jakarta/servlet/GenericServlet.html#getInitParameterNames--">getInitParameterNames</a>, <a href="../../../jakarta/servlet/GenericServlet.html#getServletConfig--">getServletConfig</a>, <a href="../../../jakarta/servlet/GenericServlet.html#getServletContext--">getServletContext</a>, <a href="../../../jakarta/servlet/GenericServlet.html#getServletInfo--">getServletInfo</a>, <a href="../../../jakarta/servlet/GenericServlet.html#getServletName--">getServletName</a>, <a href="../../../jakarta/servlet/GenericServlet.html#init--">init</a>, <a href="../../../jakarta/servlet/GenericServlet.html#init-jakarta.servlet.ServletConfig-">init</a>, <a href="../../../jakarta/servlet/GenericServlet.html#log-java.lang.String-">log</a>, <a href="../../../jakarta/servlet/GenericServlet.html#log-java.lang.String-java.lang.Throwable-">log</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="HttpServlet--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HttpServlet</h4>
<pre>public&nbsp;HttpServlet()</pre>
<div class="block">Does nothing, because this is an abstract class.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="doGet-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doGet</h4>
<pre>protected&nbsp;void&nbsp;doGet(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                     <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
              throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                     java.io.IOException</pre>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a GET request.

 <p>
 Overriding this method to support a GET request also automatically supports an HTTP HEAD request. A HEAD request is a
 GET request that returns no body in the response, only the request header fields.

 <p>
 When overriding this method, read the request data, write the response headers, get the response's writer or output
 stream object, and finally, write the response data. It's best to include content type and encoding. When using a
 <code>PrintWriter</code> object to return the response, set the content type before accessing the
 <code>PrintWriter</code> object.

 <p>
 The servlet container must write the headers before committing the response, because in HTTP the headers must be sent
 before the response body.

 <p>
 Where possible, set the Content-Length header (with the <a href="../../../jakarta/servlet/ServletResponse.html#setContentLength-int-"><code>ServletResponse.setContentLength(int)</code></a>
 method), to allow the servlet container to use a persistent connection to return its response to the client,
 improving performance. The content length is automatically set if the entire response fits inside the response
 buffer.

 <p>
 When using HTTP 1.1 chunked encoding (which means that the response has a Transfer-Encoding header), do not set the
 Content-Length header.

 <p>
 The GET method should be safe, that is, without any side effects for which users are held responsible. For example,
 most form queries have no side effects. If a client request is intended to change stored data, the request should use
 some other HTTP method.

 <p>
 The GET method should also be idempotent, meaning that it can be safely repeated. Sometimes making a method safe also
 makes it idempotent. For example, repeating queries is both safe and idempotent, but buying a product online or
 modifying data is neither safe nor idempotent.

 <p>
 If the request is incorrectly formatted, <code>doGet</code> returns an HTTP "Bad Request" message.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - an <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client has made of the servlet</dd>
<dd><code>resp</code> - an <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet sends to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error is detected when the servlet handles the GET request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the GET could not be handled</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../jakarta/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>ServletResponse.setContentType(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="getLastModified-jakarta.servlet.http.HttpServletRequest-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLastModified</h4>
<pre>protected&nbsp;long&nbsp;getLastModified(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req)</pre>
<div class="block">Returns the time the <code>HttpServletRequest</code> object was last modified, in milliseconds since midnight January
 1, 1970 GMT. If the time is unknown, this method returns a negative number (the default).

 <p>
 Servlets that support HTTP GET requests and can quickly determine their last modification time should override this
 method. This makes browser and proxy caches work more effectively, reducing the load on server and network resources.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <code>HttpServletRequest</code> object that is sent to the servlet</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>long</code> integer specifying the time the <code>HttpServletRequest</code> object was last modified,
 in milliseconds since midnight, January 1, 1970 GMT, or -1 if the time is not known</dd>
</dl>
</li>
</ul>
<a name="doHead-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doHead</h4>
<pre>protected&nbsp;void&nbsp;doHead(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                      <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
               throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                      java.io.IOException</pre>
<div class="block"><p>
 Receives an HTTP HEAD request from the protected <code>service</code> method and handles the request. The client
 sends a HEAD request when it wants to see only the headers of a response, such as Content-Type or Content-Length. The
 HTTP HEAD method counts the output bytes in the response to set the Content-Length header accurately.

 <p>
 If you override this method, you can avoid computing the response body and just set the response headers directly to
 improve performance. Make sure that the <code>doHead</code> method you write is both safe and idempotent (that is,
 protects itself from being called multiple times for one HTTP HEAD request).

 <p>
 If the HTTP HEAD request is incorrectly formatted, <code>doHead</code> returns an HTTP "Bad Request" message.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the request object that is passed to the servlet</dd>
<dd><code>resp</code> - the response object that the servlet uses to return the headers to the clien</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the HEAD could not be handled</dd>
</dl>
</li>
</ul>
<a name="doPost-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doPost</h4>
<pre>protected&nbsp;void&nbsp;doPost(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                      <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
               throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                      java.io.IOException</pre>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a POST request.

 The HTTP POST method allows the client to send data of unlimited length to the Web server a single time and is useful
 when posting information such as credit card numbers.

 <p>
 When overriding this method, read the request data, write the response headers, get the response's writer or output
 stream object, and finally, write the response data. It's best to include content type and encoding. When using a
 <code>PrintWriter</code> object to return the response, set the content type before accessing the
 <code>PrintWriter</code> object.

 <p>
 The servlet container must write the headers before committing the response, because in HTTP the headers must be sent
 before the response body.

 <p>
 Where possible, set the Content-Length header (with the <a href="../../../jakarta/servlet/ServletResponse.html#setContentLength-int-"><code>ServletResponse.setContentLength(int)</code></a>
 method), to allow the servlet container to use a persistent connection to return its response to the client,
 improving performance. The content length is automatically set if the entire response fits inside the response
 buffer.

 <p>
 When using HTTP 1.1 chunked encoding (which means that the response has a Transfer-Encoding header), do not set the
 Content-Length header.

 <p>
 This method does not need to be either safe or idempotent. Operations requested through POST can have side effects
 for which the user can be held accountable, for example, updating stored data or buying items online.

 <p>
 If the HTTP POST request is incorrectly formatted, <code>doPost</code> returns an HTTP "Bad Request" message.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - an <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client has made of the servlet</dd>
<dd><code>resp</code> - an <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet sends to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error is detected when the servlet handles the request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the POST could not be handled</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../jakarta/servlet/ServletOutputStream.html" title="class in jakarta.servlet"><code>ServletOutputStream</code></a>, 
<a href="../../../jakarta/servlet/ServletResponse.html#setContentType-java.lang.String-"><code>ServletResponse.setContentType(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="doPut-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doPut</h4>
<pre>protected&nbsp;void&nbsp;doPut(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                     <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
              throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                     java.io.IOException</pre>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a PUT request.

 The PUT operation allows a client to place a file on the server and is similar to sending a file by FTP.

 <p>
 When overriding this method, leave intact any content headers sent with the request (including Content-Length,
 Content-Type, Content-Transfer-Encoding, Content-Encoding, Content-Base, Content-Language, Content-Location,
 Content-MD5, and Content-Range). If your method cannot handle a content header, it must issue an error message (HTTP
 501 - Not Implemented) and discard the request. For more information on HTTP 1.1, see RFC 2616
 <a href="http://www.ietf.org/rfc/rfc2616.txt"></a>.

 <p>
 This method does not need to be either safe or idempotent. Operations that <code>doPut</code> performs can have side
 effects for which the user can be held accountable. When using this method, it may be useful to save a copy of the
 affected URL in temporary storage.

 <p>
 If the HTTP PUT request is incorrectly formatted, <code>doPut</code> returns an HTTP "Bad Request" message.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client made of the servlet</dd>
<dd><code>resp</code> - the <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet returns to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs while the servlet is handling the PUT request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the PUT cannot be handled</dd>
</dl>
</li>
</ul>
<a name="doDelete-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doDelete</h4>
<pre>protected&nbsp;void&nbsp;doDelete(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                        <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
                 throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                        java.io.IOException</pre>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a DELETE request.

 The DELETE operation allows a client to remove a document or Web page from the server.
 
 <p>
 This method does not need to be either safe or idempotent. Operations requested through DELETE can have side effects
 for which users can be held accountable. When using this method, it may be useful to save a copy of the affected URL
 in temporary storage.

 <p>
 If the HTTP DELETE request is incorrectly formatted, <code>doDelete</code> returns an HTTP "Bad Request" message.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client made of the servlet</dd>
<dd><code>resp</code> - the <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet returns to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs while the servlet is handling the DELETE request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the DELETE cannot be handled</dd>
</dl>
</li>
</ul>
<a name="doOptions-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doOptions</h4>
<pre>protected&nbsp;void&nbsp;doOptions(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                         <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
                  throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                         java.io.IOException</pre>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a OPTIONS request.

 The OPTIONS request determines which HTTP methods the server supports and returns an appropriate header. For example,
 if a servlet overrides <code>doGet</code>, this method returns the following header:

 <p>
 <code>Allow: GET, HEAD, TRACE, OPTIONS</code>

 <p>
 There's no need to override this method unless the servlet implements new HTTP methods, beyond those implemented by
 HTTP 1.1.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client made of the servlet</dd>
<dd><code>resp</code> - the <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet returns to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs while the servlet is handling the OPTIONS request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the OPTIONS cannot be handled</dd>
</dl>
</li>
</ul>
<a name="doTrace-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doTrace</h4>
<pre>protected&nbsp;void&nbsp;doTrace(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                       <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
                throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                       java.io.IOException</pre>
<div class="block">Called by the server (via the <code>service</code> method) to allow a servlet to handle a TRACE request.

 A TRACE returns the headers sent with the TRACE request to the client, so that they can be used in debugging. There's
 no need to override this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client made of the servlet</dd>
<dd><code>resp</code> - the <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet returns to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs while the servlet is handling the TRACE request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the request for the TRACE cannot be handled</dd>
</dl>
</li>
</ul>
<a name="service-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>service</h4>
<pre>protected&nbsp;void&nbsp;service(<a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http">HttpServletRequest</a>&nbsp;req,
                       <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http">HttpServletResponse</a>&nbsp;resp)
                throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                       java.io.IOException</pre>
<div class="block">Receives standard HTTP requests from the public <code>service</code> method and dispatches them to the
 <code>do</code><i>XXX</i> methods defined in this class. This method is an HTTP-specific version of the
 <a href="../../../jakarta/servlet/Servlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)</code></a> method. There's no need to override this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client made of the servlet</dd>
<dd><code>resp</code> - the <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet returns to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs while the servlet is handling the HTTP request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the HTTP request cannot be handled</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../jakarta/servlet/Servlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)</code></a></dd>
</dl>
</li>
</ul>
<a name="service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>service</h4>
<pre>public&nbsp;void&nbsp;service(<a href="../../../jakarta/servlet/ServletRequest.html" title="interface in jakarta.servlet">ServletRequest</a>&nbsp;req,
                    <a href="../../../jakarta/servlet/ServletResponse.html" title="interface in jakarta.servlet">ServletResponse</a>&nbsp;res)
             throws <a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a>,
                    java.io.IOException</pre>
<div class="block">Dispatches client requests to the protected <code>service</code> method. There's no need to override this method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../jakarta/servlet/Servlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">service</a></code>&nbsp;in interface&nbsp;<code><a href="../../../jakarta/servlet/Servlet.html" title="interface in jakarta.servlet">Servlet</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../jakarta/servlet/GenericServlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-">service</a></code>&nbsp;in class&nbsp;<code><a href="../../../jakarta/servlet/GenericServlet.html" title="class in jakarta.servlet">GenericServlet</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - the <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> object that contains the request the client made of the servlet</dd>
<dd><code>res</code> - the <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the servlet returns to the client</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error occurs while the servlet is handling the HTTP request</dd>
<dd><code><a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></code> - if the HTTP request cannot be handled or if either parameter is not an instance of its
 respective <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> or <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> counterparts.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../jakarta/servlet/Servlet.html#service-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/servlet/http/HttpFilter.html" title="class in jakarta.servlet.http"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/servlet/http/HttpServletMapping.html" title="interface in jakarta.servlet.http"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/servlet/http/HttpServlet.html" target="_top">Frames</a></li>
<li><a href="HttpServlet.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><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>Field&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>
