public class HttpResponse extends Response<HttpContext,HttpRequest>
详情见: https://redkale.org
限定符和类型 | 类和说明 |
---|---|
static class |
HttpResponse.HttpResponseConfig |
protected class |
HttpResponse.TransferFileHandler |
限定符和类型 | 字段和说明 |
---|---|
protected static byte[] |
connectAliveBytes |
protected static byte[] |
connectCloseBytes |
protected static byte[] |
LINE |
protected static byte[] |
serverNameBytes |
protected static byte[] |
status200Bytes |
bufferPool, channel, context, filter, output, recycleListener, request, responsePool, servlet, writeBodyBuffer, writeHeadBuffer
构造器和说明 |
---|
HttpResponse(HttpContext context,
HttpRequest request,
ObjectPool<Response> responsePool,
HttpResponse.HttpResponseConfig config) |
限定符和类型 | 方法和说明 |
---|---|
HttpResponse |
addCookie(java.util.Collection<java.net.HttpCookie> cookies)
增加Cookie值
|
HttpResponse |
addCookie(java.net.HttpCookie... cookies)
增加Cookie值
|
HttpResponse |
addHeader(java.util.Map<java.lang.String,?> map)
添加Header值
|
HttpResponse |
addHeader(java.lang.String name,
java.lang.Object value)
添加Header值
|
java.nio.channels.CompletionHandler |
createAsyncHandler()
创建CompletionHandler实例
|
<H extends java.nio.channels.CompletionHandler> |
createAsyncHandler(java.lang.Class<H> handlerClass)
创建CompletionHandler子类的实例
传入的CompletionHandler子类必须是public,且保证其子类可被继承且completed、failed可被重载且包含空参数的构造函数。 |
protected java.nio.ByteBuffer |
createHeader() |
static ObjectPool<Response> |
createPool(java.util.concurrent.atomic.AtomicLong creatCounter,
java.util.concurrent.atomic.AtomicLong cycleCounter,
int max,
Creator<Response> creator) |
protected AnyValue.DefaultAnyValue |
duplicateHeader() |
void |
finish(boolean kill,
java.nio.ByteBuffer... buffers)
将指定ByteBuffer数组按响应结果输出
|
void |
finish(boolean kill,
java.nio.ByteBuffer buffer)
将指定ByteBuffer按响应结果输出
|
void |
finish(byte[] bs)
将指定byte[]按响应结果输出
|
void |
finish(java.nio.ByteBuffer... buffers)
将指定ByteBuffer数组按响应结果输出
|
void |
finish(java.nio.ByteBuffer buffer)
将指定ByteBuffer按响应结果输出
|
void |
finish(Convert convert,
java.lang.Object obj)
将结果对象输出
|
void |
finish(Convert convert,
java.lang.reflect.Type type,
java.lang.Object obj)
将结果对象输出
|
void |
finish(java.io.File file)
将指定文件按响应结果输出
|
void |
finish(int status,
java.lang.String message)
以指定响应码附带内容输出
|
void |
finish(java.lang.Object obj)
将结果对象输出
|
void |
finish(java.lang.String obj)
将指定字符串以响应结果输出
|
void |
finish(java.lang.String contentType,
byte[] bs)
将指定byte[]按响应结果输出
|
void |
finish(java.lang.String filename,
java.io.File file)
将文件按指定文件名输出
|
void |
finish304()
以304状态码输出
|
void |
finish404()
以404状态码输出
|
protected void |
finishFile(java.io.File file,
java.nio.ByteBuffer fileBody)
将指定文件句柄或文件内容按响应结果输出,若fileBody不为null则只输出fileBody内容
|
protected void |
finishFile(java.lang.String filename,
java.io.File file,
java.nio.ByteBuffer fileBody)
将指定文件句柄或文件内容按指定文件名输出,若fileBody不为null则只输出fileBody内容
file 与 fileBody 不能同时为空
file 与 filename 也不能同时为空
|
void |
finishJson(java.util.concurrent.CompletableFuture future)
将CompletableFuture的结果对象以JSON格式输出
|
void |
finishJson(JsonConvert convert,
java.util.concurrent.CompletableFuture future)
将CompletableFuture的结果对象以JSON格式输出
|
void |
finishJson(JsonConvert convert,
java.lang.Object obj)
将对象以JSON格式输出
|
void |
finishJson(JsonConvert convert,
RetResult ret)
将RetResult对象以JSON格式输出
|
void |
finishJson(JsonConvert convert,
java.lang.reflect.Type type,
java.util.concurrent.CompletableFuture future)
将CompletableFuture的结果对象以JSON格式输出
|
void |
finishJson(JsonConvert convert,
java.lang.reflect.Type type,
java.lang.Object obj)
将对象以JSON格式输出
|
void |
finishJson(java.lang.Object... objs)
将对象以JSON格式输出
|
void |
finishJson(java.lang.Object obj)
将对象以JSON格式输出
|
void |
finishJson(RetResult ret)
将RetResult对象以JSON格式输出
|
void |
finishJson(java.lang.reflect.Type type,
java.lang.Object obj)
将对象以JSON格式输出
|
void |
finishMapJson(JsonConvert convert,
java.lang.Object... objs)
将对象数组用Map的形式以JSON格式输出
例如: finishMap("a",2,"b",3) 输出结果为 {"a":2,"b":3} |
void |
finishMapJson(java.lang.Object... objs)
将对象数组用Map的形式以JSON格式输出
例如: finishMap("a",2,"b",3) 输出结果为 {"a":2,"b":3} |
protected java.util.function.BiFunction<HttpResponse,java.nio.ByteBuffer[],java.nio.ByteBuffer[]> |
getBufferHandler()
获取输出时的拦截器
|
java.util.function.Supplier<java.nio.ByteBuffer> |
getBufferSupplier()
获取ByteBuffer生成器
|
protected AsyncConnection |
getChannel() |
long |
getContentLength()
获取内容长度
|
java.lang.String |
getContentType()
获取 ContentType
|
protected java.lang.String |
getHttpCode(int status)
获取状态码对应的状态描述
|
protected java.lang.String |
getHttpCode(int status,
java.lang.String defValue) |
protected HttpRequest |
getRequest() |
int |
getStatus()
获取状态码
|
protected void |
init(AsyncConnection channel) |
protected boolean |
isAutoOptions() |
protected void |
offerBuffer(java.nio.ByteBuffer... buffers) |
protected void |
prepare() |
protected boolean |
recycle() |
protected AsyncConnection |
removeChannel() |
<A> void |
sendBody(java.nio.ByteBuffer[] buffers,
A attachment,
java.nio.channels.CompletionHandler<java.lang.Integer,A> handler)
异步输出指定内容
|
<A> void |
sendBody(java.nio.ByteBuffer buffer,
A attachment,
java.nio.channels.CompletionHandler<java.lang.Integer,A> handler)
异步输出指定内容
|
protected void |
setBufferHandler(java.util.function.BiFunction<HttpResponse,java.nio.ByteBuffer[],java.nio.ByteBuffer[]> bufferHandler)
设置输出时的拦截器
|
HttpResponse |
setContentLength(long contentLength)
设置内容长度
|
HttpResponse |
setContentType(java.lang.String contentType)
设置 ContentType
|
HttpResponse |
setHeader(java.lang.String name,
java.lang.Object value)
设置Header值
|
HttpResponse |
setStatus(int status)
设置状态码
|
HttpResponse |
skipHeader()
跳过header的输出
通常应用场景是,调用者的输出内容里已经包含了HTTP的响应头信息,因此需要调用此方法避免重复输出HTTP响应头信息。
|
protected void |
thenEvent(Servlet servlet) |
finish, finish, getBodyBufferSupplier, getContext, getOutput, isClosed, nextEvent, pollWriteBodyBuffer, pollWriteReadBuffer, recycleListener, refuseAlive, send, send, setFilter
protected static final byte[] status200Bytes
protected static final byte[] LINE
protected static final byte[] serverNameBytes
protected static final byte[] connectCloseBytes
protected static final byte[] connectAliveBytes
public HttpResponse(HttpContext context, HttpRequest request, ObjectPool<Response> responsePool, HttpResponse.HttpResponseConfig config)
public static ObjectPool<Response> createPool(java.util.concurrent.atomic.AtomicLong creatCounter, java.util.concurrent.atomic.AtomicLong cycleCounter, int max, Creator<Response> creator)
protected AsyncConnection removeChannel()
removeChannel
在类中 Response<HttpContext,HttpRequest>
protected AsyncConnection getChannel()
protected void prepare()
prepare
在类中 Response<HttpContext,HttpRequest>
protected boolean recycle()
recycle
在类中 Response<HttpContext,HttpRequest>
protected void init(AsyncConnection channel)
init
在类中 Response<HttpContext,HttpRequest>
protected java.lang.String getHttpCode(int status)
status
- 状态码protected HttpRequest getRequest()
protected java.lang.String getHttpCode(int status, java.lang.String defValue)
protected void thenEvent(Servlet servlet)
thenEvent
在类中 Response<HttpContext,HttpRequest>
protected boolean isAutoOptions()
protected void offerBuffer(java.nio.ByteBuffer... buffers)
offerBuffer
在类中 Response<HttpContext,HttpRequest>
public HttpResponse addCookie(java.net.HttpCookie... cookies)
cookies
- cookiepublic HttpResponse addCookie(java.util.Collection<java.net.HttpCookie> cookies)
cookies
- cookiepublic java.nio.channels.CompletionHandler createAsyncHandler()
public <H extends java.nio.channels.CompletionHandler> H createAsyncHandler(java.lang.Class<H> handlerClass)
H
- 泛型handlerClass
- CompletionHandler子类public java.util.function.Supplier<java.nio.ByteBuffer> getBufferSupplier()
public void finishJson(java.lang.Object obj)
obj
- 输出对象public void finishMapJson(java.lang.Object... objs)
objs
- 输出对象public void finishJson(JsonConvert convert, java.lang.Object obj)
convert
- 指定的JsonConvertobj
- 输出对象public void finishMapJson(JsonConvert convert, java.lang.Object... objs)
convert
- 指定的JsonConvertobjs
- 输出对象public void finishJson(java.lang.reflect.Type type, java.lang.Object obj)
type
- 指定的类型obj
- 输出对象public void finishJson(JsonConvert convert, java.lang.reflect.Type type, java.lang.Object obj)
convert
- 指定的JsonConverttype
- 指定的类型obj
- 输出对象public void finishJson(java.lang.Object... objs)
objs
- 输出对象public void finishJson(RetResult ret)
ret
- RetResult输出对象public void finishJson(JsonConvert convert, RetResult ret)
convert
- 指定的JsonConvertret
- RetResult输出对象public void finishJson(java.util.concurrent.CompletableFuture future)
future
- 输出对象的句柄public void finishJson(JsonConvert convert, java.util.concurrent.CompletableFuture future)
convert
- 指定的JsonConvertfuture
- 输出对象的句柄public void finishJson(JsonConvert convert, java.lang.reflect.Type type, java.util.concurrent.CompletableFuture future)
convert
- 指定的JsonConverttype
- 指定的类型future
- 输出对象的句柄public void finish(java.lang.Object obj)
obj
- 输出对象public void finish(Convert convert, java.lang.Object obj)
convert
- 指定的Convertobj
- 输出对象public void finish(Convert convert, java.lang.reflect.Type type, java.lang.Object obj)
convert
- 指定的Converttype
- 指定的类型obj
- 输出对象public void finish(java.lang.String obj)
obj
- 输出内容public void finish(int status, java.lang.String message)
status
- 响应码message
- 输出内容public void finish304()
public void finish404()
public void finish(byte[] bs)
finish
在类中 Response<HttpContext,HttpRequest>
bs
- 输出内容public void finish(java.lang.String contentType, byte[] bs)
contentType
- ContentTypebs
- 输出内容public void finish(java.nio.ByteBuffer buffer)
finish
在类中 Response<HttpContext,HttpRequest>
buffer
- 输出内容public void finish(boolean kill, java.nio.ByteBuffer buffer)
finish
在类中 Response<HttpContext,HttpRequest>
kill
- 输出后是否强制关闭连接buffer
- 输出内容public void finish(java.nio.ByteBuffer... buffers)
finish
在类中 Response<HttpContext,HttpRequest>
buffers
- 输出内容public void finish(boolean kill, java.nio.ByteBuffer... buffers)
finish
在类中 Response<HttpContext,HttpRequest>
kill
- 输出后是否强制关闭连接buffers
- 输出内容public <A> void sendBody(java.nio.ByteBuffer buffer, A attachment, java.nio.channels.CompletionHandler<java.lang.Integer,A> handler)
A
- 泛型buffer
- 输出内容attachment
- 异步回调参数handler
- 异步回调函数public <A> void sendBody(java.nio.ByteBuffer[] buffers, A attachment, java.nio.channels.CompletionHandler<java.lang.Integer,A> handler)
A
- 泛型buffers
- 输出内容attachment
- 异步回调参数handler
- 异步回调函数public void finish(java.io.File file) throws java.io.IOException
file
- 输出文件java.io.IOException
- IO异常public void finish(java.lang.String filename, java.io.File file) throws java.io.IOException
filename
- 输出文件名file
- 输出文件java.io.IOException
- IO异常protected void finishFile(java.io.File file, java.nio.ByteBuffer fileBody) throws java.io.IOException
file
- 输出文件fileBody
- 文件内容, 没有则输出filejava.io.IOException
- IO异常protected void finishFile(java.lang.String filename, java.io.File file, java.nio.ByteBuffer fileBody) throws java.io.IOException
filename
- 输出文件名file
- 输出文件fileBody
- 文件内容, 没有则输出filejava.io.IOException
- IO异常protected java.nio.ByteBuffer createHeader()
public HttpResponse skipHeader()
protected AnyValue.DefaultAnyValue duplicateHeader()
public HttpResponse setHeader(java.lang.String name, java.lang.Object value)
name
- header名value
- header值public HttpResponse addHeader(java.lang.String name, java.lang.Object value)
name
- header名value
- header值public HttpResponse addHeader(java.util.Map<java.lang.String,?> map)
map
- header值public HttpResponse setStatus(int status)
status
- 状态码public int getStatus()
public java.lang.String getContentType()
public HttpResponse setContentType(java.lang.String contentType)
contentType
- ContentTypepublic long getContentLength()
public HttpResponse setContentLength(long contentLength)
contentLength
- 内容长度protected java.util.function.BiFunction<HttpResponse,java.nio.ByteBuffer[],java.nio.ByteBuffer[]> getBufferHandler()
protected void setBufferHandler(java.util.function.BiFunction<HttpResponse,java.nio.ByteBuffer[],java.nio.ByteBuffer[]> bufferHandler)
bufferHandler
- 拦截器