Package org.eclipse.jetty.server
Class Response
- java.lang.Object
-
- org.eclipse.jetty.server.Response
-
- All Implemented Interfaces:
javax.servlet.http.HttpServletResponse,javax.servlet.ServletResponse
public class Response extends java.lang.Object implements javax.servlet.http.HttpServletResponseResponseprovides the implementation forHttpServletResponse.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classResponse.EncodingFromstatic classResponse.OutputType
-
Field Summary
Fields Modifier and Type Field Description private static HttpField__EXPIRES_01JAN1970private static java.util.EnumSet<Response.EncodingFrom>__explicitCharsetprivate static java.util.EnumSet<Response.EncodingFrom>__localeOverrideprivate static int__MIN_BUFFER_SIZEprivate HttpChannel_channelprivate java.lang.String_characterEncodingprivate long_contentLengthprivate java.lang.String_contentTypeprivate Response.EncodingFrom_encodingFromprivate AtomicBiInteger_errorSentAndIncludesprivate HttpFields_fieldsprivate java.util.Locale_localeprivate MimeTypes.Type_mimeTypeprivate HttpOutput_outprivate Response.OutputType_outputTypeprivate java.lang.String_reasonprivate int_statusprivate java.util.function.Supplier<HttpFields>_trailersprivate ResponseWriter_writerprivate static LoggerLOGstatic intNO_CONTENT_LENGTHstatic java.lang.StringSET_INCLUDE_HEADER_PREFIXIf a header name starts with this string, the header (stripped of the prefix) can be set during include using onlysetHeader(String, String)oraddHeader(String, String).static intUSE_KNOWN_CONTENT_LENGTH-
Fields inherited from interface javax.servlet.http.HttpServletResponse
SC_ACCEPTED, SC_BAD_GATEWAY, SC_BAD_REQUEST, SC_CONFLICT, SC_CONTINUE, SC_CREATED, SC_EXPECTATION_FAILED, SC_FORBIDDEN, SC_FOUND, SC_GATEWAY_TIMEOUT, SC_GONE, SC_HTTP_VERSION_NOT_SUPPORTED, SC_INTERNAL_SERVER_ERROR, SC_LENGTH_REQUIRED, SC_METHOD_NOT_ALLOWED, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_MULTIPLE_CHOICES, SC_NO_CONTENT, SC_NON_AUTHORITATIVE_INFORMATION, SC_NOT_ACCEPTABLE, SC_NOT_FOUND, SC_NOT_IMPLEMENTED, SC_NOT_MODIFIED, SC_OK, SC_PARTIAL_CONTENT, SC_PAYMENT_REQUIRED, SC_PRECONDITION_FAILED, SC_PROXY_AUTHENTICATION_REQUIRED, SC_REQUEST_ENTITY_TOO_LARGE, SC_REQUEST_TIMEOUT, SC_REQUEST_URI_TOO_LONG, SC_REQUESTED_RANGE_NOT_SATISFIABLE, SC_RESET_CONTENT, SC_SEE_OTHER, SC_SERVICE_UNAVAILABLE, SC_SWITCHING_PROTOCOLS, SC_TEMPORARY_REDIRECT, SC_UNAUTHORIZED, SC_UNSUPPORTED_MEDIA_TYPE, SC_USE_PROXY
-
-
Constructor Summary
Constructors Constructor Description Response(HttpChannel channel, HttpOutput out)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddCookie(javax.servlet.http.Cookie cookie)voidaddCookie(HttpCookie cookie)voidaddDateHeader(java.lang.String name, long date)voidaddHeader(java.lang.String name, java.lang.String value)voidaddIntHeader(java.lang.String name, int value)private HttpCookiecheckSameSite(HttpCookie cookie)Check that samesite is set on the cookie.voidcloseOutput()voidcompleteOutput()Deprecated.UsecloseOutput()voidcompleteOutput(Callback callback)booleancontainsHeader(java.lang.String name)java.lang.StringencodeRedirectUrl(java.lang.String url)Deprecated.java.lang.StringencodeRedirectURL(java.lang.String url)java.lang.StringencodeUrl(java.lang.String url)Deprecated.java.lang.StringencodeURL(java.lang.String url)voiderrorClose()voidflushBuffer()intgetBufferSize()java.lang.StringgetCharacterEncoding()MetaData.ResponsegetCommittedMetaData()Get the MetaData.Response committed for this response.longgetContentCount()longgetContentLength()java.lang.StringgetContentType()java.lang.StringgetHeader(java.lang.String name)java.util.Collection<java.lang.String>getHeaderNames()java.util.Collection<java.lang.String>getHeaders(java.lang.String name)HttpChannelgetHttpChannel()HttpFieldsgetHttpFields()HttpOutputgetHttpOutput()java.util.LocalegetLocale()longgetLongContentLength()javax.servlet.ServletOutputStreamgetOutputStream()java.lang.StringgetReason()intgetStatus()java.util.function.Supplier<HttpFields>getTrailers()java.io.PrintWritergetWriter()voidinclude()voidincluded()booleanisAllContentWritten(long written)booleanisCommitted()booleanisContentComplete(long written)booleanisIncluding()private booleanisMutable()booleanisStreaming()booleanisWriting()booleanisWritingOrStreaming()protected MetaData.ResponsenewResponseMetaData()static voidputHeaders(javax.servlet.http.HttpServletResponse response, HttpContent content, long contentLength, boolean etag)voidputHeaders(HttpContent content, long contentLength, boolean etag)protected voidrecycle()voidreopen()voidreplaceCookie(HttpCookie cookie)Replace (or add) a cookie.voidreset()voidresetBuffer()voidresetContent()voidresetForForward()voidsendError(int sc)voidsendError(int code, java.lang.String message)Send an error response.voidsendProcessing()Sends a 102-Processing response.voidsendRedirect(int code, java.lang.String location)Sends a response with one of the 300 series redirection codes.voidsendRedirect(int code, java.lang.String location, boolean consumeAll)Sends a response with a given redirection code.voidsendRedirect(java.lang.String location)voidsendRedirect(java.lang.String location, boolean consumeAll)Sends a response with a HTTP version appropriate 30x redirection.voidsetBufferSize(int size)voidsetCharacterEncoding(java.lang.String encoding)private voidsetCharacterEncoding(java.lang.String encoding, Response.EncodingFrom from)voidsetContentLength(int len)voidsetContentLengthLong(long length)voidsetContentType(java.lang.String contentType)voidsetDateHeader(java.lang.String name, long date)private voidsetErrorSent(boolean errorSent)voidsetHeader(java.lang.String name, java.lang.String value)voidsetHeader(HttpHeader name, java.lang.String value)voidsetIntHeader(java.lang.String name, int value)voidsetLocale(java.util.Locale locale)voidsetLongContentLength(long len)voidsetStatus(int sc)voidsetStatus(int sc, java.lang.String sm)Deprecated.voidsetStatusWithReason(int sc, java.lang.String sm)voidsetTrailers(java.util.function.Supplier<HttpFields> trailers)java.lang.StringtoString()static javax.servlet.http.HttpServletResponseunwrap(javax.servlet.ServletResponse servletResponse)
-
-
-
Field Detail
-
LOG
private static final Logger LOG
-
__MIN_BUFFER_SIZE
private static final int __MIN_BUFFER_SIZE
- See Also:
- Constant Field Values
-
__EXPIRES_01JAN1970
private static final HttpField __EXPIRES_01JAN1970
-
NO_CONTENT_LENGTH
public static final int NO_CONTENT_LENGTH
- See Also:
- Constant Field Values
-
USE_KNOWN_CONTENT_LENGTH
public static final int USE_KNOWN_CONTENT_LENGTH
- See Also:
- Constant Field Values
-
SET_INCLUDE_HEADER_PREFIX
public static final java.lang.String SET_INCLUDE_HEADER_PREFIX
If a header name starts with this string, the header (stripped of the prefix) can be set during include using onlysetHeader(String, String)oraddHeader(String, String).- See Also:
- Constant Field Values
-
_channel
private final HttpChannel _channel
-
_fields
private final HttpFields _fields
-
_errorSentAndIncludes
private final AtomicBiInteger _errorSentAndIncludes
-
_out
private final HttpOutput _out
-
_status
private int _status
-
_reason
private java.lang.String _reason
-
_locale
private java.util.Locale _locale
-
_mimeType
private MimeTypes.Type _mimeType
-
_characterEncoding
private java.lang.String _characterEncoding
-
_encodingFrom
private Response.EncodingFrom _encodingFrom
-
_contentType
private java.lang.String _contentType
-
_outputType
private Response.OutputType _outputType
-
_writer
private ResponseWriter _writer
-
_contentLength
private long _contentLength
-
_trailers
private java.util.function.Supplier<HttpFields> _trailers
-
__localeOverride
private static final java.util.EnumSet<Response.EncodingFrom> __localeOverride
-
__explicitCharset
private static final java.util.EnumSet<Response.EncodingFrom> __explicitCharset
-
-
Constructor Detail
-
Response
public Response(HttpChannel channel, HttpOutput out)
-
-
Method Detail
-
getHttpChannel
public HttpChannel getHttpChannel()
-
recycle
protected void recycle()
-
getHttpOutput
public HttpOutput getHttpOutput()
-
reopen
public void reopen()
-
errorClose
public void errorClose()
-
isMutable
private boolean isMutable()
- Returns:
- true if the response is mutable, ie not errorSent and not included
-
setErrorSent
private void setErrorSent(boolean errorSent)
-
isIncluding
public boolean isIncluding()
-
include
public void include()
-
included
public void included()
-
addCookie
public void addCookie(HttpCookie cookie)
-
checkSameSite
private HttpCookie checkSameSite(HttpCookie cookie)
Check that samesite is set on the cookie. If not, use a context default value, if one has been set.- Parameters:
cookie- the cookie to check- Returns:
- either the original cookie, or a new one that has the samesit default set
-
replaceCookie
public void replaceCookie(HttpCookie cookie)
Replace (or add) a cookie. Using name, path and domain, look for a matching set-cookie header and replace it.- Parameters:
cookie- The cookie to add/replace
-
addCookie
public void addCookie(javax.servlet.http.Cookie cookie)
- Specified by:
addCookiein interfacejavax.servlet.http.HttpServletResponse
-
containsHeader
public boolean containsHeader(java.lang.String name)
- Specified by:
containsHeaderin interfacejavax.servlet.http.HttpServletResponse
-
encodeURL
public java.lang.String encodeURL(java.lang.String url)
- Specified by:
encodeURLin interfacejavax.servlet.http.HttpServletResponse
-
encodeRedirectURL
public java.lang.String encodeRedirectURL(java.lang.String url)
- Specified by:
encodeRedirectURLin interfacejavax.servlet.http.HttpServletResponse
-
encodeUrl
@Deprecated public java.lang.String encodeUrl(java.lang.String url)
Deprecated.- Specified by:
encodeUrlin interfacejavax.servlet.http.HttpServletResponse
-
encodeRedirectUrl
@Deprecated public java.lang.String encodeRedirectUrl(java.lang.String url)
Deprecated.- Specified by:
encodeRedirectUrlin interfacejavax.servlet.http.HttpServletResponse
-
sendError
public void sendError(int sc) throws java.io.IOException- Specified by:
sendErrorin interfacejavax.servlet.http.HttpServletResponse- Throws:
java.io.IOException
-
sendError
public void sendError(int code, java.lang.String message) throws java.io.IOExceptionSend an error response.In addition to the servlet standard handling, this method supports some additional codes:
- 102
- Send a partial PROCESSING response and allow additional responses
- -1
- Abort the HttpChannel and close the connection/stream
- Specified by:
sendErrorin interfacejavax.servlet.http.HttpServletResponse- Parameters:
code- The error codemessage- The message- Throws:
java.io.IOException- If an IO problem occurred sending the error response.
-
sendProcessing
public void sendProcessing() throws java.io.IOExceptionSends a 102-Processing response. If the connection is an HTTP connection, the version is 1.1 and the request has a Expect header starting with 102, then a 102 response is sent. This indicates that the request still be processed and real response can still be sent. This method is called by sendError if it is passed 102.- Throws:
java.io.IOException- if unable to send the 102 response- See Also:
HttpServletResponse.sendError(int)
-
sendRedirect
public void sendRedirect(int code, java.lang.String location) throws java.io.IOExceptionSends a response with one of the 300 series redirection codes.- Parameters:
code- the redirect status codelocation- the location to send inLocationheaders- Throws:
java.io.IOException- if unable to send the redirect
-
sendRedirect
public void sendRedirect(java.lang.String location, boolean consumeAll) throws java.io.IOExceptionSends a response with a HTTP version appropriate 30x redirection.- Parameters:
location- the location to send inLocationheadersconsumeAll- if True, consume any HTTP/1 request input before doing the redirection. If the input cannot be consumed without blocking, then add a `Connection: close` header to the response.- Throws:
java.io.IOException- if unable to send the redirect
-
sendRedirect
public void sendRedirect(int code, java.lang.String location, boolean consumeAll) throws java.io.IOExceptionSends a response with a given redirection code.- Parameters:
code- the redirect status codelocation- the location to send inLocationheadersconsumeAll- if True, consume any HTTP/1 request input before doing the redirection. If the input cannot be consumed without blocking, then add a `Connection: close` header to the response.- Throws:
java.io.IOException- if unable to send the redirect
-
sendRedirect
public void sendRedirect(java.lang.String location) throws java.io.IOException- Specified by:
sendRedirectin interfacejavax.servlet.http.HttpServletResponse- Throws:
java.io.IOException
-
setDateHeader
public void setDateHeader(java.lang.String name, long date)- Specified by:
setDateHeaderin interfacejavax.servlet.http.HttpServletResponse
-
addDateHeader
public void addDateHeader(java.lang.String name, long date)- Specified by:
addDateHeaderin interfacejavax.servlet.http.HttpServletResponse
-
setHeader
public void setHeader(HttpHeader name, java.lang.String value)
-
setHeader
public void setHeader(java.lang.String name, java.lang.String value)- Specified by:
setHeaderin interfacejavax.servlet.http.HttpServletResponse
-
getHeaderNames
public java.util.Collection<java.lang.String> getHeaderNames()
- Specified by:
getHeaderNamesin interfacejavax.servlet.http.HttpServletResponse
-
getHeader
public java.lang.String getHeader(java.lang.String name)
- Specified by:
getHeaderin interfacejavax.servlet.http.HttpServletResponse
-
getHeaders
public java.util.Collection<java.lang.String> getHeaders(java.lang.String name)
- Specified by:
getHeadersin interfacejavax.servlet.http.HttpServletResponse
-
addHeader
public void addHeader(java.lang.String name, java.lang.String value)- Specified by:
addHeaderin interfacejavax.servlet.http.HttpServletResponse
-
setIntHeader
public void setIntHeader(java.lang.String name, int value)- Specified by:
setIntHeaderin interfacejavax.servlet.http.HttpServletResponse
-
addIntHeader
public void addIntHeader(java.lang.String name, int value)- Specified by:
addIntHeaderin interfacejavax.servlet.http.HttpServletResponse
-
setStatus
public void setStatus(int sc)
- Specified by:
setStatusin interfacejavax.servlet.http.HttpServletResponse
-
setStatus
@Deprecated public void setStatus(int sc, java.lang.String sm)Deprecated.- Specified by:
setStatusin interfacejavax.servlet.http.HttpServletResponse
-
setStatusWithReason
public void setStatusWithReason(int sc, java.lang.String sm)
-
getCharacterEncoding
public java.lang.String getCharacterEncoding()
- Specified by:
getCharacterEncodingin interfacejavax.servlet.ServletResponse
-
getContentType
public java.lang.String getContentType()
- Specified by:
getContentTypein interfacejavax.servlet.ServletResponse
-
getOutputStream
public javax.servlet.ServletOutputStream getOutputStream() throws java.io.IOException- Specified by:
getOutputStreamin interfacejavax.servlet.ServletResponse- Throws:
java.io.IOException
-
isWriting
public boolean isWriting()
-
isStreaming
public boolean isStreaming()
-
isWritingOrStreaming
public boolean isWritingOrStreaming()
-
getWriter
public java.io.PrintWriter getWriter() throws java.io.IOException- Specified by:
getWriterin interfacejavax.servlet.ServletResponse- Throws:
java.io.IOException
-
setContentLength
public void setContentLength(int len)
- Specified by:
setContentLengthin interfacejavax.servlet.ServletResponse
-
getContentLength
public long getContentLength()
-
isAllContentWritten
public boolean isAllContentWritten(long written)
-
isContentComplete
public boolean isContentComplete(long written)
-
closeOutput
public void closeOutput() throws java.io.IOException- Throws:
java.io.IOException
-
completeOutput
@Deprecated public void completeOutput() throws java.io.IOExceptionDeprecated.UsecloseOutput()close the output- Throws:
java.io.IOException
-
completeOutput
public void completeOutput(Callback callback)
-
getLongContentLength
public long getLongContentLength()
-
setLongContentLength
public void setLongContentLength(long len)
-
setContentLengthLong
public void setContentLengthLong(long length)
- Specified by:
setContentLengthLongin interfacejavax.servlet.ServletResponse
-
setCharacterEncoding
public void setCharacterEncoding(java.lang.String encoding)
- Specified by:
setCharacterEncodingin interfacejavax.servlet.ServletResponse
-
setCharacterEncoding
private void setCharacterEncoding(java.lang.String encoding, Response.EncodingFrom from)
-
setContentType
public void setContentType(java.lang.String contentType)
- Specified by:
setContentTypein interfacejavax.servlet.ServletResponse
-
setBufferSize
public void setBufferSize(int size)
- Specified by:
setBufferSizein interfacejavax.servlet.ServletResponse
-
getBufferSize
public int getBufferSize()
- Specified by:
getBufferSizein interfacejavax.servlet.ServletResponse
-
flushBuffer
public void flushBuffer() throws java.io.IOException- Specified by:
flushBufferin interfacejavax.servlet.ServletResponse- Throws:
java.io.IOException
-
reset
public void reset()
- Specified by:
resetin interfacejavax.servlet.ServletResponse
-
resetContent
public void resetContent()
-
resetForForward
public void resetForForward()
-
resetBuffer
public void resetBuffer()
- Specified by:
resetBufferin interfacejavax.servlet.ServletResponse
-
setTrailers
public void setTrailers(java.util.function.Supplier<HttpFields> trailers)
-
getTrailers
public java.util.function.Supplier<HttpFields> getTrailers()
-
newResponseMetaData
protected MetaData.Response newResponseMetaData()
-
getCommittedMetaData
public MetaData.Response getCommittedMetaData()
Get the MetaData.Response committed for this response. This may differ from the meta data in this response for exceptional responses (eg 4xx and 5xx responses generated by the container) and the committedMetaData should be used for logging purposes.- Returns:
- The committed MetaData or a
newResponseMetaData()if not yet committed.
-
isCommitted
public boolean isCommitted()
- Specified by:
isCommittedin interfacejavax.servlet.ServletResponse
-
setLocale
public void setLocale(java.util.Locale locale)
- Specified by:
setLocalein interfacejavax.servlet.ServletResponse
-
getLocale
public java.util.Locale getLocale()
- Specified by:
getLocalein interfacejavax.servlet.ServletResponse
-
getStatus
public int getStatus()
- Specified by:
getStatusin interfacejavax.servlet.http.HttpServletResponse
-
getReason
public java.lang.String getReason()
-
getHttpFields
public HttpFields getHttpFields()
-
getContentCount
public long getContentCount()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
putHeaders
public void putHeaders(HttpContent content, long contentLength, boolean etag)
-
putHeaders
public static void putHeaders(javax.servlet.http.HttpServletResponse response, HttpContent content, long contentLength, boolean etag)
-
unwrap
public static javax.servlet.http.HttpServletResponse unwrap(javax.servlet.ServletResponse servletResponse)
-
-