blob: b664ac25bc521f02606bd8dffb85316c6a2291d2 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>HttpFilter</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="HttpFilter";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":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/Cookie.html" title="class in jakarta.servlet.http"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/servlet/http/HttpServlet.html" title="class 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/HttpFilter.html" target="_top">Frames</a></li>
<li><a href="HttpFilter.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 HttpFilter" class="title">Class HttpFilter</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../jakarta/servlet/GenericFilter.html" title="class in jakarta.servlet">jakarta.servlet.GenericFilter</a></li>
<li>
<ul class="inheritance">
<li>jakarta.servlet.http.HttpFilter</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/Filter.html" title="interface in jakarta.servlet">Filter</a>, <a href="../../../jakarta/servlet/FilterConfig.html" title="interface in jakarta.servlet">FilterConfig</a>, java.io.Serializable</dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">HttpFilter</span>
extends <a href="../../../jakarta/servlet/GenericFilter.html" title="class in jakarta.servlet">GenericFilter</a></pre>
<div class="block"><p>
Provides an abstract class to be subclassed to create an HTTP filter suitable for a Web site. A subclass of
<code>HttpFilter</code> should override
<a href="../../../jakarta/servlet/http/HttpFilter.html#doFilter-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-jakarta.servlet.FilterChain-"><code>doFilter(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.servlet.FilterChain)</code></a>.
</p>
<p>
Filters typically run on multithreaded servers, so be aware that a filter 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="simpleTagLabel">Since:</span></dt>
<dd>Servlet 4.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../serialized-form.html#jakarta.servlet.http.HttpFilter">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/HttpFilter.html#HttpFilter--">HttpFilter</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/HttpFilter.html#doFilter-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-jakarta.servlet.FilterChain-">doFilter</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;res,
<a href="../../../jakarta/servlet/FilterChain.html" title="interface in jakarta.servlet">FilterChain</a>&nbsp;chain)</code>
<div class="block">
The <code>doFilter</code> method of the Filter is called by the container each time a request/response pair is passed
through the chain due to a client request for a resource at the end of the chain.</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/http/HttpFilter.html#doFilter-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-jakarta.servlet.FilterChain-">doFilter</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,
<a href="../../../jakarta/servlet/FilterChain.html" title="interface in jakarta.servlet">FilterChain</a>&nbsp;chain)</code>
<div class="block">
The <code>doFilter</code> method of the Filter is called by the container each time a request/response pair is passed
through the chain due to a client request for a resource at the end of the chain.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.jakarta.servlet.GenericFilter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;jakarta.servlet.<a href="../../../jakarta/servlet/GenericFilter.html" title="class in jakarta.servlet">GenericFilter</a></h3>
<code><a href="../../../jakarta/servlet/GenericFilter.html#getFilterConfig--">getFilterConfig</a>, <a href="../../../jakarta/servlet/GenericFilter.html#getFilterName--">getFilterName</a>, <a href="../../../jakarta/servlet/GenericFilter.html#getInitParameter-java.lang.String-">getInitParameter</a>, <a href="../../../jakarta/servlet/GenericFilter.html#getInitParameterNames--">getInitParameterNames</a>, <a href="../../../jakarta/servlet/GenericFilter.html#getServletContext--">getServletContext</a>, <a href="../../../jakarta/servlet/GenericFilter.html#init--">init</a>, <a href="../../../jakarta/servlet/GenericFilter.html#init-jakarta.servlet.FilterConfig-">init</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>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.jakarta.servlet.Filter">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;jakarta.servlet.<a href="../../../jakarta/servlet/Filter.html" title="interface in jakarta.servlet">Filter</a></h3>
<code><a href="../../../jakarta/servlet/Filter.html#destroy--">destroy</a></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="HttpFilter--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HttpFilter</h4>
<pre>public&nbsp;HttpFilter()</pre>
<div class="block"><p>
Does nothing, because this is an abstract class.
</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="doFilter-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-jakarta.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doFilter</h4>
<pre>public&nbsp;void&nbsp;doFilter(<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,
<a href="../../../jakarta/servlet/FilterChain.html" title="interface in jakarta.servlet">FilterChain</a>&nbsp;chain)
throws java.io.IOException,
<a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></pre>
<div class="block"><p>
The <code>doFilter</code> method of the Filter is called by the container each time a request/response pair is passed
through the chain due to a client request for a resource at the end of the chain. The FilterChain passed in to this
method allows the Filter to pass on the request and response to the next entity in the chain. There's no need to
override this method.
</p>
<p>
The default implementation inspects the incoming <code>req</code> and <code>res</code> objects to determine if they are
instances of <a href="../../../jakarta/servlet/http/HttpServletRequest.html" title="interface in jakarta.servlet.http"><code>HttpServletRequest</code></a> and <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a>, respectively. If not, a
<a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet"><code>ServletException</code></a> is thrown. Otherwise, the protected
<a href="../../../jakarta/servlet/http/HttpFilter.html#doFilter-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-jakarta.servlet.FilterChain-"><code>doFilter(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.servlet.FilterChain)</code></a>
method is called.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - a <a href="../../../jakarta/servlet/ServletRequest.html" title="interface in jakarta.servlet"><code>ServletRequest</code></a> object that contains the request the client has made of the filter</dd>
<dd><code>res</code> - a <a href="../../../jakarta/servlet/ServletResponse.html" title="interface in jakarta.servlet"><code>ServletResponse</code></a> object that contains the response the filter sends to the client</dd>
<dd><code>chain</code> - the <code>FilterChain</code> for invoking the next filter or the resource</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error is detected when the filter 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 could not be handled or either parameter is not an instance of the
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>.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 4.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../jakarta/servlet/UnavailableException.html" title="class in jakarta.servlet"><code>UnavailableException</code></a></dd>
</dl>
</li>
</ul>
<a name="doFilter-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-jakarta.servlet.FilterChain-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>doFilter</h4>
<pre>protected&nbsp;void&nbsp;doFilter(<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;res,
<a href="../../../jakarta/servlet/FilterChain.html" title="interface in jakarta.servlet">FilterChain</a>&nbsp;chain)
throws java.io.IOException,
<a href="../../../jakarta/servlet/ServletException.html" title="class in jakarta.servlet">ServletException</a></pre>
<div class="block"><p>
The <code>doFilter</code> method of the Filter is called by the container each time a request/response pair is passed
through the chain due to a client request for a resource at the end of the chain. The FilterChain passed in to this
method allows the Filter to pass on the request and response to the next entity in the chain.
</p>
<p>
The default implementation simply calls <a href="../../../jakarta/servlet/FilterChain.html#doFilter-jakarta.servlet.ServletRequest-jakarta.servlet.ServletResponse-"><code>FilterChain.doFilter(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)</code></a>
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>req</code> - a <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 filter</dd>
<dd><code>res</code> - a <a href="../../../jakarta/servlet/http/HttpServletResponse.html" title="interface in jakarta.servlet.http"><code>HttpServletResponse</code></a> object that contains the response the filter sends to the client</dd>
<dd><code>chain</code> - the <code>FilterChain</code> for invoking the next filter or the resource</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if an input or output error is detected when the filter 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 could not be handled</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Servlet 4.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="../../../jakarta/servlet/http/Cookie.html" title="class in jakarta.servlet.http"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/servlet/http/HttpServlet.html" title="class 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/HttpFilter.html" target="_top">Frames</a></li>
<li><a href="HttpFilter.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>