<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.11) on Wed Jul 07 10:52:27 EDT 2021 -->
<title>ServletWebSocketRequest (Jetty :: Project 9.4.43.v20210629 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-07-07">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ServletWebSocketRequest (Jetty :: Project 9.4.43.v20210629 API)";
        }
    }
    catch(err) {
    }
//-->
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ServletWebSocketRequest.html">Use</a></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" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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>Method</li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.websocket.server</a></div>
<h2 title="Class ServletWebSocketRequest" class="title">Class ServletWebSocketRequest</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../servlet/ServletUpgradeRequest.html" title="class in org.eclipse.jetty.websocket.servlet">org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.websocket.server.ServletWebSocketRequest</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../api/UpgradeRequest.html" title="interface in org.eclipse.jetty.websocket.api">UpgradeRequest</a></code></dd>
</dl>
<hr>
<pre>@Deprecated
public class <span class="typeNameLabel">ServletWebSocketRequest</span>
extends <a href="../servlet/ServletUpgradeRequest.html" title="class in org.eclipse.jetty.websocket.servlet">ServletUpgradeRequest</a></pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use <a href="../servlet/ServletUpgradeRequest.html" title="class in org.eclipse.jetty.websocket.servlet"><code>ServletUpgradeRequest</code></a> instead</div>
</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(javax.servlet.http.HttpServletRequest)">ServletWebSocketRequest</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.websocket.servlet.<a href="../servlet/ServletUpgradeRequest.html" title="class in org.eclipse.jetty.websocket.servlet">ServletUpgradeRequest</a></h3>
<code><a href="../servlet/ServletUpgradeRequest.html#addExtensions(java.lang.String...)">addExtensions</a>, <a href="../servlet/ServletUpgradeRequest.html#addExtensions(org.eclipse.jetty.websocket.api.extensions.ExtensionConfig...)">addExtensions</a>, <a href="../servlet/ServletUpgradeRequest.html#clearHeaders()">clearHeaders</a>, <a href="../servlet/ServletUpgradeRequest.html#complete()">complete</a>, <a href="../servlet/ServletUpgradeRequest.html#getCertificates()">getCertificates</a>, <a href="../servlet/ServletUpgradeRequest.html#getCookies()">getCookies</a>, <a href="../servlet/ServletUpgradeRequest.html#getExtensions()">getExtensions</a>, <a href="../servlet/ServletUpgradeRequest.html#getHeader(java.lang.String)">getHeader</a>, <a href="../servlet/ServletUpgradeRequest.html#getHeaderInt(java.lang.String)">getHeaderInt</a>, <a href="../servlet/ServletUpgradeRequest.html#getHeaders()">getHeaders</a>, <a href="../servlet/ServletUpgradeRequest.html#getHeaders(java.lang.String)">getHeaders</a>, <a href="../servlet/ServletUpgradeRequest.html#getHost()">getHost</a>, <a href="../servlet/ServletUpgradeRequest.html#getHttpServletRequest()">getHttpServletRequest</a>, <a href="../servlet/ServletUpgradeRequest.html#getHttpVersion()">getHttpVersion</a>, <a href="../servlet/ServletUpgradeRequest.html#getLocalAddress()">getLocalAddress</a>, <a href="../servlet/ServletUpgradeRequest.html#getLocale()">getLocale</a>, <a href="../servlet/ServletUpgradeRequest.html#getLocales()">getLocales</a>, <a href="../servlet/ServletUpgradeRequest.html#getLocalHostName()">getLocalHostName</a>, <a href="../servlet/ServletUpgradeRequest.html#getLocalPort()">getLocalPort</a>, <a href="../servlet/ServletUpgradeRequest.html#getLocalSocketAddress()">getLocalSocketAddress</a>, <a href="../servlet/ServletUpgradeRequest.html#getMethod()">getMethod</a>, <a href="../servlet/ServletUpgradeRequest.html#getOrigin()">getOrigin</a>, <a href="../servlet/ServletUpgradeRequest.html#getParameterMap()">getParameterMap</a>, <a href="../servlet/ServletUpgradeRequest.html#getPrincipal()">getPrincipal</a>, <a href="../servlet/ServletUpgradeRequest.html#getProtocolVersion()">getProtocolVersion</a>, <a href="../servlet/ServletUpgradeRequest.html#getQueryString()">getQueryString</a>, <a href="../servlet/ServletUpgradeRequest.html#getRemoteAddress()">getRemoteAddress</a>, <a href="../servlet/ServletUpgradeRequest.html#getRemoteHostName()">getRemoteHostName</a>, <a href="../servlet/ServletUpgradeRequest.html#getRemotePort()">getRemotePort</a>, <a href="../servlet/ServletUpgradeRequest.html#getRemoteSocketAddress()">getRemoteSocketAddress</a>, <a href="../servlet/ServletUpgradeRequest.html#getRequestPath()">getRequestPath</a>, <a href="../servlet/ServletUpgradeRequest.html#getRequestURI()">getRequestURI</a>, <a href="../servlet/ServletUpgradeRequest.html#getServletAttribute(java.lang.String)">getServletAttribute</a>, <a href="../servlet/ServletUpgradeRequest.html#getServletAttributes()">getServletAttributes</a>, <a href="../servlet/ServletUpgradeRequest.html#getServletParameters()">getServletParameters</a>, <a href="../servlet/ServletUpgradeRequest.html#getSession()">getSession</a>, <a href="../servlet/ServletUpgradeRequest.html#getSubProtocols()">getSubProtocols</a>, <a href="../servlet/ServletUpgradeRequest.html#getUserPrincipal()">getUserPrincipal</a>, <a href="../servlet/ServletUpgradeRequest.html#hasSubProtocol(java.lang.String)">hasSubProtocol</a>, <a href="../servlet/ServletUpgradeRequest.html#isOrigin(java.lang.String)">isOrigin</a>, <a href="../servlet/ServletUpgradeRequest.html#isSecure()">isSecure</a>, <a href="../servlet/ServletUpgradeRequest.html#isUserInRole(java.lang.String)">isUserInRole</a>, <a href="../servlet/ServletUpgradeRequest.html#setCookies(java.util.List)">setCookies</a>, <a href="../servlet/ServletUpgradeRequest.html#setExtensions(java.util.List)">setExtensions</a>, <a href="../servlet/ServletUpgradeRequest.html#setHeader(java.lang.String,java.lang.String)">setHeader</a>, <a href="../servlet/ServletUpgradeRequest.html#setHeader(java.lang.String,java.util.List)">setHeader</a>, <a href="../servlet/ServletUpgradeRequest.html#setHeaders(java.util.Map)">setHeaders</a>, <a href="../servlet/ServletUpgradeRequest.html#setHttpVersion(java.lang.String)">setHttpVersion</a>, <a href="../servlet/ServletUpgradeRequest.html#setMethod(java.lang.String)">setMethod</a>, <a href="../servlet/ServletUpgradeRequest.html#setRequestURI(java.net.URI)">setRequestURI</a>, <a href="../servlet/ServletUpgradeRequest.html#setServletAttribute(java.lang.String,java.lang.Object)">setServletAttribute</a>, <a href="../servlet/ServletUpgradeRequest.html#setSession(java.lang.Object)">setSession</a>, <a href="../servlet/ServletUpgradeRequest.html#setSubProtocols(java.lang.String...)">setSubProtocols</a>, <a href="../servlet/ServletUpgradeRequest.html#setSubProtocols(java.util.List)">setSubProtocols</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="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>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(javax.servlet.http.HttpServletRequest)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ServletWebSocketRequest</h4>
<pre>public&nbsp;ServletWebSocketRequest&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request)
                        throws java.net.URISyntaxException</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.net.URISyntaxException</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ServletWebSocketRequest.html">Use</a></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" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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>Method</li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
