public class TPHttpServletResponse
extends java.lang.Object
implements 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| 构造器和说明 |
|---|
TPHttpServletResponse(TPServletContext context,
TPHttpExchange exchange) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addCookie(javax.servlet.http.Cookie cookie)
Adds the specified cookie to the response.
|
void |
addDateHeader(java.lang.String name,
long date)
Adds a response header with the given name and
date-value.
|
void |
addHeader(java.lang.String name,
java.lang.String value)
Adds a response header with the given name and value.
|
void |
addIntHeader(java.lang.String name,
int value)
Adds a response header with the given name and
integer value.
|
boolean |
containsHeader(java.lang.String name)
Returns a boolean indicating whether the named response header
has already been set.
|
java.lang.String |
encodeRedirectUrl(java.lang.String url)
已过时。
As of version 2.1, use
encodeRedirectURL(String url) instead
|
java.lang.String |
encodeRedirectURL(java.lang.String url)
Encodes the specified URL for use in the
sendRedirect method or, if encoding is not needed,
returns the URL unchanged. |
java.lang.String |
encodeUrl(java.lang.String url)
已过时。
As of version 2.1, use encodeURL(String url) instead
|
java.lang.String |
encodeURL(java.lang.String url)
Encodes the specified URL by including the session ID,
or, if encoding is not needed, returns the URL unchanged.
|
void |
flushBuffer()
Forces any content in the buffer to be written to the client.
|
int |
getBufferSize()
Returns the actual buffer size used for the response.
|
java.lang.String |
getCharacterEncoding()
Returns the name of the character encoding (MIME charset)
used for the body sent in this response.
|
java.lang.String |
getContentType()
Returns the content type used for the MIME body
sent in this response.
|
java.lang.String |
getHeader(java.lang.String name)
Gets the value of the response header with the given name.
|
java.util.Collection<java.lang.String> |
getHeaderNames()
Gets the names of the headers of this response.
|
java.util.Collection<java.lang.String> |
getHeaders(java.lang.String name)
Gets the values of the response header with the given name.
|
java.util.Locale |
getLocale()
Returns the locale specified for this response
using the
setLocale(java.util.Locale) method. |
javax.servlet.ServletOutputStream |
getOutputStream()
Returns a
ServletOutputStream suitable for writing binary
data in the response. |
int |
getStatus()
Gets the current status code of this response.
|
java.io.PrintWriter |
getWriter()
Returns a
PrintWriter object that
can send character text to the client. |
boolean |
isCommitted()
Returns a boolean indicating if the response has been
committed.
|
void |
reset()
Clears any data that exists in the buffer as well as the status code,
headers.
|
void |
resetBuffer()
Clears the content of the underlying buffer in the response without
clearing headers or status code.
|
void |
sendError(int sc)
Sends an error response to the client using the specified status
code and clears the buffer.
|
void |
sendError(int sc,
java.lang.String msg)
Sends an error response to the client using the specified
status and clears the buffer.
|
void |
sendRedirect(java.lang.String location)
Sends a temporary redirect response to the client using the
specified redirect location URL and clears the buffer.
|
void |
setBufferSize(int size)
Sets the preferred buffer size for the body of the response.
|
void |
setCharacterEncoding(java.lang.String charset)
Sets the character encoding (MIME charset) of the response
being sent to the client, for example, to UTF-8.
|
void |
setContentLength(int len)
Sets the length of the content body in the response
In HTTP servlets, this method sets the HTTP Content-Length header.
|
void |
setContentLengthLong(long len)
Sets the length of the content body in the response
In HTTP servlets, this method sets the HTTP Content-Length header.
|
void |
setContentType(java.lang.String type)
Sets the content type of the response being sent to
the client, if the response has not been committed yet.
|
void |
setDateHeader(java.lang.String name,
long date)
Sets a response header with the given name and
date-value.
|
void |
setHeader(java.lang.String name,
java.lang.String value)
Sets a response header with the given name and value.
|
void |
setIntHeader(java.lang.String name,
int value)
Sets a response header with the given name and
integer value.
|
void |
setLocale(java.util.Locale loc)
Sets the locale of the response, if the response has not been
committed yet.
|
void |
setStatus(int sc)
Sets the status code for this response.
|
void |
setStatus(int sc,
java.lang.String sm)
已过时。
As of version 2.1, due to ambiguous meaning of the
message parameter. To set a status code
use
setStatus(int), to send an error with a description
use sendError(int, String).
Sets the status code and message for this response. |
cn.imaq.autumn.http.protocol.AutumnHttpResponse |
toAutumnHttpResponse() |
public TPHttpServletResponse(TPServletContext context, TPHttpExchange exchange)
public cn.imaq.autumn.http.protocol.AutumnHttpResponse toAutumnHttpResponse()
public void addCookie(javax.servlet.http.Cookie cookie)
addCookie 在接口中 javax.servlet.http.HttpServletResponsecookie - the Cookie to return to the clientpublic boolean containsHeader(java.lang.String name)
containsHeader 在接口中 javax.servlet.http.HttpServletResponsename - the header nametrue if the named response header
has already been set;
false otherwisepublic java.lang.String encodeURL(java.lang.String url)
For robust session tracking, all URLs emitted by a servlet should be run through this method. Otherwise, URL rewriting cannot be used with browsers which do not support cookies.
If the URL is relative, it is always relative to the current HttpServletRequest.
encodeURL 在接口中 javax.servlet.http.HttpServletResponseurl - the url to be encoded.java.lang.IllegalArgumentException - if the url is not validpublic java.lang.String encodeRedirectURL(java.lang.String url)
sendRedirect method or, if encoding is not needed,
returns the URL unchanged. The implementation of this method
includes the logic to determine whether the session ID
needs to be encoded in the URL. For example, if the browser supports
cookies, or session tracking is turned off, URL encoding is
unnecessary. Because the rules for making this determination can
differ from those used to decide whether to
encode a normal link, this method is separated from the
encodeURL method.
All URLs sent to the HttpServletResponse.sendRedirect
method should be run through this method. Otherwise, URL
rewriting cannot be used with browsers which do not support
cookies.
If the URL is relative, it is always relative to the current HttpServletRequest.
encodeRedirectURL 在接口中 javax.servlet.http.HttpServletResponseurl - the url to be encoded.java.lang.IllegalArgumentException - if the url is not validsendRedirect(java.lang.String),
encodeUrl(java.lang.String)public java.lang.String encodeUrl(java.lang.String url)
encodeUrl 在接口中 javax.servlet.http.HttpServletResponseurl - the url to be encoded.java.lang.IllegalArgumentException - if the url is not validpublic java.lang.String encodeRedirectUrl(java.lang.String url)
encodeRedirectUrl 在接口中 javax.servlet.http.HttpServletResponseurl - the url to be encoded.java.lang.IllegalArgumentException - if the url is not validpublic void sendError(int sc,
java.lang.String msg)
throws java.io.IOException
Sends an error response to the client using the specified status and clears the buffer. The server defaults to creating the response to look like an HTML-formatted server error page containing the specified message, setting the content type to "text/html". The caller is not responsible for escaping or re-encoding the message to ensure it is safe with respect to the current response encoding and content type. This aspect of safety is the responsibility of the container, as it is generating the error page containing the message. The server will preserve cookies and may clear or update any headers needed to serve the error page as a valid response.
If an error-page declaration has been made for the web application corresponding to the status code passed in, it will be served back in preference to the suggested msg parameter and the msg parameter will be ignored.
If the response has already been committed, this method throws an IllegalStateException. After using this method, the response should be considered to be committed and should not be written to.
sendError 在接口中 javax.servlet.http.HttpServletResponsesc - the error status codemsg - the descriptive messagejava.io.IOException - If an input or output exception occursjava.lang.IllegalStateException - If the response was committedpublic void sendError(int sc)
throws java.io.IOException
The server will preserve cookies and may clear or update any headers needed to serve the error page as a valid response.
If an error-page declaration has been made for the web application corresponding to the status code passed in, it will be served back the error page
If the response has already been committed, this method throws an IllegalStateException. After using this method, the response should be considered to be committed and should not be written to.
sendError 在接口中 javax.servlet.http.HttpServletResponsesc - the error status codejava.io.IOException - If an input or output exception occursjava.lang.IllegalStateException - If the response was committed
before this method callpublic void sendRedirect(java.lang.String location)
throws java.io.IOException
HttpServletResponse.SC_FOUND 302 (Found).
This method can accept relative URLs;the servlet container must convert
the relative URL to an absolute URL
before sending the response to the client. If the location is relative
without a leading '/' the container interprets it as relative to
the current request URI. If the location is relative with a leading
'/' the container interprets it as relative to the servlet container root.
If the location is relative with two leading '/' the container interprets
it as a network-path reference (see
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, section 4.2
"Relative Reference").
If the response has already been committed, this method throws an IllegalStateException. After using this method, the response should be considered to be committed and should not be written to.
sendRedirect 在接口中 javax.servlet.http.HttpServletResponselocation - the redirect location URLjava.io.IOException - If an input or output exception occursjava.lang.IllegalStateException - If the response was committed or
if a partial URL is given and cannot be converted into a valid URLpublic void setDateHeader(java.lang.String name,
long date)
containsHeader method can be used to test for the
presence of a header before setting its value.setDateHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the header to setdate - the assigned date valuecontainsHeader(java.lang.String),
addDateHeader(java.lang.String, long)public void addDateHeader(java.lang.String name,
long date)
addDateHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the header to setdate - the additional date valuesetDateHeader(java.lang.String, long)public void setHeader(java.lang.String name,
java.lang.String value)
containsHeader method can be
used to test for the presence of a header before setting its
value.setHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the headervalue - the header value If it contains octet string,
it should be encoded according to RFC 2047
(http://www.ietf.org/rfc/rfc2047.txt)containsHeader(java.lang.String),
addHeader(java.lang.String, java.lang.String)public void addHeader(java.lang.String name,
java.lang.String value)
addHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the headervalue - the additional header value If it contains
octet string, it should be encoded
according to RFC 2047
(http://www.ietf.org/rfc/rfc2047.txt)setHeader(java.lang.String, java.lang.String)public void setIntHeader(java.lang.String name,
int value)
containsHeader
method can be used to test for the presence of a header before
setting its value.setIntHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the headervalue - the assigned integer valuecontainsHeader(java.lang.String),
addIntHeader(java.lang.String, int)public void addIntHeader(java.lang.String name,
int value)
addIntHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the headervalue - the assigned integer valuesetIntHeader(java.lang.String, int)public void setStatus(int sc)
This method is used to set the return status code when there is no error (for example, for the SC_OK or SC_MOVED_TEMPORARILY status codes).
If this method is used to set an error code, then the container's
error page mechanism will not be triggered. If there is an error and
the caller wishes to invoke an error page defined in the web
application, then sendError(int, java.lang.String) must be used instead.
This method preserves any cookies and other response headers.
Valid status codes are those in the 2XX, 3XX, 4XX, and 5XX ranges. Other status codes are treated as container specific.
setStatus 在接口中 javax.servlet.http.HttpServletResponsesc - the status codesendError(int, java.lang.String)public void setStatus(int sc,
java.lang.String sm)
setStatus(int), to send an error with a description
use sendError(int, String).
Sets the status code and message for this response.
setStatus 在接口中 javax.servlet.http.HttpServletResponsesc - the status codesm - the status messagepublic int getStatus()
getStatus 在接口中 javax.servlet.http.HttpServletResponsepublic java.lang.String getHeader(java.lang.String name)
If a response header with the given name exists and contains multiple values, the value that was added first will be returned.
This method considers only response headers set or added via
setHeader(java.lang.String, java.lang.String), addHeader(java.lang.String, java.lang.String), setDateHeader(java.lang.String, long),
addDateHeader(java.lang.String, long), setIntHeader(java.lang.String, int), or
addIntHeader(java.lang.String, int), respectively.
getHeader 在接口中 javax.servlet.http.HttpServletResponsename - the name of the response header whose value to returnpublic java.util.Collection<java.lang.String> getHeaders(java.lang.String name)
This method considers only response headers set or added via
setHeader(java.lang.String, java.lang.String), addHeader(java.lang.String, java.lang.String), setDateHeader(java.lang.String, long),
addDateHeader(java.lang.String, long), setIntHeader(java.lang.String, int), or
addIntHeader(java.lang.String, int), respectively.
Any changes to the returned Collection must not
affect this HttpServletResponse.
getHeaders 在接口中 javax.servlet.http.HttpServletResponsename - the name of the response header whose values to returnCollection of the values
of the response header with the given namepublic java.util.Collection<java.lang.String> getHeaderNames()
This method considers only response headers set or added via
setHeader(java.lang.String, java.lang.String), addHeader(java.lang.String, java.lang.String), setDateHeader(java.lang.String, long),
addDateHeader(java.lang.String, long), setIntHeader(java.lang.String, int), or
addIntHeader(java.lang.String, int), respectively.
Any changes to the returned Collection must not
affect this HttpServletResponse.
getHeaderNames 在接口中 javax.servlet.http.HttpServletResponseCollection of the names
of the headers of this responsepublic java.lang.String getCharacterEncoding()
ServletContext.setResponseCharacterEncoding(java.lang.String), deployment
descriptor), and per container (for all web applications deployed in
that container, using vendor specific configuration).
The first one of these methods that yields a result is returned.
Per-request, the charset for the response can be specified explicitly
using the setCharacterEncoding and setContentType
methods, or implicitly using the setLocale(java.util.Locale) method.
Explicit specifications take precedence over implicit specifications.
Calls made to these methods after getWriter has been
called or after the response has been committed have no
effect on the character encoding. If no character encoding
has been specified, ISO-8859-1 is returned.
See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt) for more information about character encoding and MIME.
getCharacterEncoding 在接口中 javax.servlet.ServletResponseString specifying the name of
the character encoding, for example, UTF-8public java.lang.String getContentType()
setContentType(java.lang.String)
before the response is committed. If no content type
has been specified, this method returns null.
If a content type has been specified, and a
character encoding has been explicitly or implicitly
specified as described in getCharacterEncoding()
or getWriter() has been called,
the charset parameter is included in the string returned.
If no character encoding has been specified, the
charset parameter is omitted.getContentType 在接口中 javax.servlet.ServletResponseString specifying the content type,
for example, text/html; charset=UTF-8, or nullpublic javax.servlet.ServletOutputStream getOutputStream()
throws java.io.IOException
ServletOutputStream suitable for writing binary
data in the response. The servlet container does not encode the
binary data.
Calling flush() on the ServletOutputStream commits the response.
Either this method or getWriter() may
be called to write the body, not both, except when reset()
has been called.
getOutputStream 在接口中 javax.servlet.ServletResponseServletOutputStream for writing binary datajava.lang.IllegalStateException - if the getWriter method
has been called on this responsejava.io.IOException - if an input or output exception occurredgetWriter(),
reset()public java.io.PrintWriter getWriter()
throws java.io.IOException
PrintWriter object that
can send character text to the client.
The PrintWriter uses the character
encoding returned by getCharacterEncoding().
If the response's character encoding has not been
specified as described in getCharacterEncoding
(i.e., the method just returns the default value
ISO-8859-1), getWriter
updates it to ISO-8859-1.
Calling flush() on the PrintWriter
commits the response.
Either this method or getOutputStream() may be called
to write the body, not both, except when reset()
has been called.
getWriter 在接口中 javax.servlet.ServletResponsePrintWriter object that
can return character data to the clientjava.io.UnsupportedEncodingException - if the character encoding returned
by getCharacterEncoding cannot be usedjava.lang.IllegalStateException - if the getOutputStream
method has already been called for this response objectjava.io.IOException - if an input or output exception occurredgetOutputStream(),
setCharacterEncoding(java.lang.String),
reset()public void setCharacterEncoding(java.lang.String charset)
ServletContext.setResponseCharacterEncoding(java.lang.String),
deployment descriptor, or using the setContentType() or setLocale()
methods, the value set in this method overrides any of those values.
Calling setContentType(java.lang.String) with the String
of text/html and calling
this method with the String of UTF-8
is equivalent with calling
setContentType with the String of
text/html; charset=UTF-8.
This method can be called repeatedly to change the character
encoding.
This method has no effect if it is called after
getWriter has been
called or after the response has been committed.
Containers must communicate the character encoding used for
the servlet response's writer to the client if the protocol
provides a way for doing so. In the case of HTTP, the character
encoding is communicated as part of the Content-Type
header for text media types. Note that the character encoding
cannot be communicated via HTTP headers if the servlet does not
specify a content type; however, it is still used to encode text
written via the servlet response's writer.
setCharacterEncoding 在接口中 javax.servlet.ServletResponsecharset - a String specifying only the character set
defined by IANA Character Sets
(http://www.iana.org/assignments/character-sets)setContentType(java.lang.String),
setLocale(java.util.Locale)public void setContentLength(int len)
setContentLength 在接口中 javax.servlet.ServletResponselen - an integer specifying the length of the
content being returned to the client; sets the Content-Length headerpublic void setContentLengthLong(long len)
setContentLengthLong 在接口中 javax.servlet.ServletResponselen - a long specifying the length of the
content being returned to the client; sets the Content-Length headerpublic void setContentType(java.lang.String type)
text/html;charset=UTF-8.
The response's character encoding is only set from the given
content type if this method is called before getWriter
is called.
This method may be called repeatedly to change content type and
character encoding.
This method has no effect if called after the response
has been committed. It does not set the response's character
encoding if it is called after getWriter
has been called or after the response has been committed.
Containers must communicate the content type and the character
encoding used for the servlet response's writer to the client if
the protocol provides a way for doing so. In the case of HTTP,
the Content-Type header is used.
setContentType 在接口中 javax.servlet.ServletResponsetype - a String specifying the MIME
type of the contentsetLocale(java.util.Locale),
setCharacterEncoding(java.lang.String),
getOutputStream(),
getWriter()public void setBufferSize(int size)
getBufferSize.
A larger buffer allows more content to be written before anything is actually sent, thus providing the servlet with more time to set appropriate status codes and headers. A smaller buffer decreases server memory load and allows the client to start receiving data more quickly.
This method must be called before any response body content is
written; if content has been written or the response object has
been committed, this method throws an
IllegalStateException.
setBufferSize 在接口中 javax.servlet.ServletResponsesize - the preferred buffer sizejava.lang.IllegalStateException - if this method is called after
content has been writtengetBufferSize(),
flushBuffer(),
isCommitted(),
reset()public int getBufferSize()
getBufferSize 在接口中 javax.servlet.ServletResponsesetBufferSize(int),
flushBuffer(),
isCommitted(),
reset()public void flushBuffer()
throws java.io.IOException
flushBuffer 在接口中 javax.servlet.ServletResponsejava.io.IOException - if the act of flushing the buffer cannot be
completed.setBufferSize(int),
getBufferSize(),
isCommitted(),
reset()public void resetBuffer()
IllegalStateException.resetBuffer 在接口中 javax.servlet.ServletResponsesetBufferSize(int),
getBufferSize(),
isCommitted(),
reset()public boolean isCommitted()
isCommitted 在接口中 javax.servlet.ServletResponsesetBufferSize(int),
getBufferSize(),
flushBuffer(),
reset()public void reset()
getWriter() or
getOutputStream() is also cleared. It is legal, for instance,
to call getWriter(), reset() and then
getOutputStream(). If getWriter() or
getOutputStream() have been called before this method,
then the corrresponding returned Writer or OutputStream will be
staled and the behavior of using the stale object is undefined.
If the response has been committed, this method throws an
IllegalStateException.reset 在接口中 javax.servlet.ServletResponsejava.lang.IllegalStateException - if the response has already been
committedsetBufferSize(int),
getBufferSize(),
flushBuffer(),
isCommitted()public void setLocale(java.util.Locale loc)
setContentType(java.lang.String) or
setCharacterEncoding(java.lang.String), getWriter hasn't
been called yet, and the response hasn't been committed yet.
If the deployment descriptor contains a
locale-encoding-mapping-list element, and that
element provides a mapping for the given locale, that mapping
is used. Otherwise, the mapping from locale to character
encoding is container dependent.
This method may be called repeatedly to change locale and
character encoding. The method has no effect if called after the
response has been committed. It does not set the response's
character encoding if it is called after setContentType(java.lang.String)
has been called with a charset specification, after
setCharacterEncoding(java.lang.String) has been called, after
getWriter has been called, or after the response
has been committed.
Containers must communicate the locale and the character encoding
used for the servlet response's writer to the client if the protocol
provides a way for doing so. In the case of HTTP, the locale is
communicated via the Content-Language header,
the character encoding as part of the Content-Type
header for text media types. Note that the character encoding
cannot be communicated via HTTP headers if the servlet does not
specify a content type; however, it is still used to encode text
written via the servlet response's writer.
setLocale 在接口中 javax.servlet.ServletResponseloc - the locale of the responsegetLocale(),
setContentType(java.lang.String),
setCharacterEncoding(java.lang.String)public java.util.Locale getLocale()
setLocale(java.util.Locale) method. Calls made to
setLocale after the response is committed
have no effect. If no locale has been specified,
the container's default locale is returned.getLocale 在接口中 javax.servlet.ServletResponsesetLocale(java.util.Locale)