From b912e3a35fadde675799e2dff23a4a3bfa550cc9 Mon Sep 17 00:00:00 2001 From: Redkale Date: Tue, 6 Sep 2022 22:08:36 +0800 Subject: [PATCH] =?UTF-8?q?HttpServlet=E6=8F=90=E4=BE=9Bfinish404=E3=80=81?= =?UTF-8?q?finish405=E7=9A=84=E5=8F=AF=E5=AE=9A=E5=88=B6=E5=8C=96=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/META-INF/application-template.xml | 4 +- .../redkale/net/http/HttpResourceServlet.java | 10 ++--- .../org/redkale/net/http/HttpServlet.java | 38 ++++++++++++++++--- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/main/java/META-INF/application-template.xml b/src/main/java/META-INF/application-template.xml index 0b12a4f71..28e0e16ae 100644 --- a/src/main/java/META-INF/application-template.xml +++ b/src/main/java/META-INF/application-template.xml @@ -300,8 +300,8 @@ - - + + diff --git a/src/main/java/org/redkale/net/http/HttpResourceServlet.java b/src/main/java/org/redkale/net/http/HttpResourceServlet.java index abb904472..54d7deb65 100644 --- a/src/main/java/org/redkale/net/http/HttpResourceServlet.java +++ b/src/main/java/org/redkale/net/http/HttpResourceServlet.java @@ -194,7 +194,7 @@ public class HttpResourceServlet extends HttpServlet { String uri = request.getRequestURI(); if (uri.contains("../")) { if (logger.isLoggable(Level.FINEST)) logger.log(Level.FINEST, "Not found resource (404) be " + uri + ", request = " + request); - response.finish404(); + finish404(request, response); return; } if (locationRewrites != null) { @@ -217,7 +217,7 @@ public class HttpResourceServlet extends HttpServlet { String suri = uri.toLowerCase(); for (String suffix : renderSuffixs) { if (suri.endsWith(suffix)) { - response.finish404(); + finish404(request, response); return; } } @@ -231,7 +231,7 @@ public class HttpResourceServlet extends HttpServlet { } if (entry == null) { if (logger.isLoggable(Level.FINER)) logger.log(Level.FINER, "Not found resource (404), url = " + request.getRequestURI()); - response.finish404(); + finish404(request, response); } else { //file = null 表示资源内容在内存而不是在File中 //file = null 时必须传 filename @@ -288,7 +288,7 @@ public class HttpResourceServlet extends HttpServlet { int pos; while ((pos = in.read(bytes)) != -1) { out.put(bytes, 0, pos); - } + } this.servlet = servlet; this.file = null; this.filename = filename; @@ -307,7 +307,7 @@ public class HttpResourceServlet extends HttpServlet { if (this.servlet.cachedLength.longValue() + length > this.servlet.cachelimit) return; //超过缓存总容量 try { FileInputStream in = new FileInputStream(file); - ByteArray out = new ByteArray((int) file.length()); + ByteArray out = new ByteArray((int) file.length()); byte[] bytes = new byte[10240]; int pos; while ((pos = in.read(bytes)) != -1) { diff --git a/src/main/java/org/redkale/net/http/HttpServlet.java b/src/main/java/org/redkale/net/http/HttpServlet.java index 31ffd0650..4ef20d4d3 100644 --- a/src/main/java/org/redkale/net/http/HttpServlet.java +++ b/src/main/java/org/redkale/net/http/HttpServlet.java @@ -28,10 +28,10 @@ import org.redkale.util.*; */ public class HttpServlet extends Servlet { - @Deprecated //@since 2.8.0 + @Deprecated //@deprecated 2.8.0 public static final int RET_SERVER_ERROR = 1200_0001; - @Deprecated //@since 2.8.0 + @Deprecated //@deprecated 2.8.0 public static final int RET_METHOD_ERROR = 1200_0002; String _actionSimpleMappingUrl; //只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如 /json /createRecord, 不能是 /user/** @@ -53,7 +53,7 @@ public class HttpServlet extends Servlet ActionEntry entry = request.actionEntry; if (entry.rpconly) { if (!request.rpc) { - response.finish(404, null); + finish404(request, response); return; } else if (request.rpcAuthenticator != null) { if (!request.rpcAuthenticator.auth(request, response)) { @@ -84,7 +84,7 @@ public class HttpServlet extends Servlet ActionEntry entry = request.actionEntry; if (!entry.checkMethod(request.getMethod())) { //response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error")); - response.finish405(); + finish405(request, response); return; } request.moduleid = entry.moduleid; @@ -103,7 +103,7 @@ public class HttpServlet extends Servlet ActionEntry entry = en.getValue(); if (!entry.checkMethod(request.getMethod())) { //response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error")); - response.finish405(); + finish405(request, response); return; } request.actionEntry = entry; @@ -119,7 +119,7 @@ public class HttpServlet extends Servlet return; } } - response.finish404(); + finish404(request, response); //throw new IOException(this.getClass().getName() + " not found method for URI(" + request.getRequestURI() + ")"); } }; @@ -147,6 +147,32 @@ public class HttpServlet extends Servlet public void postStart(HttpContext context, AnyValue config) { } + /** + * 提供404状态码的可定制接口 + * + * @since 2.8.0 + * @param request HttpRequest + * @param response HttpResponse + * + * @throws IOException IOException + */ + protected void finish404(HttpRequest request, HttpResponse response) throws IOException { + response.finish404(); + } + + /** + * 提供405状态码的可定制接口 + * + * @since 2.8.0 + * @param request HttpRequest + * @param response HttpResponse + * + * @throws IOException IOException + */ + protected void finish405(HttpRequest request, HttpResponse response) throws IOException { + response.finish405(); + } + /** *

* 预执行方法,在execute方法之前运行,设置当前用户信息,或者加入常规统计和基础检测,例如 :