From fa8ca1fb3841c44164da5acac556fed31783b91c Mon Sep 17 00:00:00 2001 From: redkale Date: Sat, 19 Oct 2024 09:28:32 +0800 Subject: [PATCH] response --- .../org/redkale/net/http/HttpResponse.java | 46 +++++++++++-------- .../org/redkale/net/http/HttpServlet.java | 2 +- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/redkale/net/http/HttpResponse.java b/src/main/java/org/redkale/net/http/HttpResponse.java index 960a7e96d..e47d784d9 100644 --- a/src/main/java/org/redkale/net/http/HttpResponse.java +++ b/src/main/java/org/redkale/net/http/HttpResponse.java @@ -160,11 +160,14 @@ public class HttpResponse extends Response { // 0表示跳过header,正数表示header的字节长度。 private int headWritedSize = -1; - private BiConsumer cacheHandler; - + // 对RetResult结果输出时进行处理,例如retinfo国际化 private BiFunction retResultHandler; - private BiFunction sendHandler; + // 对输出结果进行加密处理 + private BiFunction encryptHandler; + + // 供HttpMapping.cacheSeconds内部使用 + private BiConsumer cacheHandler; // ------------------------------------------------ private final String plainContentType; @@ -259,7 +262,7 @@ public class HttpResponse extends Response { this.headerArray.clear(); this.cacheHandler = null; this.retResultHandler = null; - this.sendHandler = null; + this.encryptHandler = null; this.respHeadContainsConnection = false; this.jsonWriter.recycle(); return super.recycle(); @@ -1005,9 +1008,9 @@ public class HttpResponse extends Response { if (isClosed()) { return; // 避免重复关闭 } - if (sendHandler != null) { + if (encryptHandler != null) { ByteArray bodyArray = new ByteArray(bodyContent, bodyOffset, bodyLength); - bodyArray = sendHandler.apply(this, bodyArray); + bodyArray = encryptHandler.apply(this, bodyArray); bodyContent = bodyArray.content(); bodyOffset = bodyArray.offset(); bodyLength = bodyArray.length(); @@ -1069,6 +1072,7 @@ public class HttpResponse extends Response { // Header大小 protected void createHeader() { + headerArray.clear(); if (this.status == 200 && !this.respHeadContainsConnection && !this.request.isWebSocket() @@ -1237,7 +1241,7 @@ public class HttpResponse extends Response { } /** - * 异步输出指定内容 + * 异步输出指定内容, 供WebSocketServlet使用 * * @param buffer 输出内容 * @param handler 异步回调函数 @@ -1251,10 +1255,10 @@ public class HttpResponse extends Response { if (buffer == null) { // 只发header super.send(headerArray, handler); } else { - ByteBuffer headbuf = channel.pollWriteBuffer(); - headbuf.put(headerArray.content(), 0, headerArray.length()); - headbuf.flip(); - super.send(new ByteBuffer[] {headbuf, buffer}, null, handler); + ByteBuffer headBuf = channel.pollWriteBuffer(); + headBuf.put(headerArray.content(), 0, headerArray.length()); + headBuf.flip(); + super.send(new ByteBuffer[] {headBuf, buffer}, null, handler); } } else { super.send(buffer, null, handler); @@ -1591,9 +1595,11 @@ public class HttpResponse extends Response { * 设置输出时的拦截器 * * @param cacheHandler 拦截器 + * @return HttpResponse */ - protected void setCacheHandler(BiConsumer cacheHandler) { + protected HttpResponse cacheHandler(BiConsumer cacheHandler) { this.cacheHandler = cacheHandler; + return this; } /** @@ -1609,27 +1615,31 @@ public class HttpResponse extends Response { * 设置输出RetResult时的拦截器 * * @param retResultHandler 拦截器 + * @return HttpResponse */ - public void retResultHandler(BiFunction retResultHandler) { + public HttpResponse retResultHandler(BiFunction retResultHandler) { this.retResultHandler = retResultHandler; + return this; } /** - * 获取输出RetResult时的拦截器 + * 获取输出结果时的拦截器 * * @return 拦截器 */ - protected BiFunction getSendHandler() { - return sendHandler; + protected BiFunction getEncryptHandler() { + return encryptHandler; } /** * 设置输出结果时的拦截器 * * @param sendHandler 拦截器 + * @return HttpResponse */ - public void sendHandler(BiFunction sendHandler) { - this.sendHandler = sendHandler; + public HttpResponse encryptHandler(BiFunction sendHandler) { + this.encryptHandler = sendHandler; + return this; } // protected final class TransferFileHandler implements CompletionHandler { diff --git a/src/main/java/org/redkale/net/http/HttpServlet.java b/src/main/java/org/redkale/net/http/HttpServlet.java index baa68fed9..646dd9c38 100644 --- a/src/main/java/org/redkale/net/http/HttpServlet.java +++ b/src/main/java/org/redkale/net/http/HttpServlet.java @@ -81,7 +81,7 @@ public class HttpServlet extends Servlet response.finish(ce.getBytes()); return; } - response.setCacheHandler(entry.cacheHandler); + response.cacheHandler(entry.cacheHandler); } if (response.inNonBlocking()) { if (entry.nonBlocking) {